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

Installazione in /usr/local/bin
mNessun oggetto della modifica
(Installazione in /usr/local/bin)
Riga 6: Riga 6:
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/>
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.
'''È 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.
Se non si vuole utilizzare la directory "/usr/bin" per l'installazione dei propri script, e quindi evitando il problema dei nomi, leggere il paragrafo "Installazione in /usr/local/bin".<br/>
Il nome del pacchetto non è interessato da questo workaround, pertanto continua a dover essere scelto con estrema attenzione.


== Pacchetti da installare ==
== Pacchetti da installare ==
Per le operazioni che seguiranno sarà necessario installare alcuni pacchetti:
Per le operazioni che seguiranno sarà necessario installare alcuni pacchetti:
<pre>
<pre>
# apt-get install dh-make build-essential devscripts
# apt-get install dh-make build-essential devscripts fakeroot
</pre>
</pre>


Riga 267: Riga 270:
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>
== Installazione in /usr/local/bin/ ==
L'installazione in "/usr/bin/" è una pratica permessa ma altamente rischiosa in quanto il nome dei propri script potrebbe essere già "occupato" da altri eseguibili installati (o che verranno installati) nella stessa directory. Il pericolo è quello di andare a cancellare file con lo stesso nome oppure che installazioni di altri pacchetti vadano a cancellare gli script.
Per dormire sogni tranquilli è necessario spostare la directory di installazione da "/usr/bin" a "/usr/local/bin": quest'ultima directory, infatti, non conterrà mai alcun eseguibile proveniente da pacchetti ufficiali Debian.<br/>
Purtroppo, essendo una directory non molto ben vista da <code>debhelper</code> 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.
La procedura è uguale a quella descritta precedentemente, tranne che per i seguenti cambiamenti.
=== Il file install ===
Va cambiata la directory di installazione dei nostri script:
<pre>
script/* usr/local/bin/
</pre>
=== Il file rules ===
Aggiungere in fondo al file la seguente riga:
<pre>
override_dh_usrlocal:
</pre>
=== Il file postrm ===
Questo è il cambiamento più importante in quanto permetterà di ricreare la directory "/usr/local/bin" nel caso in cui venisse rimossa (se vuota) dopo la disinstallazione del pacchetto "imieiscript".<br/>
Bisogna prestare la massima attenzione a ricreare la directory con gli stessi permessi che aveva in precedenza, per cui è altamente consigliato eseguire un:
<pre>
$ ls -l /usr/local
...
drwxrwsr-x 2 root staff 4096 ott 15 11:39 bin
...
</pre>
prima della disinstallazione e controllare i permessi per l'utente/gruppo in modo da poterli ricreare in caso di rimozione.<br/>
In questo caso una creazione da parte di [[root]] della directory porterà a:
<pre>
...
drwxr-sr-x 2 root staff 4096 ott 15 12:05 bin
...
</pre>
come si vede, manca qualcosa: il permesso di lettura per il gruppo "staff".
Creare quindi il file "postrm" con questo contenuto:
<pre>
if [ ! -d /usr/local/bin ]; then
  mkdir -p /usr/local/bin
  chmod g+w /usr/local/bin
fi
</pre>
Se la directory "/usr/local/bin" non esiste, verrà ricreata e verrà assegnato il permesso di lettura al gruppo "staff".
=== Conclusioni ===
L'albero file/directory sarà simile a:
<pre>
pacchetti/
      └-- imieiscript-1.0/
                      ├-- debian/
                      |      ├-- changelog
                      |      ├-- copyright
                      |      ├-- compat
                      |      ├-- control
                      |      ├-- install
                      |      ├-- rules
                      |      └-- postrm
                      |
                      └-- script/
                              ├-- script1
                              ├-- script2
                              └-- script3
</pre>
Si noti che, durante la rimozione del pacchetto potrebbe venir mostrato il seguente messaggio:
<pre>
dpkg: attenzione: nel rimuovere imieiscript, la directory "/usr/local" è risultata non vuota e non viene rimossa
</pre>
Con cui "apt" ci avverte che è stata rimossa la directory "/usr/local/bin".<br/>
Niente paura: questa viene ricreata da "postrm" con i permessi originari:
<pre>
$ ls -l /usr/local
...
drwxrwsr-x 2 root staff 4096 ott 15 12:11 bin
...
</pre>


{{Autori
{{Autori
6 999

contributi