Creare un pacchetto per Slackware

Slackware è una buona distribuzione, purtroppo però non ha un sistema di gestione dei pacchetti come apt o yum.

Certo, compilare i sorgenti a mano non è dfficile, però può essere noioso dover tener traccia di tutti i file creati da ogni singolo sorgente per poi poter procedere alla sua rimozione manuale.

Esistono delle soluzioni, una di queste è checkinstall, ma sul forum ufficiale consigliano di non utilizzarlo poichè a lungo andare dà qualche problema.

Vediamo allora come procedere alla creazione manuale di un pacchetto per Slackware.

Supponiamo di voler installare il programma nmap (un potente scanner di porte). Cominciamo con lo scaricare i sorgenti dal sito ufficiale.

wget http://nmap.org/dist/nmap-5.21.tar.bz2

Una volta scaricati i sorgenti, apriamo un terminale ed estraiamoli con il seguente comando.

tar -xvjf nmap-5.21.tar.bz2

notiamo che ho utilizzato l’opzione -j perchè il file è compresso con bunzip, se fosse stato compresso con gzip avrei dovuto usare -z. Per altri formati si usano altre opzioni.

Adesso eseguiamo in sequenza le seguenti operazioni:

mkdir temp
cd nmap
./configure
make
make install DESTDIR=/home/UTENTE/temp

Analizziamo quello che abbiamo fatto: abbiamo creato una cartella che ci servirà solo temporaneamente, ci siamo spostati nella directory dove abbiamo estratto nmap e poi abbiamo eseguito i tre comandi canonici per compilare un sorgente (da notare comunque che non tutti i sorgenti utilizzano un formato che va bene per questi tre comandi, tuttavia questo funzionerà nella stragrande maggioranza dei casi).

Come noterete, però, abbiamo inserito una piccola variante al momento del make install. Infatti abbiamo specificato come directory di destinazione quella che avevamo creato prima. Se adesso guardiamo dentro la directory temp, ci accorgeremo che sono presenti una serie di file che seguono la stessa struttura dell’intero filesystem. Un pacchetto Slackware non è altro che un un file compresso con all’interno la stessa struttura delle cartelle del filesystem, così quando il file viene decompresso ogni singolo file si ritroverà al suo posto.

Non ci resta che creare il pacchetto con la seguente sequenza di comandi:

cd ~/temp
su -
makepkg -l y -c n /tmp/nmap-5.21-x86_64.tgz

Attenzione al fatto che per essere sicuri che i file siano tutti al loro posto è necessaria una shell di login per l’utente root e quindi il comando su deve necessariamente essere seguito da ““. Adesso possiamo installare il pacchetto con:

installpkg /tmp/nmap-5.21-x86_64.tgz

ed ecco che quando lo andremo a rimuovere col comando removepkg, tutti i file saranno rimossi corettamente e avremo supplito alla mancanza in Slackware din un più “evoluto” gestore di pacchetti.

Un ultimo appunto riguardo alla formattazione del nome del pacchetto. Il nome del pacchetto, se vogliamo fare le cose per bene, va formattato così: NOME-VERSIONE-ARCHITETTURA.tgz. Seguendo questa sintassi, il sistema sarà in grado di riconoscere pacchetti relativi allo stesso programma quando in futuro vorrete ad esempio aggiornarne uno con upgradepkg.

Buona pacchettizzazione.