Cara membuat pakej Snap langkah demi langkah

Kemaskini terakhir: 04/12/2025
Pengarang Ishak
  • Snap membolehkan anda membungkus aplikasi dengan semua kebergantungan mereka ke dalam bekas terpencil, menjadikannya mudah digunakan merentas berbilang pengedaran. Linux.
  • Snapcraft ialah alat rasmi untuk menerangkan, membina dan menerbitkan pakej Snap menggunakan fail konfigurasi snapcraft.yaml.
  • Antara muka kurungan dan palam yang ketat mengawal keselamatan dan kebenaran setiap Snap, mengimbangi pengasingan dan kefungsian.
  • Penerbitan ke Snap Store memudahkan pengedaran dan pengemaskinian automatik aplikasi seperti projek Nextcloud atau Electron.

Panduan langkah demi langkah untuk membuat pakej Snap

Jika anda membangunkan aplikasi untuk Linux, lambat laun anda akan menghadapi masalah yang sama: bagaimana untuk membungkus dan mengedarkan perisian anda dengan cara yang mudah, selamat dan boleh dikemas kini tanpa bergelut dengan kebergantungan setiap pengedaran. Di sinilah Snap memainkan peranan, format pakej Canonical yang semakin banyak diguna pakai oleh persekitaran desktop dan pelayan.

Dalam panduan ini, anda akan belajar cara membuat pakej Snap langkah demi langkah, mengujinya pada komputer anda, malah menerbitkannya ke Snap Store . Anda juga akan mengetahui dengan tepat apa itu Snap, peranan snapd, kelebihan dan kekurangannya, dan bila ia paling sesuai untuk keperluan anda (contohnya, dengan aplikasi seperti projek Nextcloud atau Electron). Matlamatnya adalah untuk anda menyelesaikan artikel ini dengan yakin membungkus aplikasi anda sendiri dan mengetahui sama ada format ini sesuai untuk anda.

Apakah Snap dan mengapa ia menjadi begitu popular

Snap ialah format pakej universal untuk Linux , yang dicipta oleh Canonical (syarikat di sebalik Ubuntu) dengan matlamat yang sangat jelas: untuk memastikan pakej yang sama berfungsi secara identik merentasi pengedaran yang berbeza tanpa memerlukan sebarang pengubahsuaian pada sistem asas. Untuk mencapai matlamat ini, setiap Snap merangkumi aplikasi dan hampir semua kebergantungannya dalam bekas yang tersendiri.

Daripada bergantung pada pustaka sistem seperti pakej tradisional (deb, rpm, dll.) , Snap membawa "beg galas" mereka sendiri dengan semua yang mereka perlukan. Ini segera menghapuskan banyak masalah biasa: versi pustaka yang tidak serasi, kebergantungan yang rosak atau konflik dengan pakej lain yang dipasang.

Semua ini diuruskan oleh snapd, daemon yang bertanggungjawab untuk memasang, mengemas kini dan menjalankan Snaps . snapd berjalan di latar belakang, mengawal kebenaran, menguatkuasakan sandboxing keselamatan, menjadualkan kemas kini automatik dan memastikan sistem anda dikemas kini dengan usaha yang minimum di pihak anda.

Hasil daripada pendekatan ini, satu pakej Snap boleh dipasang tanpa pengubahsuaian pada Ubuntu, Debian, Fedora, Arch Linux, Linux Mint dan banyak lagi pengedaran lain yang menyokong snapd. Dari perspektif pembangun, ia merupakan cara yang mudah untuk menjangkau lebih ramai pengguna dengan satu format pengedaran.

Kelebihan dan kekurangan Snap berbanding format lain

Sebelum kita beralih kepada aspek praktikal, adalah wajar untuk menjelaskan tentang apa yang ditawarkan oleh Snap dan kelemahannya berbanding pembungkusan tradisional atau alternatif seperti Flatpak atau AppImage.

