Come posso iterare più rapidamente durante la creazione di uno snap?


10

Sto lavorando a uno snap di un software più grande e costruendo lo snap, rimuovendo quello vecchio, installando quello nuovo richiede solo molto tempo.

Vorrei ripetere la creazione dello snap e testare le cose più rapidamente. So che lo snap si sviluppa bene, ora sono interessato a testare cose come l'avvio dell'app e la sua integrazione. C'è un modo per fare questo?

Risposte:


8

Prefazione

Un modo per procedere è utilizzare snap try. Dal suo --helpmessaggio:

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.

Viene inoltre fornito con un'opzione:

--devmode     Install in development mode and disable confinement

Ciò è particolarmente utile se si desidera testare i bit di confinamento e utilizzare correttamente le interfacce.

uso

Il modo di utilizzare questo è semplice, basta eseguire:

snapcraft prime
snap try prime/

Nel primo passo dici snapcraftdi fare il

Final copy and preparation for the snap.

E nel secondo passaggio si snapdutilizza il contenuto della directory per "installare" lo snap. Ora puoi giocare con il pacchetto pur essendo in grado di modificarlo.

Esempio

Facciamo un esempio dal box Snappy per mostrare come usarlo.

Stiamo usando console poiché è relativamente veloce da costruire e utilizzare:

$ 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$ 

Ora assicuriamoci che non ne sia installata un'altra versione e quindi procediamo con l'installazione.

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$ 

Fin qui tutto bene. Sembra funzionare bene. Ora sostituiamolo con /bin/echosolo per vedere come funzionano le cose:

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$  

Come puoi vedere, possiamo apportare modifiche al sistema live primementre stiamo ancora eseguendo le operazioni in isolamento. Questo è generalmente un buon modo per avviare e far scattare rapidamente lo snap e testarlo completamente.

Nota: con snapdprima del 2.0.10 (2016-07-09), prima di eseguire, dovevi creare uno schiocco di temute snapcraft cleano ti snapdavresti messo in uno stato di cattivo umore e si lamentava di non riuscire a trovare gli snap montati. Altre correzioni sono in fila per 2.0.11, che dovrebbe anche atterrare tra qualche giorno.


1
Potresti considerare di menzionare che lo snap deve essere rimosso prima che uno venga eseguito snapcraft cleano che lo snapd attualmente si trovi in ​​uno stato non valido e si lamenta di non essere in grado di trovare gli snap montati. La correzione è in corso per questo, ma non ancora rilasciata.
Kyle,

Ben fatto! Aggiungendo le informazioni ora.
Dholbach l'

1
Sì, "snap provare" è esattamente per questo caso d'uso. Ti consente di creare una directory e creare lo snap in essa, senza dover continuare a creare gli squashfs e rimontarli. Fai l'iter semplicemente lavorando in quella directory (hai effettivamente uno snap in lettura / scrittura) finché non sei soddisfatto, quindi fai uscire gli squashfs da quella directory.
Mark Shuttleworth
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.