Sdílet prostřednictvím


Manifest apt pro aktualizaci zařízení

Manifest apt je soubor JSON, který popisuje podrobnosti o aktualizaci vyžadované obslužnou rutinou aktualizace apt. Tento soubor je možné importovat do služby Device Update pro IoT Hub stejně jako jakoukoli jinou aktualizaci.

Další informace najdete v tématu Import aktualizace do služby Device Update pro IoT Hub.

Přehled

Když se do agenta aktualizace zařízení doručí apt manifest jako aktualizace, agent zpracuje manifest a provede potřebné operace. Mezi tyto operace patří stažení a instalace balíčků zadaných v souboru manifestu apt a jejich závislosti z určeného úložiště.

Aktualizace zařízení podporuje apt updateType a apt update obslužnou rutinu. Tato podpora umožňuje agentu Device Update vyhodnotit nainstalované balíčky Debian a aktualizovat potřebné balíčky.

Schéma

Soubor manifestu apt je soubor JSON se schématem verzí.

{
    "name": "<name>",
    "version": "<version>",
    "packages": [
        {
            "name": "<package name>",
            "version": "<version specifier>"
        }
    ]
}

Například:

{
    "name": "contoso-iot-edge",
    "version": "1.0.0.0",
    "packages": [
        {
            "name" : "thermocontrol",
            "version" : "1.0.1"
        },
        {
            "name" : "tempreport",
            "version" : "2.0.0"
        }
    ]
}

Každý manifest apt obsahuje následující vlastnosti:

  • Název: Název tohoto manifestu apt. Může to být jakýkoli název nebo ID smysluplné pro vaše scénáře. Například: contoso-iot-edge.
  • Verze: Číslo verze pro tento manifest apt. Například: 1.0.0.0.
  • Balíčky: Seznam objektů obsahujících vlastnosti specifické pro balíček.
    • Název: Název nebo ID balíčku. Například: iotedge.
    • Verze: Kritéria požadované verze balíčku. Například: 1.0.8-2. Hodnota verze by neměla obsahovat znaménko rovná se. Pokud je verze vynechána, nainstaluje se nejnovější dostupná verze zadaného balíčku.

Aktuálně je podporováno pouze přesné číslo verze. Číslo verze je požadovaná verze balíčku Debian ve formátu [epoch:]upstream_version[-debian_revision], kde epocha je nepodepsaný int a upstream_version může obsahovat alfanumerické znaky a znaky, jako jsou ".","+","-" a "~". Měl by začínat číslicí.

Poznámka:

Hodnota 1.0.8 se rovná hodnotě 1.0.8-0.

Například "name":"iotedge" a "version":"1.0.8-2" je ekvivalentem instalace balíčku pomocí příkazu. apt-get install iotedge=1.0.8-2

Další informace o verzování balíčků Debianu naleznete v příručce k zásadám Debianu.

Poznámka:

Správce balíčků apt ignoruje verzovací požadavky dané balíčkem, když se automaticky vyhodnocují závislé balíčky k instalaci. Pokud nejsou zadány explicitní verze závislých balíčků, budou používat nejnovější, i když samotný balíček může určit striktní požadavek (=) pro danou verzi. Toto automatické řešení problému může vést k chybám týkajícím se nesplněné závislosti. Další informace

Pokud aktualizujete konkrétní verzi bezpečnostního démona Azure IoT Edge, měli byste do manifestu apt zahrnout požadovanou verzi balíčku aziot-edge a balíček závislosti aziot-identity-service. Další informace najdete v tématu Jak aktualizovat IoT Edge.

Manifest apt se dá použít k aktualizaci agenta Device Update a jeho závislostí. Uveďte název agenta aktualizace zařízení a požadovanou verzi v manifestu apt, jako byste chtěli pro jakýkoli jiný balíček. Tento manifest apt je pak možné importovat a nasadit prostřednictvím kanálu aktualizace zařízení pro IoT Hub.

Odstraňování balíčků

K odebrání nainstalovaných balíčků ze zařízení můžete použít také manifest apt. Jeden manifest apt lze použít k odebrání, přidání a aktualizaci více balíčků.

Pokud chcete balíček odebrat, přidejte za název balíčku znaménko minus -. Neměli byste uvádět číslo verze u balíčků, které odebíráte. Odebrání balíčku prostřednictvím manifestu apt neodebere jeho závislosti a konfigurace.

Například:

{
    "name": "contoso-video",
    "version": "2.0.0.1",
    "packages": [
        {
            "name" : "foo-"
        }
    ]
}

Tento manifest apt odebere balíček "foo" ze zařízení, do které je nasazený.

Instalovaná kritéria pro manifest apt je <name>-<version>, kde <name> je název apt manifestu a <version> je verze apt manifestu. Například: contoso-iot-edge-1.0.0.0.

Pokyny k vytvoření vhodného manifestu apt

Při vytváření manifestu apt je potřeba mít na paměti několik pokynů:

  • Vždy se ujistěte, že manifest apt je soubor JSON ve správném formátu.
  • Každý manifest apt by měl mít jedinečnou verzi. Zkuste přijít se standardizovanou metodologií pro zvýšení verze apt manifestu, aby to dávalo smysl pro vaše scénáře a bylo možné ho snadno sledovat.
  • Pokud jde o požadovaný stav každého jednotlivého balíčku, zadejte přesný název a verzi balíčku, který chcete nainstalovat do zařízení. Vždy ověřte hodnoty v úložišti balíčků, které chcete použít jako zdroj balíčku.
  • Ujistěte se, že jsou balíčky v manifestu apt uvedené v pořadí, v jakém se mají nainstalovat nebo odebrat.
  • Vždy ověřte instalaci balíčků na testovacím zařízení, abyste měli jistotu, že je požadovaný výsledek.
  • Při instalaci konkrétní verze balíčku (například iotedge 1.0.9-1) je vhodné mít v manifestu apt také explicitní verze závislých balíčků, libiothsm 1.0.9-1které se mají nainstalovat (například).
  • I když to není předepsáno, vždy se ujistěte, že váš manifest apt je kumulativní, aby se vaše zařízení nedostalo do neznámého stavu. Kumulativní aktualizace zajistí, aby vaše zařízení měla požadovanou verzi každého balíčku, o který vás zajímá, i když zařízení vynechalo nasazení apt aktualizace kvůli selhání při instalaci nebo že se přepnulo do offline režimu.

Například:

Základní manifest apt

{
    "name": "contoso-iot-edge",
    "version": "1.0",
    "packages": [
        {
            "name": "foo",
            "version": "1.0.1"
        }
    ]
}

Chybná aktualizace

Tato aktualizace zahrnuje balíček bar, ale ne balíček foo.

{
    "name": "contoso-iot-edge",
    "version": "2.0",
    "packages": [
        {
            "name": "bar",
            "version": "3.0.2"
        }
    ]
}

Dobrá aktualizace

Tato aktualizace zahrnuje balíček foo a také zahrnuje balíček bar.

{
    "name": "contoso-iot-edge",
    "version": "2.0",
    "packages": [
        {
            "name": "foo",
            "version": "1.0.1"
        },
        {
            "name": "bar",
            "version": "3.0.2"
        }
    ]
}

Další kroky

Import aktualizace do služby Device Update