Kekuatan terbesar Snap ialah kebebasan pengedarannya . Pakej yang dibuat dengan baik akan berjalan sama pada versi Ubuntu, Debian atau Fedora yang berbeza tanpa memerlukan anda menyelenggara cawangan tertentu. Ini memudahkan kehidupan untuk pembangun dan pengguna, yang tidak lagi bergantung pada repositori setiap pengedaran untuk perisian terkini.

Satu lagi kelebihan utama ialah setiap Snap berjalan dalam persekitaran terpencil (kotak pasir) . Pengasingan ini mengurangkan kesan pelanggaran keselamatan, menghalang aplikasi daripada mengakses fail sistem yang tidak sepatutnya dan menghadkan konflik dengan aplikasi lain . Melalui antara muka dan pemalam, anda boleh memberikan akses terkawal kepada rangkaian, audio, kamera, direktori utama, dsb., mengikut prinsip keistimewaan paling minimum.

Tambahan pula, snapd mengendalikan kemas kini automatik ; Aplikasi Snap akan disegarkan semula di latar belakang, dan jika berlaku sesuatu yang tidak kena, anda boleh kembali kepada versi pakej sebelumnya dengan satu arahan. Ini memberikan ketenangan fikiran dalam persekitaran pengeluaran atau dalam pasukan di mana anda tidak mahu sentiasa memantau setiap kemas kini.

Aspek yang kurang menarik ialah, kerana ia merangkumi hampir semua kebergantungan, Snap cenderung mengambil lebih banyak ruang cakera berbanding rakan sejawatnya dalam format yang lebih tradisional. Adalah juga perkara biasa bagi sesetengah aplikasi yang dipaketkan sebagai Snap untuk dimulakan sedikit lebih lama , terutamanya aplikasi desktop yang berat, disebabkan oleh lapisan pengasingan dan pelekap persekitaran.

Satu lagi perkara yang menjadi perdebatan bagi sesetengah pihak dalam komuniti ialah Snap Store dipusatkan dan dikawal oleh Canonical . Walaupun formatnya terbuka, repositori utama diuruskan oleh sebuah syarikat tunggal, yang bercanggah dengan falsafah Linux yang lebih teragih dan berbeza dengan ekosistem Flatpak (Flathub) atau pendekatan AppImage yang tidak menyimpan.

Pasang dan aktifkan Snap pada pengedaran Linux utama

Untuk mencipta dan menggunakan pakej Snap, anda perlu memasang dan menjalankan snapd dengan betul pada sistem anda. Prosesnya sedikit berbeza bergantung pada pengedaran, tetapi ia agak mudah merentasi kesemuanya.

  Cara Mudah untuk Mengalih Keluar Kata Laluan daripada Fail PDF Dilindungi

Dalam Ubuntu dan derivatif moden (dari 16.04 dan seterusnya), snapd telah dipasang terlebih dahulu. Anda boleh mengesahkannya dengan:

snap version

Jika atas sebab tertentu ia tiada, anda boleh memasangnya dengan APT dengan menjalankan kemas kini dan kemudian memasang snapd :

sudo apt update
sudo apt install snapd

Dalam Debian atau Linux Mint, anda mungkin menemui fail pilihan yang menyekat pakej Snap. Dalam kes itu, langkah pertama ialah mengalih keluar peraturan yang melarangnya.

sudo rm /etc/apt/preferences.d/nosnap.pref

Kemudian anda mengemas kini dan memasang snapd dengan cara yang sama:

sudo apt update
sudo apt install snapd

Dalam dunia Fedora , sokongan Snap tidak disepadukan sepenuhnya sebaik sahaja dikeluarkan, tetapi anda boleh mendayakannya tanpa banyak masalah. Pertama, anda memasang snapd, biasanya dari repositori standard atau dari EPEL bergantung pada edisi, dan kemudian anda mendayakan soket supaya perkhidmatan bermula.

