Manifest apt usługi Device Update
Manifest apt to plik JSON opisujący szczegóły aktualizacji wymagane przez program obsługi aktualizacji apt. Ten plik można zaimportować do usługi Device Update dla IoT Hub tak samo jak w przypadku każdej innej aktualizacji.
Aby uzyskać więcej informacji, zobacz Importowanie aktualizacji do usługi Device Update dla IoT Hub.
Omówienie
Gdy manifest apt jest dostarczany do agenta usługi Device Update jako aktualizacja, agent przetwarza manifest i wykonuje niezbędne operacje. Te operacje obejmują pobieranie i instalowanie pakietów określonych w pliku manifestu apt oraz ich zależności z wyznaczonego repozytorium.
Usługa Device Update obsługuje procedurę obsługi apt updateType i apt update. Ta obsługa umożliwia agentowi usługi Device Update ocenę zainstalowanych pakietów Debian i zaktualizowanie niezbędnych pakietów.
Schemat
Plik manifestu apt jest plikiem JSON ze schematem w wersji.
{
"name": "<name>",
"version": "<version>",
"packages": [
{
"name": "<package name>",
"version": "<version specifier>"
}
]
}
Przykład:
{
"name": "contoso-iot-edge",
"version": "1.0.0.0",
"packages": [
{
"name" : "thermocontrol",
"version" : "1.0.1"
},
{
"name" : "tempreport",
"version" : "2.0.0"
}
]
}
Każdy manifest apt zawiera następujące właściwości:
-
Nazwa: nazwa tego manifestu apt. Może to być dowolna nazwa lub identyfikator, który ma znaczenie dla Twoich scenariuszy. Na przykład
contoso-iot-edge
. -
Wersja: numer wersji dla tego manifestu apt. Na przykład
1.0.0.0
. -
Pakiety: lista obiektów zawierających właściwości specyficzne dla pakietu.
-
Nazwa: nazwa lub identyfikator pakietu. Na przykład
iotedge
. -
Wersja: żądane kryteria wersji pakietu. Na przykład
1.0.8-2
. Wartość wersji nie powinna zawierać znaku równości. Jeśli wersja zostanie pominięta, zostanie zainstalowana najnowsza dostępna wersja określonego pakietu.
-
Nazwa: nazwa lub identyfikator pakietu. Na przykład
Obecnie obsługiwany jest tylko dokładny numer wersji. Numer wersji jest żądaną wersją pakietu Debian w formacie [epoch:]upstream_version[-debian_revision], gdzie epoka jest niepodpisaną int i upstream_version może zawierać alfanumeryczne i znaki, takie jak ".","+","-" i "~". Powinna zaczynać się od cyfry.
Uwaga
Wartość "1.0.8" jest równa "1.0.8-0"
Na przykład "name":"iotedge"
element i "version":"1.0.8-2"
jest odpowiednikiem instalowania pakietu przy użyciu polecenia apt-get install iotedge=1.0.8-2
Aby uzyskać więcej informacji o tym, jak pakiety Debian są wersjonowane, zobacz podręcznik zasad Debian
Uwaga
Menedżer pakietów apt ignoruje wymagania dotyczące przechowywania wersji podane przez pakiet, gdy pakiety zależne do zainstalowania są automatycznie rozwiązywane. O ile nie zostaną podane jawne wersje pakietów zależnych, będą używać najnowszej wersji, mimo że sam pakiet może określać ścisłe wymaganie (=) dla danej wersji. To automatyczne rozwiązanie może prowadzić do błędów dotyczących niezaspokojonych zależności. Więcej informacji
Jeśli aktualizujesz określoną wersję demona zabezpieczeń usługi Azure IoT Edge, należy uwzględnić żądaną wersję aziot-edge
pakietu i jego zależny aziot-identity-service
pakiet w manifeście apt.
Aby uzyskać więcej informacji, zobacz Jak zaktualizować IoT Edge.
Manifest apt może służyć do aktualizowania agenta usługi Device Update i jego zależności. Wyświetl nazwę agenta aktualizacji urządzenia i żądaną wersję w manifeście apt, tak jak w przypadku dowolnego innego pakietu. Ten manifest apt można następnie zaimportować i wdrożyć za pośrednictwem usługi Device Update dla potoku IoT Hub.
Usuwanie pakietów
Możesz również użyć manifestu apt, aby usunąć zainstalowane pakiety z urządzenia. Pojedynczy manifest apt może służyć do usuwania, dodawania i aktualizowania wielu pakietów.
Aby usunąć pakiet, dodaj znak minus "-" po nazwie pakietu. Nie należy uwzględniać numeru wersji dla usuwanych pakietów. Usunięcie pakietu za pomocą manifestu apt nie powoduje usunięcia jego zależności i konfiguracji.
Przykład:
{
"name": "contoso-video",
"version": "2.0.0.1",
"packages": [
{
"name" : "foo-"
}
]
}
Ten manifest apt usunie pakiet "foo" z urządzeń, w których jest wdrażany.
Zalecana wartość dla zainstalowanych kryteriów
Zainstalowane kryteria manifestu apt to <name>-<version>
miejsce, w którym <name>
jest nazwą manifestu apt i <version>
jest wersją manifestu apt. Na przykład contoso-iot-edge-1.0.0.0
.
Wskazówki dotyczące tworzenia manifestu apt
Podczas tworzenia manifestu apt istnieją pewne wytyczne, które należy wziąć pod uwagę:
- Zawsze upewnij się, że manifest apt jest poprawnie sformułowanym plikiem json.
- Każdy manifest apt powinien mieć unikatową wersję. Spróbuj wymyślić ustandaryzowaną metodologię, aby zwiększać wersję manifestu apt, dzięki czemu ma sens w scenariuszach i można ją łatwo obserwować.
- Jeśli chodzi o żądany stan każdego pojedynczego pakietu, określ dokładną nazwę i wersję pakietu, który chcesz zainstalować na urządzeniu. Zawsze sprawdzaj poprawność wartości względem repozytorium pakietów, które ma być używane jako źródło pakietu.
- Upewnij się, że pakiety w manifeście apt są wymienione w kolejności, w której powinny być zainstalowane/usunięte.
- Zawsze sprawdzaj poprawność instalacji pakietów na urządzeniu testowym, aby upewnić się, że wynik jest pożądany.
- Podczas instalowania określonej wersji pakietu (na przykład
iotedge 1.0.9-1
) najlepszym rozwiązaniem jest również zainstalowanie jawnych wersji pakietów zależnych (na przykładlibiothsm 1.0.9-1
) w manifeście apt. - Mimo że nie jest to wymagane, zawsze upewnij się, że manifest apt jest skumulowany, aby uniknąć przechodzenia urządzenia do nieznanego stanu. Aktualizacja zbiorcza gwarantuje, że urządzenia mają żądaną wersję każdego pakietu, którego dotyczy problem, nawet jeśli urządzenie pominąło wdrożenie aktualizacji apt z powodu awarii instalacji lub zostało przełączone w tryb offline
Przykład:
Podstawowy manifest apt
{
"name": "contoso-iot-edge",
"version": "1.0",
"packages": [
{
"name": "foo",
"version": "1.0.1"
}
]
}
Nieprawidłowa aktualizacja
Ta aktualizacja zawiera pakiet słupkowy, ale nie pakiet foo.
{
"name": "contoso-iot-edge",
"version": "2.0",
"packages": [
{
"name": "bar",
"version": "3.0.2"
}
]
}
Dobra aktualizacja
Ta aktualizacja obejmuje pakiet foo, a także pakiet słupkowy.
{
"name": "contoso-iot-edge",
"version": "2.0",
"packages": [
{
"name": "foo",
"version": "1.0.1"
},
{
"name": "bar",
"version": "3.0.2"
}
]
}