Bagaimana saya bisa mengulang lebih cepat saat membuat snap?

10

Saya sedang mengerjakan snap perangkat lunak yang lebih besar dan membangun snap, menghapus yang lama, menginstal yang baru hanya membutuhkan waktu yang sangat lama.

Saya ingin mengulangi membuat snap dan menguji hal-hal lebih cepat. Saya tahu bahwa snap itu dibuat dengan baik, sekarang saya tertarik untuk menguji hal-hal seperti meluncurkan aplikasi dan integrasinya. Apakah ada cara untuk melakukan ini?

dholbach
sumber

Jawaban:

8

Kata pengantar

Salah satu cara untuk melakukannya adalah menggunakan snap try. Dari --helppesannya:

The try command installs an unpacked snap into the system for testing
purposes. The unpacked snap content continues to be used even after 
installation, so non-metadata changes there go live instantly. Metadata
changes such as those performed in snap.yaml will require reinstallation 
to go live.

Itu juga dilengkapi dengan opsi:

--devmode     Install in development mode and disable confinement

Ini sangat membantu jika Anda ingin menguji bit kurungan dan menggunakan antarmuka dengan benar.

Pemakaian

Cara menggunakan ini sederhana, jalankan saja:

snapcraft prime
snap try prime/

Pada langkah pertama Anda mengatakan snapcraftuntuk melakukan

Final copy and preparation for the snap.

Dan pada langkah kedua snapdmemanfaatkan isi direktori untuk "menginstal" snap. Sekarang Anda dapat bermain-main dengan paket tersebut sambil tetap dapat mengubahnya.

Contoh

Mari kita gunakan contoh dari Snappy Playpen untuk menunjukkan cara menggunakan ini.

Kami menggunakan konsul karena relatif cepat untuk dibangun dan digunakan:

$ git clone https://github.com/ubuntu/snappy-playpen
$ cd snappy-playpen/consul/
snappy-playpen/consul$ snapcraft prime
Preparing to pull consul 
[...]
Staging consul 
Priming consul 
snappy-playpen/consul$ 

Sekarang mari kita pastikan bahwa kita tidak menginstal versi lain dan kemudian melanjutkan dengan instalasi.

snappy-playpen/consul$ which consul
snappy-playpen/consul$ snap try prime

Name    Version  Rev  Developer  Notes
consul  0.6.4    x1              try
snappy-playpen/consul$ consul --help
usage: consul [--version] [--help] <command> [<args>]

Available commands are:
    agent          Runs a Consul agent
[...]
snappy-playpen/consul$ 

Sejauh ini bagus. Tampaknya bekerja dengan baik. Sekarang mari kita gantikan dengan /bin/echohanya untuk melihat cara kerja:

snappy-playpen/consul$ cp /bin/echo prime/bin/consul 
snappy-playpen/consul$ consul --help
Usage: /snap/consul/x1/bin/consul [SHORT-OPTION]... [STRING]...
   or:  /snap/consul/x1/bin/consul LONG-OPTION
Echo the STRING(s) to standard output.
[...]
daniel@daydream:/tmp/test/snappy-playpen/consul$  

Seperti yang Anda lihat, kita dapat membuat perubahan pada sistem live primesambil tetap menjalankan hal-hal di bawah kurungan. Ini umumnya merupakan cara yang baik untuk mengaktifkan dan menjalankan snap dan sepenuhnya diuji dengan cepat.

Catatan: Dengan snapdsebelum 2.0.10 (2016-07-09), Anda harus memacu snap sebelum menjalankan snapcraft cleanatau snapdakan masuk ke kondisi buruk dan mengeluh tentang tidak dapat menemukan terkunci terpasang. Beberapa perbaikan lainnya disiapkan untuk 2.0.11, yang akan mendarat dalam beberapa hari juga.

dholbach
sumber
1
Anda mungkin mempertimbangkan untuk menyebutkan bahwa snap harus dihapus sebelum salah satu berjalan snapcraft cleanatau snapd saat ini masuk ke kondisi buruk dan merengek karena tidak dapat menemukan terkunci terpasang. Perbaikan sedang berlangsung untuk itu, tetapi belum dirilis.
Kyle
Yang bagus! Menambahkan info sekarang.
dholbach
1
Ya, 'jepret coba' tepat untuk kasus penggunaan ini. Ini memungkinkan Anda untuk membuat direktori dan membuat snap Anda di dalamnya, tanpa harus terus membuat squashfs dan remount itu. Anda beralih hanya dengan bekerja di direktori itu (Anda secara efektif memiliki snap baca-tulis) sampai Anda bahagia, kemudian buat squashfs keluar dari direktori itu.
Mark Shuttleworth