sudo dnf install snapd
sudo systemctl enable --now snapd.socket

Di samping itu, untuk mendayakan keserasian laluan klasik, pautan simbolik /snap yang menunjuk ke direktori yang digunakan oleh snapd biasanya dicipta:

sudo ln -s /var/lib/snapd/snap /snap

Pada Arch Linux , snapd tersedia dalam repositori rasmi. Anda memasangnya dengan pacman dan kemudian mengaktifkan perkhidmatan melalui soket.

sudo pacman -S snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap

Sebaik sahaja anda telah bangun dan berlari, anda boleh Pasang, senaraikan, kemas kini dan padam Snaps dengan arahan asas: snap install, snap list, snap refresh, snap remove y snap find untuk mencari apl yang tersedia dalam Snap Store. (lihat Bagaimana untuk menyenaraikan pakej yang dipasang pada Ubuntu)

Cara membungkus aplikasi dalam Snap langkah demi langkah

Mari kita masuk ke bahagian yang biasanya paling menarik minat orang: Pakej aplikasi anda sendiri dalam format SnapAliran umum adalah untuk menyediakan apl anda, memasang Snapcraft dan menentukan fail. snapcraft.yamlKonfigurasikan kurungan dan, akhirnya, bina dan uji pakej.

Untuk mengikuti proses ini, adalah sangat mudah untuk mempunyai pelayan atau komputer yang menjalankan Ubuntu 18.04 atau lebih tinggi (atau pengedaran yang serasi), akaun pengguna dengan keistimewaan sudo, dan, jika anda ingin menerbitkan Snap anda, akaun pada panel pembangun Snapcraft. Jika anda belum mempunyai aplikasi, anda boleh menggunakan "Hello World" yang mudah dalam Go sebagai contoh.

Langkah pertama ialah mencipta direktori kerja khusus untuk Snap anda dan menavigasi di dalamnya:

mkdir ~/tu-snap
cd ~/tu-snap

Jika anda sudah mempunyai kod sumber untuk projek anda, salin semuanya ke dalam direktori tersebut. Jika ia berada dalam Git, anda boleh memulakan repositori dan mengklon atau mengimport fail yang diperlukan di sana. Ideanya adalah untuk mengumpulkan semua yang diperlukan oleh aplikasi anda dalam satu folder , kerana ini akan menjadi titik permulaan untuk pembungkusan.

Jika anda mahukan contoh yang minimum, anda boleh mencipta program kecil dalam Go dengan fail yang dipanggil helloworld.go mencetak mesej ke skrin. Pasang Go dengan APT jika anda belum memilikinya, kemudian jalankan go run helloworld.go untuk memastikan bahawa aplikasi asas berfungsi dengan betul sebelum menukarnya kepada Snap.

Dengan aplikasi anda sedia dalam direktori tersebut, langkah seterusnya ialah memasang alat binaan Snapcraft , yang bertanggungjawab untuk membaca konfigurasi, menyelesaikan kebergantungan dan menjana pakej akhir.

Pasang dan fahami Snapcraft, alat untuk mencipta Snaps

Snapcraft ialah toolkit rasmi Canonical untuk pembangun mentakrifkan, membina dan menerbitkan pakej Snap tanpa perlu mencipta semula roda. Ia dipasang sebagai Snap dan berjalan dalam mod klasik untuk memastikan ia mempunyai kebenaran yang diperlukan semasa kompilasi.

Untuk memasangnya pada sistem dengan snapd berjalan , jalankan sahaja:

sudo snap install snapcraft --classic

Pilihan –classic melumpuhkan pengurungan ketat untuk Snapcraft, yang diperlukan kerana semasa proses pembungkusan ia perlu mengakses sistem, melancarkan binaan, mengurus kebergantungan dan berfungsi dengan fail di luar sangkarnya sendiri.

