Manifes apt Pembaruan Perangkat

Manifes apt adalah file JSON yang menjelaskan detail pembaruan yang diperlukan oleh penangan pembaruan apt. File ini dapat diimpor ke dalam Device Update for IoT Hub sama seperti pembaruan lainnya.

Untuk informasi selengkapnya, lihat Mengimpor pembaruan ke Device Update for IoT Hub.

Gambaran Umum

Saat manifes apt dikirimkan ke agen Pembaruan Perangkat sebagai pembaruan, agen memproses manifes dan melakukan operasi yang diperlukan. Operasi ini termasuk mengunduh dan menginstal paket yang ditentukan dalam file manifes apt dan dependensinya dari repositori yang ditentukan.

Pembaruan Perangkat mendukung apt updateType dan apt update handler. Dukungan ini memungkinkan agen Pembaruan Perangkat untuk mengevaluasi paket Debian yang diinstal dan memperbarui paket yang diperlukan.

Skema

File manifes apt adalah file JSON dengan skema berversi.

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

Contohnya:

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

Setiap manifes apt mencakup properti berikut:

  • Nama: Nama untuk manifes apt ini. Ini bisa menjadi nama atau ID apa pun yang bermakna untuk skenario Anda. Contohnya:contoso-iot-edge
  • Versi: Nomor versi untuk Manifest. Contohnya:1.0.0.0
  • Paket: Daftar objek yang berisi properti khusus paket.
    • Nama: Nama atau ID paket. Contohnya:iotedge
    • Versi: Kriteria versi yang diinginkan untuk paket. Contohnya:1.0.8-2 Nilai versi tidak boleh berisi tanda sama dengan. Jika versi dihilangkan, versi terbaru yang tersedia dari paket yang ditentukan akan diinstal.

Saat ini hanya nomor versi dengan angka pasti yang didukung. Nomor versi adalah versi paket Debian yang diinginkan dalam format [epoch:]upstream_version[-debian_revision], yang mana epoch adalah int yang tidak ditandatangani dan upstream_version dapat menyertakan alfanumerik dan karakter seperti ".","+","-" dan "~". Nomor tersebut harus dimulai dengan satu digit.

Catatan

'1.0.8' sama dengan '1.0.8-0'

Misalnya, "name":"iotedge" dan "version":"1.0.8-2" sama dengan memasang paket menggunakan perintah apt-get install iotedge=1.0.8-2

Untuk informasi selengkapnya tentang bagaimana paket Debian diberi versi, lihat Buku panduan kebijakan Debian

Catatan

Manajer paket apt mengabaikan persyaratan pembuatan versi yang diberikan oleh sebuah paket ketika paket-paket dependen yang akan diinstal sedang diselesaikan secara otomatis. Kecuali versi eksplisit paket dependen diberikan mereka akan menggunakan yang terbaru, meskipun paket itu sendiri dapat menentukan persyaratan yang ketat (=) pada versi tertentu. Resolusi otomatis ini dapat menyebabkan kesalahan terkait dependensi yang tidak terpenuhi. Pelajari Selengkapnya

Jika Anda memperbarui versi tertentu dari daemon keamanan Azure IoT Edge, maka Anda harus menyertakan versi paket aziot-edge yang diinginkan dan paket aziot-identity-service dependennya dalam manifes apt Anda. Untuk informasi selengkapnya, lihat Cara memperbarui IoT Edge.

Manifes apt dapat digunakan untuk memperbarui agen Pembaruan Perangkat beserta dependensinya. Cantumkan nama agen pembaruan perangkat dan versi yang diinginkan dalam manifes apt, seperti yang Anda lakukan untuk paket lainnya. Manifes apt ini kemudian dapat diimpor dan digunakan melalui alur Device Update for IoT Hub.

Menghapus paket

Anda juga dapat menggunakan manifes apt untuk menghapus paket yang diinstal dari perangkat Anda. Manifes apt tunggal dapat digunakan untuk menghapus, menambahkan, dan memperbarui beberapa paket.

Untuk menghapus paket, tambahkan tanda minus "-" setelah nama paket. Anda tidak boleh menyertakan nomor versi untuk paket yang Anda hapus. Menghapus paket melalui manifes apt tidak menghapus dependensi dan konfigurasinya.

Contohnya:

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

Manifes apt ini akan menghapus paket "foo" dari perangkat tempat paket itu disebarkan.

Kriteria terinstal untuk manifes apt adalah <name>-<version> saat <name> adalah nama Manifes apt dan <version> adalah versi manifes apt. Contohnya:contoso-iot-edge-1.0.0.0

Panduan pembuatan manifes apt

Ketika membuat anifes apt, ada beberapa panduan yang perlu diingat:

  • Selalu pastikan bahwa manifest apt adalah file json yang terbentuk dengan baik.
  • Setiap manifes apt harus memiliki versi yang unik. Cobalah untuk membuat metodologi standar untuk tahapan versi manifes apt, sehingga masuk akal untuk skenario Anda dan dapat dengan mudah diikuti.
  • Ketika sampai pada kondisi yang diinginkan dari setiap paket individu, tentukan nama dan versi pasti dari paket yang ingin Anda instal di perangkat Anda. Selalu validasi nilai sesuai dengan repositori paket yang ingin Anda gunakan sebagai sumber untuk paket.
  • Pastikan bahwa paket-paket dalam manifes apt terdaftar dalam urutan yang harus diinstal/dihapus.
  • Selalu validasi instalasi paket pada perangkat uji untuk memastikan hasilnya sesuai yang diinginkan.
  • Saat menginstal versi tertentu dari paket (Misalnya, iotedge 1.0.9-1), praktik terbaiknya yaitu Anda juga memiliki dalam manifest apt versi eksplisit paket dependen yang akan diinstal (Misalnya, libiothsm 1.0.9-1)
  • Meskipun tidak dimandatkan, selalu pastikan manifes apt Anda bersifat kumulatif untuk menghindari perangkat Anda masuk ke kondisi yang tidak dikenal. Pembaruan kumulatif akan memastikan bahwa perangkat Anda memiliki versi yang diinginkan dari setiap paket yang Anda pedulikan meskipun perangkat telah melewatkan penerapan pembaruan yang tepat karena kegagalan dalam penginstalan, atau sedang offline

Contohnya:

Manifes apt dasar

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

Pembaruan buruk

Pembaruan ini mencakup paket bar, tetapi bukan paket foo.

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

Pembaruan yang baik

Pembaruan ini mencakup paket foo, dan juga termasuk paket bar.

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

Langkah berikutnya

Mengimpor pembaruan untuk Pembaruan Perangkat