Nell’ultima lezione di questo corso sulla creazione e compilazione di un sistema Linux da zero, avevamo installato tutto il necessario di una LFS ed avevamo un sistema pulito basilare per poter iniziare a compilare la nostra nuova distribuzione Linux. Ora continuiamo il corso con la scelta del formato dei pacchetti di installazione da adottare per la nostra nuova distribuzione, compreso il package manager associato, questa è una scelta molto importante che ci condizionerà per il futuro.
- RPM ( Red Hat Package Manager ) – è utilizzato da decine di distrubuzioni a cominciare da Fedora, Mandriva e molte altre; il package manager è l’omonimo rpm a riga di comando, mentre Yum o PackageKit visuale. Il database è il cuore del sistema rpm, infatti al suo interno vengono registrate tutte le informazioni relative ai singoli pacchetti installati sul sistema. Oltre che ad installare, aggiornare e rimuovere, tramite rpm si può accedere alle informazioni contenute nel database con l’opzione -q ( query ), quindi per sapere se un pacchetto si trova nel database dobbiamo dare il comando rpm -q openssh ad esempio. Ma si può fare ancora di più, per ottenere l’intera lista dei pacchetti installati nel sistema, basta utilizzare l’opzione -qa come in rpm -qa > elenco-pacchetti.txt oppure per avere la lista di quelli che hanno “open” nel nome rpm -qa | grep ‘open’. Questo package manager è molto duttile, ma lo trovo complicato per la creazione dei pacchetti, quindi non lo useremo nel nostro corso.
- DEB – sviluppatosi inizialmente con la distribuzione Debian ed oggi utilizzato anche da Ubuntu e tante altre, ha come package manager dpkg; Adept o Synaptic visuale. L’uso di dpkg è semplice, ad esempio per installare un pacchetto si utilizza l’opzione -i, per rimuoverlo -r. Più pratico è l’utilizzo di APT ( Advanced Packaging Tool ) o meglio del programma apt-get ( APT package handling utility ), infatti, tramite questa interfaccia, con pochi comandi, è possibile scaricare pachetti ed installarli o rimuoverli o aggiornarli. Per installare un pacchetto occorre utilizzare l’opzione install seguita dal nome del pacchetto, dopo la verifica delle dipendenze il programma installerà il pacchetto e tutti quelli dipendenti in maniera automatica. Per rimuovere un pacchetto si usa l’opzione remove. Per rimuovere anche le dipendenze che non servono più, meglio inserire autoremove. Anche se lo ritengo migliore di rpm, questa pacchettizzazione non risulta di facile utilizzo per la nostra distribuzione e quindi la scarto.
- TGZ – è il formato più semplice, infatti è soltanto un file compresso con tar e gzip. Ci sono molte distribuzioni che usano questo semplice sistema tra cui Gentoo, ArchLinux e Slackware. In particolare Gentoo ed ArchLinux funzionano in maniera simile, difatti scaricano i sorgenti dal portage per Gentoo con emerge e direttamente dai siti su cui vengono sviluppati i pacchetti sorgente, ai quali poi si installano le patch, per ArchLinux con pacman. Slackware invece presenta un package manager vero e proprio, che si chiama pkgtools e che consente di installare, aggiornare e rimuovere i pacchetti a riga di comando, ma non mancano gli strumenti visuali per questo package manager; oggi c’è anche la possibilità della gestione delle dipendenze. Creare pacchetti con questo strumento è semplicissimo e dato che a me piace tanto la semplicità, sceglierò proprio questo sistema di pacchettizzazione per la nostra distribuzione.
Oltre a quelli citati sopra ci sono anche delle soluzioni alternative come Klik, Smart o altri, ma sono difficoltosi nell’uso e quindi non le sceglieremo. Nella nostra distribuzione quindi avremo i pacchetti .tgz gestibili con pkgtools e creati a partire dai sorgenti recuperati tramite wget direttamente dai siti di sviluppo ( come opera anche ArchLinux ) ed una volta applicate le patch necessarie verranno compilate per creare il pacchetto di installazione. Per la compilazione e la creazione dell’ambiente di sviluppo, possiamo usare sia una LFS come descritto finora, oppure installare una Slackware, che è anche più semplice.
Nella prossima lezione quindi, creeremo l’ambiente di sviluppo con directory, template e script della shell, iniziando proprio a creare il pacchetto pkgtools.
<< Lezione Precedente – Inizio Tutorial – Lezione Successiva >>
Scusa una domanda se volessi implementare nella mia distro, APT “Advanced Packaging Tool ” e dpkg. Vorrei poter usare i pacchetti .deb.
Ho cercato su Google ma non trovo nulla al riguardo…
Se qualcuno può venirmi in aiuto sarebbe cosi gentile da indicarmi delle risorse al riguardo?
Ciao, dovresti guardare nei siti in Inglese e cercare ad esempio “How to create dpkg package”.