Setelah dipasang, anda akan melihat mesej yang menunjukkan versi yang telah ditambahkan ke sistem, seperti "snapcraft XXX dari Canonical dipasang" . Anda boleh mengesahkan bahawa semuanya berfungsi dengan betul dengan menjalankan:

snapcraft --version

Mulai saat ini, perintah snapcraft Ia tersedia dalam shell anda dan anda boleh menggunakannya dalam direktori projek anda untuk Bina himpunan Snap pertama andaTetapi pertama, konfigurasinya mesti ditakrifkan menggunakan fail YAML tertentu.

Tentukan nama, metadata, apl dan bahagian dalam snapcraft.yaml

Inti bagi mana-mana Snap ialah fail snapcraft.yaml, di mana anda menerangkan perkara yang dilakukan oleh aplikasi, cara ia dibina, arahan yang didedahkan kepada pengguna, pemalam yang digunakan, bahagian yang terkandung di dalamnya dan kebenaran yang diperlukannya.

  Panduan Lengkap untuk Defender untuk Office 365: Lindungi E-mel dan Fail

Mulakan dengan memastikan anda masih berada dalam direktori root projek anda (yang anda cipta sebagai folder Snap) dan cipta fail konfigurasi dengan editor kegemaran anda:

cd ~/tu-snap
nano snapcraft.yaml

Pertama, tentukan metadata asas: nama, ringkasan, perihalan dan versi . Contohnya ialah:

name: helloworld
summary: Pequeña aplicación de ejemplo empaquetada como Snap.
description: |
Programa Hello World escrito en Go y distribuido como paquete Snap
usando la herramienta Snapcraft para ilustrar el proceso paso a paso.
version: '1.0'

Nama mesti Ini hanya diperlukan jika anda akan menerbitkan di Snap StoreJadi, adalah idea yang baik untuk menyemak sama ada ia belum diambil. Ringkasan mempunyai had aksara, dan perihalan boleh berbilang baris menggunakan simbol. | seperti dalam contoh.

Kemudian tiba masanya untuk memberi keterangan. "apl" SnapIaitu, arahan yang pengguna boleh laksanakan daripada terminal Untuk melancarkan aplikasi anda, tambahkan bahagian dalam fail. apps: dan tentukan sekurang-kurangnya satu entri:

apps:
helloworld:
command: helloworld

Di sini, "helloworld" ialah nama logik aplikasi dan juga arahan yang akan dilaksanakan . Arahan tersebut mesti sepadan dengan binari atau skrip yang dijana oleh proses binaan anda; dalam kes contoh Go, ia akan menjadi fail boleh laku yang terhasil.

Jika nama arahan betul-betul sepadan dengan nama Snap, anda boleh menjalankannya terus selepas pemasangan. Jika ia tidak sepadan, Snap akan menambah awalan dengan nama pakej secara automatik, sesuatu yang perlu diingat semasa memilih konvensyen penamaan anda.

Seterusnya, anda perlu menentukan "bahagian ", yang merupakan blok binaan pakej anda: aplikasi utama anda, sumber tambahan, kebergantungan tambahan dan sebagainya. Setiap bahagian biasanya merangkumi pemalam tertentu bergantung pada bahasa atau teknologi yang anda gunakan. Contohnya, terdapat pemalam untuk Go, Python , Ruby, Rust, Node.js, Java dan banyak lagi.

Untuk melihat senarai plugin yang disokong oleh versi Snapcraft anda, anda boleh menggunakan:

snapcraft list-plugins

Dalam kes contoh dalam Go , konfigurasi bahagian minimum boleh jadi:

parts:
helloworld:
plugin: go
source: .
go-importpath: helloworld

Pilihan source: . menunjukkan bahawa kod sumber berada dalam direktori yang sama di mana fail itu berada snapcraft.yaml, dan parameter go-importpath Mentakrifkan laluan import untuk pemalam Go. Pemalam lain mempunyai pilihan khas mereka sendiri, yang boleh anda rujuk snapcraft help nombre-del-plugin.

