I gestori di pacchetti sono veramente belli, cari e utili: un paio di clickete-clack (si basti pensare ai .deb o agli rpm) e il nostro programma e bello e installato sul sistema. Peccato, però, che c’è chi di “pachettizzare” il programma creato in un formato riconoscibile da un gestore non ci pensa proprio, e tende a distribuirne il codice sorgente. Completo di makefiles, si, ma pur sempre codice sorgente.
Pa-pa-pa…panico, paura. E adesso?
- Domanda #1: come è fatto un archivio sorgente? Il tarball sorgente (da ora in poi lo chiameremo così) altro non è che un file compresso, che in genere ha estensione .tar.gz oppure .tar.bz2.
- Domanda #2: come si decomprime un tarball sorgente? Questo è a vostra discrezione: potrete usare il gestore grafico (click destro sull’archivio –> Estrai) oppure utilizzare il caro vecchio terminale, posizionandovi all’interno della cartella che contiene l’archivio e digitando “tar xovfz nome_archivio.tar.gz” oppure “tar xovfj nome_archivio.tar.bz2″ (in entrambi i casi senza virgolette).
Detto ciò non ci resta che vedere come, di fatto, si installa un programma di cui disponiamo soltanto del tarball sorgente. Supponiamo di averlo decompresso, estratto, e di esserci portati da terminale all’interno della directory in cui sono contenuti i files.
Sorgente con script di configurazione e Makefile
Diamo un ls da terminale: se il risultato dovesse contenere anche files come
configure, Makefile.in, configure.in, Makefile.am
allora possiamo utilizzare la procedura “standard”, quella che utilizza files di configurazione e makefiles. Tra un attimo vi spiego il perchè. Ora facciamo un attimo distinzione tra distribuzioni che supportano apt e distribuzioni che non lo supportano. Nel primo caso possiamo far gestire comunque ad apt buona parte dell’installazione del nostro programma, così da renderla quantomeno più “pulita” (due dei grossi vantaggi dell’utilizzo di apt è che in primis cerca di risolversi da solo le dipendenze, in secundis permette di disinstallare il nostro programma tramite il gestore pacchetti).
Quindi, in distribuzioni come Ubuntu, Debian, Mint e tutte le debian-based apriamo un terminale, e digitiamo
cd nome_programma sudo apt-get install auto-apt checkinstall sudo auto-apt run ./configure sudo make sudo checkinstall
Un minimo di spiegazione: nelle linee 1 e 2 andiamo a spostarci nella directory di interesse e ad installare auto-apt e checkinstall che ci saranno utili. Nella linea 3, invece, andiamo a lanciare lo script di configurazione del sorgente (quello che andrà a generare il Makefile e che effettua i controlli di compatibilità sul computer) sotto lo stretto controllo di apt: così, qualora dovesse mancare qualche dipendenza, auto-apt cercherà di risolverla in maniera completamente automatica. Se tutto è andato bene lo script di configurazione genererà un Makefile, che altro non è che il file che contiene le direttive da passare al compilatore per compilare il nostro programma, ossia per trasformare il codice sorgente in programma eseguibile. Questo avviene nella linea 4, quando andiamo ad invocare il comando make, che utilizzando il Makefile generato si occupa della compilazione del programma. Nella linea 5, invece, andiamo ad effettuare l’installazione vera e propria del nostro programma utilizzando il tool checkinstall, che permette di generare automaticamente gli script di disinstallazione e di inserire il programma installato all’interno del nostro gestore pacchetti.
In una generica distribuzione non apt-based, invece, il procedimento standard si ridurrebbe a
cd nome_programma ./configure su make make install
La sintassi dei comandi è del tutto simile a quella di sopra, con la differenza che non utilizzeremo apt per gestire lo script di configurazione e che non utilizzeremo checkinstall per gestirne l’installazione, piuttosto utilizzeremo il comando “make install”.
In realtà converrebbe sempre dare un occhio al file INSTALL (o al file README) presente all’interno della cartella dei sorgenti: io vi ho descritto una procedura standard, ma in quel file spesso e volentieri si trovano preziosissime informazioni che vi permettono di personalizzare il procedimento d’installazione per il vostro sistema (passando ad esempio dei parametri allo script di configurazione).
Altro file che potrebbe essere presente all’interno di una cartella sorgente è il file install.sh: questo, lanciato con i privilegi di root, in genere permette di eseguire tutta la procedura d’installazione in maniera semi-automatica. Solitamente ciò va bene, ma ci sono casi in cui il file install.sh si rifiuta di funzionare correttamente.
Sorgente con installer Python
Potrebbe capitarvi sottomani anche un bell’archivio sorgente di un programma scritto in Python, e di cui lo stesso installer è scritto in Python. Anche in questo caso dare un occhio al file INSTALL o al file README non sarebbe cosa malvagia. Chiaramente avrete bisogno di installare Python per gestire tali files. Gli installer in Python si riconoscono dalla presenza del file setup.py all’interno del tarball sorgente. In tal caso la procedura standard consiste nell’aprire un terminale, posizionarsi nella directory in cui è contenuto il sorgente e, per una distribuzione debian-based, digitare
sudo ./setup.py install
o altrimenti
su ./setup.py install
Altro file che potrebbe essere presente all’interno di una cartella di sorgenti python è il file install.sh: questo, lanciato con i privilegi di root, in genere permette di eseguire tutta la procedura d’installazione in maniera semi-automatica. Solitamente ciò va bene, ma ci sono casi in cui il file install.sh si rifiuta di funzionare correttamente.
Al momento non mi sovvengono altri tipi di sorgenti, se dovesse capitarvene uno diverso da quelli che ho menzionato… beh, non esitate a segnalarmelo!