Pengenalan | Siaran ini adalah tambahan kepada siri Membangunkan Prototaip ROS kepada Pengeluaran pada Teras Ubuntu, sebagai jawapan kepada soalan yang saya terima: "Saya mahu membuat imej kilang, tetapi saya tidak mahu membuat gambar saya kepada umum" Of sudah tentu, soalan dan jawapan ini tidak khusus untuk robotik. Dalam jawatan ini, saya akan menjawab soalan ini dalam dua cara. |
Sebelum anda bermula, anda perlu mengetahui beberapa pengetahuan latar belakang tentang membuat imej Teras Ubuntu Jika anda telah membaca [Membangunkan prototaip ROS kepada produk siap dalam siri artikel Ubuntu Core 3 (khususnya Bahagian 5), anda sudah mempunyai pengetahuan latar belakang yang diperlukan. jika anda belum melihatnya, anda boleh menyemak tutorial membuat imej Teras Ubuntu anda.
Jika anda terkini dan mengetahui perkara yang saya perkatakan apabila saya menyebut "definisi model" atau "penegasan model", mari mula menggunakan sanp peribadi melalui kaedah yang berbeza untuk membuat imej Teras Ubuntu.
Kaedah 1: Jangan muat naik snap anda ke kedaiIni adalah cara paling mudah. Mula-mula lihat contoh definisi model ini - amd64-model.json:
{ "type": "model", "series": "16", "model": "custom-amd64", "architecture": "amd64", "gadget": "pc", "kernel": "pc-kernel", "authority-id": "4tSgWHfAL1vm9l8mSiutBDKnnSQBv0c8", "brand-id": "4tSgWHfAL1vm9l8mSiutBDKnnSQBv0c8", "timestamp": "2017-06-23T21:03:24+00:00", "required-snaps": ["kyrofa-test-snap"] }
Mari tukar ini menjadi pernyataan model:
$ cat amd64-model.json | snap sign -k my-key-name > amd64.model You need a passphrase to unlock the secret key for user: "my-key-name" 4096-bit RSA key, ID 0B79B865, created 2016-01-01 ...
Selepas mendapat penegasan model: amd64.model, jika anda memberikannya kepada ubuntu-image sekarang, anda akan terkena dinding:
$ sudo ubuntu-image -c stable amd64.model Fetching core Fetching pc-kernel Fetching pc Fetching kyrofa-test-snap error: cannot find snap "kyrofa-test-snap": snap not found COMMAND FAILED: snap prepare-image --channel=stable amd64.model /tmp/tmp6p453gk9/unpack
Sebenarnya tiada snap bernama kyrofa-test-snap dalam kedai. Adalah penting untuk diperhatikan di sini bahawa definisi model (dan penegasan yang ditukar) hanya mengandungi satu siri nama snap. Jika anda mempunyai snap dengan nama itu secara setempat, walaupun ia tidak wujud dalam kedai, anda boleh menggunakannya dengan memberitahu ubuntu-image untuk memadankan nama tersebut dalam penegasan melalui pilihan --extra-snaps:
$ sudo ubuntu-image -c stable \ --extra-snaps /path/to/kyrofa-test-snap_0.1_amd64.snap \ amd64.model Fetching core Fetching pc-kernel Fetching pc Copying "/path/to/kyrofa-test-snap_0.1_amd64.snap" (kyrofa-test-snap) kyrofa-test-snap already prepared, skipping WARNING: "kyrofa-test-snap" were installed from local snaps disconnected from a store and cannot be refreshed subsequently! Partition size/offset need to be a multiple of sector size (512). The size/offset will be rounded up to the nearest sector.
Kini, tanpa snap dimuat naik ke kedai, anda telah memperoleh imej Teras Ubuntu (bernama pc.img) dengan snap peribadi telah diprapasang. Tetapi terdapat masalah besar dengan ini ubuntu-image akan menggesa amaran: tidak memasang snap melalui kedai yang disambungkan bermakna anda tidak mempunyai cara untuk mengemas kini pada peranti yang telah membakar imej ini. Anda hanya boleh mengemas kininya dengan membuat imej baharu dan memancarkannya semula ke peranti.
Kaedah 2: Gunakan kedai jenamaApabila anda mendaftar untuk akaun kedai dan melawati dashboard.snapcraft.io, anda sebenarnya sedang melihat gambar anda dalam gedung Ubuntu standard. Jika anda baru memasang snapd dalam sistem anda, ia akan dimuat turun dari kedai ini secara lalai. Walaupun anda boleh menerbitkan snap peribadi di Gedung Ubuntu, anda tidak boleh prapasangnya ke dalam imej kerana hanya anda (dan rakan usaha sama yang anda tambahkan) mempunyai kebenaran untuk menggunakannya. Satu-satunya cara untuk membuat cermin dalam situasi ini adalah dengan menerbitkan snap anda secara terbuka, namun itu tidak memenuhi tujuan siaran ini.
Untuk kes penggunaan ini kami mempunyai apa yang dipanggil Kedai Jenama. Kedai berjenama masih dihoskan di Gedung Ubuntu, tetapi ia adalah versi tersuai dan khusus untuk syarikat atau peranti tertentu. Kedai jenama mungkin atau mungkin tidak mewarisi daripada kedai Ubuntu standard, dan kedai jenama boleh memilih untuk dibuka kepada semua pembangun atau terhad kepada kumpulan tertentu (menjaganya secara peribadi adalah perkara yang kita mahukan).
Sila ambil perhatian bahawa ini adalah ciri berbayar. Anda perlu memohon kedai jenama. Setelah permintaan diluluskan, anda akan dapat melihat kedai baharu anda dengan mengakses "kedai yang boleh anda akses" di bawah nama pengguna anda.
Di sana anda boleh melihat berbilang kedai yang anda boleh akses. Sekurang-kurangnya akan ada dua: kedai Ubuntu standard dan kedai berjenama baharu anda. Pilih kedai jenama (kotak merah), masukkan dan rekod ID kedai anda (kotak biru): anda akan memerlukannya kemudian.
Mendaftarkan nama atau memuat naik snap di kedai jenama menggunakan kaedah yang sama seperti kedai standard, kecuali ia kini dimuat naik ke kedai jenama anda dan bukannya yang standard. Jika anda meletakkan kedai jenama anda dalam tidak tersenarai, snap ini tidak akan kelihatan kepada pengguna luar. Tetapi apa yang perlu diperhatikan di sini ialah apabila memuat naik snap buat kali pertama, ia perlu dikendalikan melalui antara muka web. Selepas itu, anda boleh terus bekerja dengan Snapcraft seperti biasa.
Jadi bagaimana ini berubah? "kedai-kyrofal" saya mewarisi snap dari kedai Ubuntu dan juga mengandungi "kyrofa-bran-test-snap" yang dikeluarkan dalam saluran stabil. Snap ini tidak tersedia di kedai Ubuntu dan jika anda mencarinya, anda tidak akan menemuinya:
$ snap find kyrofa-branded The search "kyrofa-branded" returned 0 snaps
Tetapi menggunakan ID kedai yang kami rakamkan sebelum ini, kami boleh membuat penegasan model yang memuat turun snap dari kedai jenama dan bukannya kedai Ubuntu. Kami hanya perlu menambah kunci "kedai" pada fail JSON, seperti ini:
{ "type": "model", "series": "16", "model": "custom-amd64", "architecture": "amd64", "gadget": "pc", "kernel": "pc-kernel", "authority-id": "4tSgWHfAL1vm9l8mSiutBDKnnSQBv0c8", "brand-id": "4tSgWHfAL1vm9l8mSiutBDKnnSQBv0c8", "timestamp": "2017-06-23T21:03:24+00:00", "required-snaps": ["kyrofa-branded-test-snap"], "store": "kyek" }
Tandatanganinya menggunakan kaedah dalam kaedah 1, dan kemudian kami hanya boleh membuat imej Teras Ubuntu diprapasang dengan snap peribadi kedai jenama kami seperti ini:
$ sudo ubuntu-image -c stable amd64.model Fetching core Fetching pc-kernel Fetching pc Fetching kyrofa-branded-test-snap Partition size/offset need to be a multiple of sector size (512). The size/offset will be rounded up to the nearest sector.
Sekarang, seperti pada penghujung kaedah 1, anda mempunyai pc.img sedia untuk kilang. Dan semua snap dalam imej yang dibuat menggunakan kaedah ini dimuat turun dari kedai, yang bermaksud ia akan dikemas kini secara automatik seperti biasa.
KesimpulanSetakat ini, hanya ada dua cara untuk melakukannya. Apabila saya mula menulis siaran ini, saya fikir mungkin ada cara ketiga (menjadikan snap peribadi dan kemudian menggunakannya untuk membuat cermin), tetapi itu ternyata tidak mungkin.
Selain itu, kami juga telah menerima banyak permintaan untuk penempatan dalaman atau kedai perusahaan Walaupun produk tersebut belum diumumkan, pasukan kedai sedang mengusahakannya. Saya akan menulis artikel mengenainya sebaik sahaja ia tersedia.
Semoga ia membantu anda!
Atas ialah kandungan terperinci Buat imej kilang yang mengandungi snap peribadi!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!