Buat masa ini, anda boleh membiarkan fail terbuka kerana anda masih perlu menambah tetapan yang berkaitan dengan pengurungan keselamatan dan kebenaran akses yang diperlukan oleh aplikasi anda.

Kurungan, antara muka dan palam: mengawal kebenaran Snap

Salah satu ciri yang menentukan Snap ialah Aplikasi berjalan dalam persekitaran ujian atau kotak pasir. yang mengehadkan apa yang boleh mereka lakukan. Ini dikonfigurasikan dalam fail snapcraft.yaml menggunakan kunci confinement dan, apabila perlu, melalui antara muka dan palam.

Untuk bermula, tambahkan baris kurungan pada fail:

confinement: strict

Mod ketat ialah tahap keselamatan tertinggi dan disyorkan untuk kebanyakan kes apabila anda menyediakan pakej anda secara terbuka. Di bawah sekatan ini, aplikasi anda tidak boleh mengakses rangkaian, sistem fail hos atau sumber lain secara bebas melainkan anda membenarkannya melalui antara muka tertentu.

Antara muka adalah seperti "penyambung kebenaran" yang membolehkan Snap mengakses sumber tertentu: input dan output audio, kamera, rangkaian, direktori utama, fail sistem, dsb. Antara yang paling biasa digunakan ialah:

  • main balik audio: untuk memainkan bunyi.
  • rekod audio: untuk menangkap audio daripada mikrofon.
  • kamera: untuk menggunakan kamera web yang disambungkan.
  • rumah: untuk membaca dan menulis ke fail tidak tersembunyi dalam direktori rumah.
  • rangkaian: untuk akses kepada Internet dan rangkaian tempatan.
  • ikatan rangkaian: supaya aplikasi bertindak sebagai perkhidmatan rangkaian dan mendengar pada port.
  • fail sistem: untuk kebenaran luas pada sistem fail hos.

Untuk mengaitkan antara muka ini dengan Snap anda, anda mentakrifkan plugin dengan nama deskriptif dalam bahagian YAML yang sepadan. Contoh mudah yang menyediakan akses kepada rangkaian dan direktori utama ialah:

plugs:
helloworld-home:
interface: home
helloworld-network:
interface: network

