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

m
nessun oggetto della modifica
mNessun oggetto della modifica
 
(9 versioni intermedie di un altro utente non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili|Squeeze|Wheezy|Jessie}}
== Introduzione ==
== Introduzione ==
Portare in giro i propri [[script]] per poterli avere a disposizione su diverse macchine è un'operazione facile; basta metterli su una pendrive e copiarli all'occorrenza sul computer su cui verranno eseguiti.<br/>
Portare in giro i propri [[script]] per poterli avere a disposizione su diverse macchine è un'operazione facile; basta metterli su una pendrive e copiarli all'occorrenza sul computer su cui verranno eseguiti.<br/>
Riga 68: Riga 68:
         chmod 0755 debian/imieiscript/usr/bin/*
         chmod 0755 debian/imieiscript/usr/bin/*
</pre>
</pre>
L'aggiunta di una modifica simile può diventare molto conveniente nel caso in cui si debbano configurare permessi differenti per script differenti, impostare anche proprietario/gruppo per uno o più file oppure se ci si deve confrontare con la presenza di tanti script per i quali il settaggio dei permessi da linea di comando diventa decisamente gravoso e suscettibile di errori.<br/>
Attenzione agli spazi iniziali ad inizio riga. Questi devono essere ottenuti attraverso il tasto [TAB] e non con la barra spaziatrice.
Attenzione agli spazi iniziali ad inizio riga. Questi devono essere ottenuti attraverso il tasto [TAB] e non con la barra spaziatrice.


Riga 104: Riga 106:
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 e non dipendono dall'architettura); inoltre è stata inserita una breve descrizione e tolte le [[dipendenze]].<br/>
La sezione scelta è "misc" e l'architettura "all" (poiché il pacchetto contiene script che 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:
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.
# 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.
Riga 136: Riga 138:
</pre>
</pre>
Alla fine saranno creati nella directory "pacchetti" quattro file:
Alla fine saranno creati nella directory "pacchetti" quattro file:
;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 (sorgenti 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_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)
Riga 212: Riga 214:
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:
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>
<pre>
[ -x /usr/bin/script1 ] && rm /usr/bin/script1
if [ -f /usr/bin/script1 ]; then
rm /usr/bin/script1
fi
</pre>
</pre>
questo rimuoverà il file <code>/usr/bin/script1</code> dalla directory <code>/usr/bin/</code> al momento dell'installazione del pacchetto.<br/>
questo rimuoverà il file <code>/usr/bin/script1</code> dalla directory <code>/usr/bin/</code> al momento dell'installazione del pacchetto.<br/>
Riga 277: Riga 281:
W: imieiscript: binary-without-manpage usr/bin/script3
W: imieiscript: binary-without-manpage usr/bin/script3
</pre>
</pre>
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/>
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>
Riga 287: Riga 291:
Purtroppo, essendo una directory non molto ben vista dal sistema di gestione dei pacchetti che la considera come "non privilegiata", verrà cancellata (se vuota) al momento della disinstallazione del pacchetto. La costruzione di un rimedio a questo comportamento necessiterà di qualche altra modifica.
Purtroppo, essendo una directory non molto ben vista dal sistema di gestione dei pacchetti che la considera come "non privilegiata", verrà cancellata (se vuota) al momento della disinstallazione del pacchetto. La costruzione di un rimedio a questo comportamento necessiterà di qualche altra modifica.


In questo caso si è scelta <code>/usr/local/bin/imieiscript/</code> come sotto-directory di installazione. Questo evita che vengano cancellati, durante l'installazione, eventuali file con lo stesso nome all'interno della directory <code>/usr/local/bin</code>.<br/>
In questo caso si è scelto di utilizzare la sotto-directory <code>/usr/local/bin/imieiscript/</code> sia per una mera questione di "pulizia" sia per evitare che vengano cancellati, durante l'installazione del pacchetto, eventuali file con lo stesso nome all'interno della directory <code>/usr/local/bin</code>.<br/>
Se la directory <code>/usr/local/bin/</code> è vuota e prevedete che lo sarà sempre, si può sceglierla come destinazione per l'installazione degli script del pacchetto.
Se <code>/usr/local/bin</code> non contiene script con lo stesso nome di quelli installati dal pacchetto, si può sceglierla tranquillamente come directory di destinazione.


La procedura è uguale a quella descritta precedentemente, tranne che per i seguenti cambiamenti.
La procedura è uguale a quella descritta precedentemente, tranne che per i seguenti cambiamenti.
Riga 408: Riga 412:
per evitare la cancellazione della directory
per evitare la cancellazione della directory
/usr/local/bin (se vuota) durante la sua disinstallazione.
/usr/local/bin (se vuota) durante la sua disinstallazione.
Rimuovere manualmente solo se il pacchetto imieiscript è
Rimuoverlo manualmente solo se il pacchetto imieiscript è
stato disinstallato!" > /usr/local/bin/imieiscript.readme
stato disinstallato!" > /usr/local/bin/imieiscript.readme
</pre>
</pre>
Riga 430: Riga 434:
                               └-- script3
                               └-- script3
</pre>
</pre>
In caso di rimozione del pacchetto "imieiscript" verrà visualizzata la seguente riga:
<pre>
...
dpkg: attenzione: nel rimuovere imieiscript, la directory "/usr/local/bin" è risultata non vuota e non viene rimossa
...
</pre>
Per cui la directory "/usr/local/bin" non verrà rimossa in quanto esiste ''almeno'' il file "imieiscript.readme".


== Il path degli script ==
== Il path degli script ==
Una volta installato correttamente il [[pacchetto]], è venuto il momento di provare ad eseguire qualcuno dei propri script. L'esecuzione è possibile indicando il percorso assoluto oppure, più comodamente, il solo nome dello script da eseguire. Ad esempio:
Una volta installato correttamente il [[pacchetto]], è venuto il momento di provare qualcuno dei propri script. L'esecuzione è possibile indicando il percorso assoluto oppure, più comodamente, il solo nome dello script da eseguire. Ad esempio:
<pre>
<pre>
$ script1
$ script1
Riga 439: Riga 450:
Tipicamente, in un sistema Debian, questa variabile contiene:
Tipicamente, in un sistema Debian, questa variabile contiene:
<pre>
<pre>
$ echo $PATh
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
</pre>
</pre>
Per cui di possono avere tre casi diversi in base alla directory di installazione scelta.
Per cui si possono avere tre casi diversi in base alla directory di installazione scelta.
; /usr/bin/
; /usr/bin/
:directory già inclusa nel path. Non servono modifiche.
:directory già inclusa nel path. Non servono modifiche.
Riga 448: Riga 459:
:directory già inclusa nel path. Non servono modifiche.
:directory già inclusa nel path. Non servono modifiche.
; /usr/local/bin/imieiscript/
; /usr/local/bin/imieiscript/
:è necessario fare in modo che questa directory sia inclusa nel proprio path aggiungendo al file "~/.bashrc" la riga:<pre>export PATH=$PATH:/usr/local/bin/imieiscript<pre> ed eseguire un:<pre>$ source ~/.bashrc</pre> per rendere effettive le modifiche.
:è necessario fare in modo che questa directory sia inclusa nel proprio path aggiungendo al file "~/.bashrc" la riga:<pre>export PATH=$PATH:/usr/local/bin/imieiscript</pre> e impartire un:<pre>$ source ~/.bashrc</pre> per rendere effettive le modifiche.
 
== Manpage del pacchetto ==
L'esistenza di una [[manpage]] per il pacchetto non è fondamentale ma potrebbe rivelarsi utile per almeno tre buoni motivi:
* Gli script potrebbero essere eseguiti anche da altre persone che vorrebbero, giustamente, capire cosa sono e come utilizzarli.
* Conoscere rapidamente la versione del pacchetto.
* Conoscere rapidamente quanti e quali script sono disponibili.
 
=== Pacchetti necessari ===
Installeremo il comodo "txt2man" che permette la conversione di un normale file di testo in un secondo file con formato proprio di una manpage (troff).
<pre>
# apt-get install txt2man
</pre>
 
=== Creazione della manpage ===
Creare nella directory "debian" un file di testo "imieiscript.manpage.txt" e inserirvi:
<pre>
NAME
imieiscript - i miei script personali
 
DESCRIZIONE
Questo pacchetto contiene i miei script personali installati nella directory /usr/local/bin/imieiscript
 
LISTA DEGLI SCRIPT
script1  script che mostra a video "Hello world!"
script2  script che cancella il file /tmp/pippo
script3  script che crea il file /home/pippo/myfile
 
Leggere il contenuto iniziale degli script o eseguirli con l'opzione --help per ottenere maggiori informazioni sul loro utilizzo.
</pre>
 
Successivamente bisogna convertire questo file:
<pre>
$ txt2man -v "versione 1.0" -s 1 -t IMIEISCRIPT imieiscript.manpage.txt > imiescript.manpage
</pre>
per ottenere il file <code>imieiscript.manpage</code> in formato troff.<br/>
Notare l'opzione '-v "versione 1.0"' che può essere omessa oppure modificata in base alla versione del pacchetto che si sta costruendo.<br/>
Si rimanda alla manpage di "txt2man" per maggiori informazioni sulla sintassi e i parametri utilizzati.
 
Prima di proseguire con la costruzione del pacchetto, è opportuno eseguire il comando:
<pre>
$ man -l imieiscript.manpage
</pre>
per visualizzare la manpage generata.
 
Il passo finale consiste nella creazione, all'interno della directory "debian", del file "manpages" contenente:
<pre>
debian/imieiscript.manpage
</pre>
Dopo la costruzione e installazione del pacchetto sarà possibile visualizzare la manpage nel consueto modo:
<pre>
$ man imieiscript
</pre>
 
{{Box|Nota|Benché sia possibile cancellare il file di testo "imieiscript.manpage.txt", è consigliabile mantenerlo al suo posto in caso di future modifiche della manpage.}}


{{Autori
{{Autori
3 581

contributi