Creare un pacchetto deb contenente script personali: differenze tra le versioni

+ rimozione di script & varie
(+ rimozione di script & varie)
Riga 4: Riga 4:
Il problema sorge quando gli script diventano tanti, le macchine tante e la memoria poca, per cui capire se uno script è aggiornato su un PC (o se è installato) diventa improbo.
Il problema sorge quando gli script diventano tanti, le macchine tante e la memoria poca, per cui capire se uno script è aggiornato su un PC (o se è installato) diventa improbo.


In questa guida verrà spiegato sommariamente, e senza la pretesa dell'esaustività vista l'enorme mole del gigante "Debian Packaging", come crearsi un pacchetto .deb che non fa nient'altro che contenere un certo numero di script. Questi script verranno installati nella directory <code>/usr/bin/</code> .
In questa guida verrà spiegato sommariamente, e senza la pretesa dell'esaustività vista l'enorme mole del gigante "Debian Packaging", come crearsi un pacchetto .deb che non fa nient'altro che contenere un certo numero di script. Questi script verranno installati nella directory <code>/usr/bin/</code> .<br/>
'''È caldamente consigliato''' scegliere accuratamente il nome del pacchetto e degli script contenuti al suo interno, questo perché il pacchetto non è presente nei [[repository ufficiali]] e, quindi, potrebbe interferire con i nomi scelti da altri pacchetti.


== Operazioni preliminari ==
== Operazioni preliminari ==
Riga 72: Riga 73:
Source: imieiscript
Source: imieiscript
Section: misc
Section: misc
Priority: extra
Priority: optional
Maintainer: s3v <s3v@localhost>
Maintainer: s3v <s3v@localhost>
Build-Depends: debhelper (>= 8.0.0)
Build-Depends: debhelper (>= 8.0.0)
Riga 83: Riga 84:
Description: Questo pacchetto contiene gli script di s3v
Description: Questo pacchetto contiene gli script di s3v
</pre>
</pre>
La sezione scelta è "misc" e l'architettura "all" (poiché il pacchetto contiene script che girano sotto Bash e non dipendono dall'architettura); inoltre è stata inserita una breve descrizione e tolte le dipendenze.
La sezione scelta è "misc" e l'architettura "all" (poiché il pacchetto contiene script che girano sotto Bash e non dipendono dall'architettura); inoltre è stata inserita una breve descrizione e tolte le dipendenze.<br/>
La scelta di togliere le dipendenze comporta l'installazione dei pacchetti necessari al funzionamento degli script, installazione che non avviene automaticamente. Quindi vi sono due strade:
# Non si inseriscono le dipendenze e si installano separatamente i pacchetti necessari. Ad esempio uno script potrebbe fare uso di ''wget'' contenuto nel pacchetto omonimo e che dovrà essere installato in un secondo momento.
# Si riempie il campo ''Depends'' con il nome del pacchetto da installare e ci si affida ad [[APT]] per la risoluzione delle dipendenze.


== Il file install ==
== Il file install ==
Riga 98: Riga 102:
</pre>
</pre>
Alla fine saranno creati nella directory "pacchetti" quattro file:
Alla fine saranno creati nella directory "pacchetti" quattro file:
;imieiscript_1.0_i386.changes:il file che contiene i cambiamenti e l'hash per verificare l'autenticità dei file (i386 può cambiare, qui è dovuto al fatto che ho compilato su architettura i386)
;imieiscript_1.0.tar.gz:il file compresso che contiene tutti i file del pacchetto
;imieiscript_1.0.tar.gz:il file compresso che contiene tutti i file del pacchetto
;imieiscript_1.0.dsc: contiene la firma del file .tar.gz e le informazioni del pacchetto
;imieiscript_1.0.dsc: contiene la firma del file .tar.gz e le informazioni del pacchetto
;imieiscript_1.0_i386.changes:il file che contiene i cambiamenti e l'hash per verificare l'autenticità dei file (i386 può cambiare, qui è dovuto al fatto che ho compilato su architettura i386)
;imieiscript_1.0_all.deb:il file .deb vero e proprio
;imieiscript_1.0_all.deb:il file .deb vero e proprio


È importante sottolineare che gli unici file essenziali per ricreare o modificare il pacchetto sono solo i primi tre della lista. Il quarto file (il pacchetto .deb) può invece essere installato sulle macchine che si desidera con un:
È importante sottolineare che gli unici file essenziali per ricreare o modificare il pacchetto sono solo i primi due della lista. Il quarto file (il pacchetto .deb) può invece essere installato sulle macchine che si desidera con un:
<pre># dpkg -i imieiscript_1.0_all.deb</pre>
<pre># dpkg -i imieiscript_1.0_all.deb</pre>
tutto il resto non è più necessario e può essere tranquillamente cancellato.
tutto il resto non è più necessario e può essere tranquillamente cancellato.


