Manifest apt pro Azure Device Update pro IoT Hub
Tento článek popisuje manifest apt, soubor JSON popisující podrobnosti aktualizace vyžadované obslužnou rutinou aktualizace apt. Tento soubor můžete importovat do služby Device Update stejně jako jakoukoli jinou aktualizaci. Další informace najdete v tématu Import aktualizace do služby Device Update.
Když doručíte manifest apt agentu device Update jako aktualizaci, 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 typ aktualizace apt a obslužnou rutinu aktualizace. Tato podpora umožňuje agentu Device Update vyhodnotit nainstalované balíčky Debian a aktualizovat potřebné balíčky.
Pomocí manifestu apt můžete aktualizovat samotného agenta Device Update a jeho závislosti. Uveďte název agenta aktualizace zařízení a požadovanou verzi v manifestu apt stejně jako jakýkoli jiný balíček. Pak můžete importovat tento manifest apt a nasadit ho prostřednictvím kanálu aktualizace zařízení.
Schéma
Soubor manifestu apt je soubor JSON se schématem s verzí.
{
"name": "<name>",
"version": "<version>",
"packages": [
{
"name": "<package name>",
"version": "<version specifier>"
}
]
}
Pří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 pro tento manifest apt, který může být libovolný smysluplný název nebo ID, které odpovídá vašemu scénáři. 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 verze požadovaného balíčku, například
1.0.8-2
.
-
Název: Název nebo ID balíčku, například
Vytváření verzí
Manifest apt podporuje pouze přesná čísla verzí. Číslo verze je požadovaná verze balíčku Debian ve formátu <epoch>:<upstream_version>-<debian_revision>
, kde epoch
je nepodepsaný int a upstream_version
začíná číslicí a může obsahovat alfanumerické znaky a znaky, jako .
je , ,
, +
, -
a ~
. Hodnota verze by neměla obsahovat znaménko rovná se.
Například "name":"iotedge"
a "version":"1.0.8-2"
je ekvivalentní k instalaci balíčku pomocí příkazu apt-get install iotedge=1.0.8-2
. Verze 1.0.8
se rovná 1.0.8-0
.
Pokud je verze vynechána, služba Device Update nainstaluje nejnovější dostupnou verzi zadaného balíčku. Další informace o tom, jak jsou balíčky Debianu verzí, naleznete v příručce k zásadám Debianu.
Poznámka:
Správce balíčků apt ignoruje požadavky na správu verzí poskytované balíčkem při automatickém překladu závislých balíčků k instalaci. Pokud nemají explicitní verze závislých balíčků nejnovější verzi, i když samotný balíček může u dané verze zadat striktní požadavek (=). Toto automatické řešení může vést k chybám týkajícím se nemetové závislosti.
Proto při instalaci konkrétní verze balíčku je nejlepší zahrnout také explicitní verze závislých balíčků, které se mají nainstalovat. Další informace najdete v tématu apt-get not správně přeložit závislost na pevné verzi v balíčku Debian/Ubuntu.
Pokud aktualizujete konkrétní verzi démon zabezpečení Azure IoT Edge, měli byste do manifestu apt zahrnout požadovanou verzi aziot-edge
balíčku a její závislý aziot-identity-service
balíček. Další informace najdete v tématu Jak aktualizovat IoT Edge.
Nainstalovaná kritéria
Doporučená hodnota nainstalovaných kritérií pro manifest apt je <name>-<version>
, kde <name>
je název manifestu apt a <version>
jeho verze. Například contoso-iot-edge-1.0.0.0
.
Odebrání balíčku
K odebrání nainstalovaných balíčků ze zařízení můžete použít také manifest apt. Jeden manifest apt můžete 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. Nezahrnujte číslo verze pro balíčky, které odebíráte. Odebrání balíčku prostřednictvím manifestu apt neodebere jeho závislosti a konfigurace.
Následující manifest apt například odebere balíček contoso1
ze všech zařízení, do které je nasazený.
{
"name": "contoso-video",
"version": "2.0.0.1",
"packages": [
{
"name" : "contoso1-"
}
]
}
Pokyny k vytváření manifestu Apt
Při vytváření manifestu apt mějte na paměti následující pokyny:
Ujistěte se, že manifest apt je soubor JSON ve správném formátu.
Dejte každému apt manifestu jedinečnou verzi. Zkuste přijít se standardizovanou metodologií pro zvýšení verze apt manifestu, takže dává smysl pro vaše scénáře a je snadné postupovat.
Pro požadovaný stav každého jednotlivého balíčku zadejte přesný název a verzi balíčku, který chcete nainstalovat na zařízení. Vždy ověřte hodnoty v obsahu zdrojového úložiště balíčků.
Vypište balíčky v manifestu apt v pořadí, v jakém by měly být nainstalovány nebo odebrány.
Vždy ověřte instalaci balíčků na testovacím zařízení, abyste zajistili požadovaný výsledek.
Při instalaci konkrétní verze balíčku, například
iotedge 1.0.9-1
, zahrnout explicitní verze závislých balíčků, napříkladlibiothsm 1.0.9-1
.I když to není nutné, vždy, aby byl manifest apt kumulativní, zabraňuje tomu, aby zařízení byla v neznámém stavu. Kumulativní aktualizace zajišťuje, aby vaše zařízení měla požadovanou verzi každého relevantního balíčku, i když zařízení vynechalo aktualizaci z důvodu selhání instalace nebo offline.
Představte si například následující základní manifest apt:
{ "name": "contoso-iot-edge", "version": "1.0", "packages": [ { "name": "contoso1", "version": "1.0.1" } ] }
Následující aktualizace verze 2.0 obsahuje
contoso2
balíček, ale necontoso1
balíček. Všechna zařízení, která obdrží aktualizaci 2.0, nemusí mítcontoso1
balíček.{ "name": "contoso-iot-edge", "version": "2.0", "packages": [ { "name": "contoso2", "version": "3.0.2" } ] }
Kumulativní aktualizace verze 2.0 obsahuje balíčky i
contoso1
contoso2
balíčky:{ "name": "contoso-iot-edge", "version": "2.0", "packages": [ { "name": "contoso1", "version": "1.0.1" }, { "name": "contoso2", "version": "3.0.2" } ] }