Partilhar via


Azure Device Update for IoT Hub apt manifest

Este artigo descreve o manifesto apt, um arquivo JSON que descreve os detalhes de atualização exigidos pelo manipulador de atualização apt. Pode importar este ficheiro para a Atualização de Dispositivo como qualquer outra atualização. Para obter mais informações, consulte Importar uma atualização para a Atualização de dispositivo.

Quando você entrega um manifesto apt a um agente de Atualização de Dispositivo como uma atualização, o agente processa o manifesto e executa as operações necessárias. Essas operações incluem baixar e instalar os pacotes especificados no arquivo de manifesto apt e suas dependências a partir de um repositório designado.

A Atualização de Dispositivo suporta o tipo de atualização apt e o manipulador de atualização. Este suporte permite que o agente de Atualização de Dispositivo avalie os pacotes Debian instalados e atualize os pacotes necessários.

Você pode usar um manifesto apt para atualizar o próprio agente de Atualização de Dispositivo e suas dependências. Liste o nome do agente de atualização de dispositivo e a versão desejada no manifesto apt como faria com qualquer outro pacote. Em seguida, você pode importar esse manifesto apt e implantá-lo através do pipeline de Atualização de Dispositivo.

Esquema

Um arquivo de manifesto apt é um arquivo JSON com um esquema versionado.

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

Por exemplo:

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

Cada manifesto apt inclui as seguintes propriedades:

  • Nome: Um nome para este manifesto apt, que pode ser qualquer nome ou ID significativo que se adapte ao seu cenário. Por exemplo, contoso-iot-edge.
  • Versão: Um número de versão para este manifesto apt, por exemplo 1.0.0.0.
  • Pacotes: uma lista de objetos que contêm propriedades específicas do pacote.
    • Nome: O nome ou ID do pacote, por exemplo iotedge.
    • Versão: Os critérios de versão do pacote desejados, por exemplo, 1.0.8-2.

Controlo de Versão

O manifesto apt suporta apenas números de versão exatos. O número da versão é a versão desejada do pacote Debian no formato, onde epoch é um int não assinado e upstream_version começa com um dígito e pode incluir alfanuméricos e caracteres como ., ,, +, -, e ~.<epoch>:<upstream_version>-<debian_revision> O valor da versão não deve conter um sinal de igual.

Por exemplo, "name":"iotedge" e "version":"1.0.8-2" é equivalente a instalar um pacote usando o comando apt-get install iotedge=1.0.8-2. Versão 1.0.8 é igual a 1.0.8-0.

Se a versão for omitida, a Atualização de Dispositivo instalará a versão mais recente disponível do pacote especificado. Para mais informações sobre como os pacotes Debian são versionados, veja o manual de políticas Debian.

Nota

O gerenciador de pacotes apt ignora os requisitos de versionamento fornecidos por um pacote quando os pacotes dependentes a serem instalados estão sendo resolvidos automaticamente. A menos que versões explícitas de pacotes dependentes sejam fornecidas, eles usam o mais recente, mesmo que o próprio pacote possa especificar um requisito estrito (=) em uma determinada versão. Essa resolução automática pode levar a erros em relação a uma dependência não atendida.

Portanto, quando você instala uma versão específica de um pacote, é melhor incluir também as versões explícitas dos pacotes dependentes a serem instalados. Para obter mais informações, consulte apt-get não resolvendo corretamente uma dependência em uma versão fixa em um pacote Debian/Ubuntu.

Se você atualizar uma versão específica do daemon de segurança do Azure IoT Edge, deverá incluir a aziot-edge versão desejada do pacote e seu pacote dependente aziot-identity-service em seu manifesto apt. Para obter mais informações, consulte Como atualizar o IoT Edge.

Critérios de instalação

O valor de critério instalado recomendado para um manifesto apt é <name>-<version>, onde <name> é o nome do manifesto apt e <version> é sua versão. Por exemplo, contoso-iot-edge-1.0.0.0.

Remoção de pacotes

Você também pode usar um manifesto apt para remover pacotes instalados dos dispositivos. Você pode usar um único manifesto apt para remover, adicionar e atualizar vários pacotes.

Para remover um pacote, adicione um sinal - de subtração após o nome do pacote. Não inclua um número de versão para os pacotes que você está removendo. Remover um pacote através de um manifesto apt não remove suas dependências e configurações.

Por exemplo, o manifesto apt a seguir remove o pacote contoso1 de todos os dispositivos nos quais ele é implantado.

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

Diretrizes de criação de manifesto do Apt

Tenha em mente as seguintes diretrizes ao criar um manifesto apt:

  • Certifique-se de que o manifesto apt é um arquivo JSON bem formado.

  • Dê a cada manifesto apt uma versão única. Tente criar uma metodologia padronizada para incrementar a versão do manifesto apt, para que faça sentido para seus cenários e seja fácil de seguir.

  • Para o estado desejado de cada pacote individual, especifique o nome exato e a versão do pacote que você deseja instalar no seu dispositivo. Sempre valide os valores em relação ao conteúdo do repositório do pacote de origem.

  • Liste os pacotes no manifesto apt na ordem em que devem ser instalados ou removidos.

  • Sempre valide a instalação de pacotes em um dispositivo de teste para garantir o resultado desejado.

  • Quando você instala uma versão específica de um pacote, por exemplo iotedge 1.0.9-1, inclua também as versões explícitas dos pacotes dependentes a serem instalados, por exemplo libiothsm 1.0.9-1.

  • Embora não seja necessário, sempre tornar o seu apt manifesto cumulativo evita colocar os dispositivos em um estado desconhecido. Uma atualização cumulativa garante que seus dispositivos tenham a versão desejada de todos os pacotes relevantes, mesmo que o dispositivo tenha ignorado uma atualização devido a uma falha de instalação ou estar offline.

    Por exemplo, considere o seguinte manifesto apt base:

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

    A seguinte atualização da versão 2.0 inclui o contoso2 pacote, mas não o contoso1 pacote. Todos os dispositivos que recebem a atualização 2.0 podem não ter o contoso1 pacote.

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

    A seguinte atualização cumulativa da versão 2.0 inclui os contoso1 pacotes e contoso2 :

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