== Modifica del pacchetto ==
== Modifica del pacchetto ==
Supponiamo di dover modificare uno script e di voler creare la versione 1.1 del pacchetto. L'operazione a questo punto è banalissima. Se si hanno i tre file di prima (<code>.changes</code>, <code>.tar.gz</code> e <code>.dsc</code>), basta un:
Supponiamo di dover modificare uno script e di voler creare la versione 1.1 del pacchetto. L'operazione a questo punto è banalissima. Se si hanno i due file di prima (<code>.tar.gz</code> e <code>.dsc</code>), basta un:
<pre>
<pre>
$ dpkg-source -x imeiscript_1.0.dsc
$ dpkg-source -x imieiscript_1.0.dsc
</pre>
</pre>
per ricreare la directory "imeiscript-1.0" e lavorare nuovamente sui file e gli script. Quando gli script sono stati modificati, cambiare il changelog così:
per ricreare la directory "imieiscript-1.0" e lavorare nuovamente sui file e gli script. Quando gli script sono stati modificati, cambiare il changelog così:
<pre>
<pre>
imieiscript (1.1) unstable; urgency=low
imieiscript (1.1) unstable; urgency=low
Riga 135: Riga 139:
<pre>$ dpkg-buildpackage -us -uc</pre>
<pre>$ dpkg-buildpackage -us -uc</pre>
per ricreare altri quattro file che però, adesso, conterranno la versione aggiornata.
per ricreare altri quattro file che però, adesso, conterranno la versione aggiornata.
== Rimuovere o rinominare uno script ==
Se ci si accorge che uno script non serve oppure che va rinominato, si può ricorrere alla potenza del sistema di pacchettizzazione senza dover effettuare tutto manualmente. Per questo scopo ci servirà un ulteriore file chiamato "preinst" all'interno della directory ''debian'' che conterrà ad esempio:
<pre>
[ -x /usr/bin/s3v-script1 ] && rm /usr/bin/s3v-script1
</pre>
questo rimuoverà il file <code>/usr/bin/s3v-script1</code> al momento dell'installazione del pacchetto.<br/>
== Rimozione del pacchetto ==
Una volta installato, il pacchetto si comporta esattamente come tutti gli altri e quindi può essere rimosso con il classico:
<pre>
# apt-get remove imieiscript
</pre>


== Controllare il pacchetto ==
== Controllare il pacchetto ==
Riga 140: Riga 157:
<pre>$ lintian imieiscript_1.1_all.deb</pre>
<pre>$ lintian imieiscript_1.1_all.deb</pre>
che provvederà a fare un check sul pacchetto per controllare se esso contiene errori oppure ha bisogno di modifiche per aderire alla policy e entrare nei [[repository]] di Debian.<br/>
che provvederà a fare un check sul pacchetto per controllare se esso contiene errori oppure ha bisogno di modifiche per aderire alla policy e entrare nei [[repository]] di Debian.<br/>
Il check, visto che si tratta di un pacchetto personale, non è necessario. Se siete paranoici:
Il check, visto che si tratta di un pacchetto personale, non è necessario. Se siete amanti della precisione:
<pre>
<pre>
$ lintian imieiscript_1.1_all.deb
$ lintian imieiscript_1.1_all.deb
Riga 155: Riga 172:
W: imieiscript: binary-without-manpage usr/bin/s3v-script3
W: imieiscript: binary-without-manpage usr/bin/s3v-script3
</pre>
</pre>
che ci informerà che l'indirizzo e-mail non è corretto, il file "copyright" va modificato, gli script andrebbero accompagnati da una [[manpage]] (come impone la policy Debian) e nel file "control" manca una descrizione completa del pacchetto.<br/>
Questo output ci informerà che l'indirizzo e-mail non è corretto, il file "copyright" va modificato, gli script andrebbero accompagnati da una [[manpage]] (come impone la policy Debian) e nel file "control" manca una descrizione completa del pacchetto.<br/>
Se si vogliono informazioni più dettagliate sui cambiamenti da effettuare:
Se si vogliono informazioni più dettagliate sui cambiamenti da effettuare:
<pre>$ lintian -i imieiscript_1.1_all.deb</pre>
<pre>$ lintian -i imieiscript_1.1_all.deb</pre>
6 999

contributi