Nama palam (contohnya, helloworld-homeInilah yang pengguna akan lihat apabila menyemak sambungan, jadi ia harus jelas. Kemudian, setelah Snap dipasang, anda boleh melihat bagaimana pautan ini kelihatan dengan arahan snap connections nombre-del-snap, yang akan menunjukkan antara muka yang telah dilampirkan pada setiap palam.

Dengan ini, fail anda snapcraft.yaml sudah mengandungi nama, metadata, apl, bahagian, kurungan dan palam asasIaitu, struktur minimum yang diperlukan untuk membina pakej buat kali pertama.

  Bagaimana untuk memaksa menyahpasang program dalam Windows 11 langkah demi langkah

Contoh lengkap untuk program Hello World mungkin seperti ini:

name: helloworld
summary: Pequeño programa Hello World en Go empaquetado como Snap.
description: |
Aplicación de ejemplo que imprime "Hello, world!" en la terminal.
Empaquetada usando Snapcraft para mostrar el flujo de trabajo básico.
version: '1.0'
confinement: strict
apps:
helloworld:
command: helloworld
parts:
helloworld:
plugin: go
source: .
go-importpath: helloworld
plugs:
helloworld-home:
interface: home
helloworld-network:
interface: network

Bina, pasang secara setempat dan uji pakej Snap anda

Setelah konfigurasi selesai, tiba masanya untuk mengkompil Snap dan mengujinya pada sistem anda sendiri . Pastikan anda berada dalam direktori root projek dan jalankan:

snapcraft

Snapcraft akan memulakan mesin maya atau persekitaran binaan bersih (bergantung pada versi dan backend yang anda gunakan), memuat turun kebergantungan yang diperlukan dan menjana pakej. Jika semuanya berjalan lancar, anda akhirnya akan melihat mesej seperti ini:

Snapped helloworld_1.0_amd64.snap

Pakej yang terhasil, helloworld_1.0_amd64.snap , sedia untuk dipasang pada sistem yang serasi. Untuk mengujinya secara setempat, gunakan arahan berikut (daripada direktori yang sama atau dengan menentukan laluan):

sudo snap install helloworld_1.0_amd64.snap --dangerous

Pilihan `--dangerous` memberitahu snapd bahawa ia adalah Snap tempatan tanpa tandatangan rasmi , jadi pemasangan adalah atas risiko anda sendiri. Apabila selesai, anda akan melihat mesej seperti "helloworld 1.0 dipasang".

Dari sana, anda boleh menjalankan arahan yang anda tentukan dalam bahagian aplikasi , dalam kes ini:

helloworld

Jika program anda dibina dengan baik, ia sepatutnya memaparkan teks “Hello, world!” pada output standard, mengesahkan bahawa Snap berfungsi dengan betul. Untuk menyemak kebenaran aktif dan sambungan antara muka, anda boleh menggunakan:

snap connections helloworld

Output akan menyenaraikan setiap antara muka, palam yang berkaitan dan "slot" yang sepadan, yang sangat berguna untuk melihat sepintas lalu akses aplikasi anda ke rangkaian, sistem fail atau sumber lain.

Terbitkan Snap anda dalam Snap Store dan uruskannya mengikut saluran

Sebaik sahaja anda mempunyai aplikasi anda dibungkus dan diuji dengan baik, langkah seterusnya yang logik ialah menjadikannya tersedia kepada seluruh dunia melalui Snap StoreUntuk melakukan ini, anda memerlukan akaun pembangun Snapcraft dan menggunakan arahan itu sendiri. snapcraft untuk mengesahkan diri anda dan memuat naik fail.

Mulakan dengan log masuk ke akaun pembangun anda dari terminal:

snapcraft login

Masukkan alamat e-mel dan kata laluan yang dikaitkan dengan akaun anda. Setelah disahkan, langkah seterusnya ialah mendaftarkan nama Snap anda di kedai supaya ia dipautkan kepada anda.

snapcraft register helloworld

Jika nama tersedia, operasi akan selesai dan anda akan dapat Mula memuat naik ulasan pakej anda ke Snap Store menggunakan arahan itu snapcraft push:

snapcraft push helloworld_1.0_amd64.snap

Selepas proses muat naik dan semakan automatik , anda akan melihat mesej yang serupa dengan:

Revision 1 of 'helloworld' created.

Setiap kali anda mengeluarkan binaan baharu bagi pakej yang sama, bilangan semakan akan meningkat , yang sangat berguna untuk mengenal pasti binaan tertentu dan melakukan pengembalian jika perlu. Langkah terakhir untuk menjadikan Snap boleh dipasang oleh sesiapa sahaja adalah dengan mengeluarkan semakan tersebut ke saluran.

snapcraft release helloworld 1 stable

Di sini anda menyatakan bahawa semakan 1 harus dikeluarkan pada saluran "stabil" . Anda juga mempunyai saluran calon, beta dan pinggir untuk mengedarkan versi ujian, versi calon stabil atau binaan pembangunan tidak stabil (lihat cara memasang dua versi pakej yang sama ). Setelah selesai, anda akan melihat jadual saluran dan semakan yang menunjukkan versi yang tersedia pada setiap satu.

Mulai saat itu, mana-mana pengguna dengan snapd akan dapat memasang aplikasi anda dengan "sudo snap install helloworld" dan menerima kemas kini automatik apabila anda menerbitkan semakan baharu dalam saluran yang sepadan.

Cara memasang perisian dengan apt and snap
Artikel berkaitan:
Cara Memasang Perisian dengan apt and snap pada Linux: Panduan Lengkap