Aktualizacja urządzenia platformy Azure dla manifestu apt usługi IoT Hub
W tym artykule opisano manifest apt, plik JSON opisujący szczegóły aktualizacji wymagane przez procedurę obsługi aktualizacji apt. Ten plik można zaimportować do usługi Device Update tak samo jak w przypadku każdej innej aktualizacji. Aby uzyskać więcej informacji, zobacz Importowanie aktualizacji do aktualizacji urządzenia.
W przypadku dostarczania manifestu apt do agenta aktualizacji urządzenia jako aktualizacji 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 typ aktualizacji apt i program obsługi aktualizacji. Ta obsługa umożliwia agentowi aktualizacji urządzeń ocenę zainstalowanych pakietów Debian i zaktualizowanie niezbędnych pakietów.
Możesz użyć manifestu apt, aby zaktualizować samego 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. Następnie możesz zaimportować ten manifest apt i wdrożyć go za pośrednictwem potoku aktualizacji urządzenia.
Schemat
Plik manifestu apt jest plikiem JSON ze schematem w wersji.
{
"name": "<name>",
"version": "<version>",
"packages": [
{
"name": "<package name>",
"version": "<version specifier>"
}
]
}
Na 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, która może być dowolną zrozumiałą nazwą lub identyfikatorem pasującą do danego scenariusza. 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 pakietu lub identyfikator, na przykład
iotedge
. -
Wersja: żądane kryteria wersji pakietu, na przykład
1.0.8-2
.
-
Nazwa: nazwa pakietu lub identyfikator, na przykład
Wersje
Manifest apt obsługuje tylko dokładne numery wersji. Numer wersji jest wymaganą wersją pakietu Debian w formacie <epoch>:<upstream_version>-<debian_revision>
, gdzie epoch
jest niepodpisany int i upstream_version
rozpoczyna się od cyfry i może zawierać alfanumeryczne i znaki, takie jak .
, ,
, +
, -
i ~
. Wartość wersji nie powinna zawierać znaku równości.
Na przykład "name":"iotedge"
i "version":"1.0.8-2"
jest odpowiednikiem instalowania pakietu przy użyciu polecenia apt-get install iotedge=1.0.8-2
. Wersja 1.0.8
jest równa 1.0.8-0
.
Jeśli wersja zostanie pominięta, usługa Device Update zainstaluje najnowszą dostępną wersję określonego pakietu. Aby uzyskać więcej informacji na temat sposobu przechowywania wersji pakietów Debian, zobacz podręcznik zasad Debiana.
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 podano jawnych wersji pakietów zależnych, używają 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.
W związku z tym podczas instalowania określonej wersji pakietu najlepiej również uwzględnić jawne wersje pakietów zależnych do zainstalowania. Aby uzyskać więcej informacji, zobacz apt-get nie poprawnie rozpoznawać zależności od stałej wersji w pakiecie Debian/Ubuntu.
W przypadku zaktualizowania określonej wersji demona zabezpieczeń usługi Azure IoT Edge należy uwzględnić żądaną wersję aziot-edge
pakietu i jego pakiet zależny aziot-identity-service
w manifeście apt. Aby uzyskać więcej informacji, zobacz Jak zaktualizować usługę IoT Edge.
Zainstalowane kryteria
Zalecana wartość zainstalowanych kryteriów dla manifestu apt to <name>-<version>
, gdzie <name>
jest nazwą manifestu apt i <version>
jest jego wersją. Na przykład contoso-iot-edge-1.0.0.0
.
Usuwanie pakietu
Możesz również użyć manifestu apt, aby usunąć zainstalowane pakiety z urządzeń. Można użyć jednego manifestu apt, aby usunąć, dodać i zaktualizować wiele pakietów.
Aby usunąć pakiet, dodaj znak -
minus po nazwie pakietu. Nie dołączaj numeru wersji dla usuwanych pakietów. Usunięcie pakietu za pośrednictwem manifestu apt nie powoduje usunięcia jego zależności i konfiguracji.
Na przykład następujący manifest apt usuwa pakiet contoso1
ze wszystkich urządzeń, do których został wdrożony.
{
"name": "contoso-video",
"version": "2.0.0.1",
"packages": [
{
"name" : "contoso1-"
}
]
}
Wskazówki dotyczące tworzenia manifestu apt
Podczas tworzenia manifestu apt należy pamiętać o następujących wskazówkach:
Upewnij się, że manifest apt jest poprawnie sformułowanym plikiem JSON.
Nadaj każdemu manifestowi apt unikatową wersję. Spróbuj wymyślić ustandaryzowaną metodologię, aby zwiększać wersję manifestu apt, więc ma sens dla Twoich scenariuszy i jest łatwy do naśladowania.
W przypadku żądanego stanu poszczególnych pakietów określ dokładną nazwę i wersję pakietu, który chcesz zainstalować na urządzeniu. Zawsze sprawdzaj poprawność wartości względem zawartości repozytorium pakietu źródłowego.
Wyświetl listę pakietów w manifeście apt w kolejności, w której powinny być zainstalowane lub usunięte.
Zawsze zweryfikuj instalację pakietów na urządzeniu testowym, aby zapewnić pożądany wynik.
Podczas instalowania konkretnej wersji pakietu, na przykład
iotedge 1.0.9-1
, uwzględnij również jawne wersje pakietów zależnych do zainstalowania, na przykładlibiothsm 1.0.9-1
.Mimo że nie jest to wymagane, zawsze tworzenie skumulowanego manifestu apt pozwala uniknąć przechodzenia urządzeń do nieznanego stanu. Aktualizacja zbiorcza gwarantuje, że urządzenia mają żądaną wersję każdego odpowiedniego pakietu, nawet jeśli urządzenie pominąło aktualizację z powodu awarii instalacji lub jest w trybie offline.
Rozważmy na przykład następujący podstawowy manifest apt:
{ "name": "contoso-iot-edge", "version": "1.0", "packages": [ { "name": "contoso1", "version": "1.0.1" } ] }
Następująca aktualizacja w wersji 2.0 zawiera
contoso2
pakiet, ale niecontoso1
pakiet. Wszystkie urządzenia odbierające aktualizację 2.0 mogą nie miećcontoso1
pakietu.{ "name": "contoso-iot-edge", "version": "2.0", "packages": [ { "name": "contoso2", "version": "3.0.2" } ] }
Następująca aktualizacja zbiorcza w wersji 2.0 obejmuje zarówno pakiety , jak
contoso1
icontoso2
:{ "name": "contoso-iot-edge", "version": "2.0", "packages": [ { "name": "contoso1", "version": "1.0.1" }, { "name": "contoso2", "version": "3.0.2" } ] }