Di recente, noi della redazione,  ci siamo trovati a confrontarci con alcuni utenti del mondo Linux, e nel parlare di quelle che sono le tipiche difficoltà dei neofiti (ma anche di persone non proprio alle prime armi) è emerso il fatto che compilare ed installare un programma a partire dal codice sorgente risulta spesso eccessivamente complicato e porta chi si cimenta nell’impresa a desistere e a fare a meno del software desiderato.

Quella che vi proponiamo oggi è una semplice guida che speriamo possa aiutare gli utenti a superare questa difficoltà e ad utilizzare in modo meno impacciato e più consapevole il proprio sistema. Come al solito, prima di cominciare è bene fare le dovute considerazioni:

Numero 1: il sistema di riferimento utilizzato è ancora una volta Debian 8.3, ma i passaggi che vedremo dovrebbero essere replicabili senza problemi su qualunque altra distro.
Numero 2: per estrarre l’archivio compresso che utilizzeremo durante la guida utilizzo, per semplicità, i comandi integrati in KDE, ma che dovrebbero essere presenti in forma piuttosto simile anche in altri desktop environment o possono essere eseguiti da terminale. Quest’ultima opzione però non sarà trattata in questa guida, ma verrà discussa in modo dettagliato più avanti con un articolo interamente dedicato ad essa.
Numero 3: purtroppo i passaggi che andremo a vedere non sono generali in senso assoluto, non tutti i programmi si compilano a partire dal codice sorgente nello stesso identico modo, ma vedremo comunque il caso che si presenta (almeno nella mia personale esperienza) più di frequente e ne discuteremo brevemente un altro che si vede altrettanto spesso, così da coprire la maggior parte delle possibilità.
Numero 4: come al solito, l’autore di questa guida non si assume responsabilità per eventuali malfunzionamenti derivati da un utilizzo scorretto della stessa. Detto ciò, possiamo cominciare:

Passo 1: Procurarsi l’archivio contenente i sorgenti.

La prima cosa da fare, ovviamente, è procurarsi il codice da compilare. Di solito il codice sorgente dei programmi viene reso disponibile al download tramite archivi compressi che possono avere diverse estensioni, come ad esempio: .tar.bz2, .tar.gz, .tar.xz, .tar.lz, .tar.Z ed altre. Spesso nel gergo dell’ambiente Linux (ma anche informatico in generale) ci si riferisce a questi archivi col nome di tarball. Nell’esempio di oggi il programma che andremo ad installare è il noto editor audio open-source Audacity, di cui ci siamo procurati l’archivio con il codici sorgente scaricandolo dal sito ufficiale, salvandolo nella nostra home:

guida-sorgente-1

Passo 2: Estrarre l’archivio

La naturale continuazione del passo precedente è l’estrazione dell’archivio appena scaricato. Come abbiamo spiegato all’inizio, questa operazione potrebbe essere effettuata tramite un comando apposito da terminale (che in questo caso specifico sarebbe: tar xJf audacity-minsrc-2.1.2.tar.xz), ma non approfondiamo l’argomento in quanto, come già anticipato, pubblicheremo in seguito una guida dettagliata sulla gestione degli archivi compressi e sul comando tar, quindi ci limitiamo ad estrarre il contenuto del nostro file utilizzando il comando apposito menu contestuale del nostro DE:

guida-sorgente-2

Una volta completata l’estrazione dovremmo notare una nuova cartella con lo stesso nome dell’archivio nella destinazione da noi scelta (che qui per semplicità abbiamo mantenuto la cartella home):

guida-sorgente-3

Passo 3: Verificare se ci sono istruzioni per la compilazione

Non ci resta altro da fare che entrare nella cartella che abbiamo appena estratto dall’archivio e controllarne i contenuti. Una volta all’interno è buona prassi controllare subito se è presente un file di testo che porta il nome di “README.txt” e, in caso affermativo, aprirlo ed andare alla ricerca delle istruzioni per la compilazione e l’installazione. In questo caso siamo stati fortunati ed il suddetto file era presente:

guida-sorgente-4

Una volta aperto, dopo un po’ di scrolling selvaggio abbiamo trovato le istruzioni cercate:

guida-sorgente-5

NOTA BENE: purtroppo il suddetto file non è sempre presente oppure non fornisce le istruzioni per compilare ed installare il programma e ciò porta spesso gli utenti meno testardi lasciar perdere. Ed è qui che vogliamo cercare di dare una svolta alle cose: se il file citato in precedenza non fosse presente, ci si possono presentare due situazioni diverse, vediamo insieme come gestirle:

Caso 1: Nella cartella è presente uno script bash chiamato “configure” ed in questo caso ci basta seguire la guida così com’è.
Caso 2: Lo script precedente non c’è, ma ne vediamo un altro chiamato “autogen.sh“. Tutto quello che è necessario fare consiste nel lanciarlo e verificare che dopo l’esecuzione di tale script sia presente il file “configure” del caso 1 e proseguire con i passi successivi.

Passo 4: Provare a compilare e risolvere le dipendenze

La prossima operazione richiede un minimo di preparazione. Compilare programmi dal codice sorgente richiede sempre, o quasi, che vengano risolte le dipendenze richieste da diversi pacchetti. Un buon modo per togliersene di torno diverse è quello di installare, tramite il proprio gestore, il pacchetto build-essential, il quale ci permette di avere una buona collezione di software che altrimenti ci verrebbero richiesti più avanti.

Per gli utenti Debian/Ubuntu il comando è il seguente:

$ sudo apt-get install build-essential

A questo punto tutto quello che dobbiamo fare è aprire il terminale nella nostra cartella di lavoro e lanciare il comando:

$ ./configure

Se tutte le dipendenze sono soddisfatte in pochi secondi lo script concluderà la sua esecuzione e potremo passare oltre, ma se così non fosse (come è successo a noi) troveremo un messaggio di errore o di segnalazione della mancanza di alcuni pacchetti necessari.

guida-sorgente-6

Sarà quindi nostra premura installarli per poter andare avanti. Questa è la fase che purtroppo non ha mai una procedura standard, infatti i pacchetti mancanti potrebbero essere installabili semplicemente tramite il gestore dei pacchetti oppure potrebbe essere necessario installarli a mano. In ogni caso è buona prassi effettuare una breve ricerca su google per capire precisamente cosa installare e tenere conto che lo script ci comunica sempre tutto quello che serve, e che se fosse necessario installare qualcosa compilandone il codice sorgente adesso avete una guida su come fare 😉 . Una volta soddisfatte tutte le dipendenze basterà lanciare nuovamente lo script “configure” e questa volta tutto dovrebbe funzionare a dovere.

 Passo 5: Compilare

Il penultimo passo da affrontare è quello della compilazione vera e propria. Come abbiamo visto nei passi precedenti tutto quello che dobbiamo fare è lanciare il comando:

$ make

Se tutto va secondo i piani make compilerà tutto, operazione che potrebbe richiedere anche diversi minuti. In caso contrario basterà risolvere uno alla volta i vari errori googlando ed installando il software richiesto.

Passo 6: Installare

Una volta conclusa la procedura di compilazione l’ultima cosa che resta da fare è l’installazione. Possiamo effettuarla tramite questo comando:

$ sudo make install

Salvo imprevisti a questo punto il nostro programma dovrebbe essere installato e pronto all’uso. Se invece qualcosa durante l’esecuzione del comando non dovesse funzionare, possiamo cercare all’interno della cartella uno script col nome del programma e, se presente, possiamo utilizzarlo per lanciare il nostro software.

La nostra guida si conclude qui. Speriamo di esservi stati utili e di avervi fornito un metodo il più generale possibile per poter compilare ed installare i vostri programmi preferiti anche manualmente. Vi ricordiamo che questa guida non ha la pretesa di essere esaustiva in senso assoluto, ma dovrebbe comunque coprire una grossa fetta delle casistiche possibili. Se avete dubbi o domande da porci non esitate a lasciarci un commento!

  • Su Debian e Ubuntu, al posto di sudo make install è consigliabile usare sudo checkinstall. In questo modo il programma potrà essere gestito (e rimosso) da apt

    • gdb

      sottoscrivo e il pacchetto deb sarà riutilizzabile nelle altre macchine (deb-based) risparmiando il tempo di compilare nuovamente tutto

  • Powerbit

    Grazie, ottima guida!

  • Guapos

    Chiedo scusa per l’OT, ma mi piacerebbe sapere il nome di quel “widget”(passatemi il termine) sulla destra dei vari screenshot, che monitora il sistema

    • Emanuele Cavallaro

      Conky

    • Leonardo Bertazzolo

      E’ un tema per superkaramba che si chiama semplicemente system monitor 🙂

  • Io nn voglio compilare voglio installare…

    • loki

      avanti → avanti → (spyware) → avanti → installa?

      • …in Windows è come dici tu, in Linux molto molto molto molto molto meno…

        • loki

          se si comincia a prendere l’abitudine di scaricare precompilati da chissà dove e chissà chi il passò sarà breve…

          • …nel mio caso intendo scaricare precompilati da un sito fidato, un produttore o uno sviluppatore serio, io stesso nei miei precompilati non metto nulla di cattivo perché amo la giusta sicurezza e quindi rispetto l’utente che scarica i miei software, come del resto anche chi naviga i mio sito perché non troverà nemmeno il ricordo di un banner pubblicitario.

          • Giacomo

            scrivi software libero? di che genere? metti a disposizione precompilati per molte distro diverse? il tuo sito?

          • Si, scrivo software libero, il mio sito è http://www.rinorusso.it alla pagina applicazioni trovi le applicazioni e i sorgenti li trovi su github, faccio meglio che posso.

          • Aster

            complimenti non lo conoscevo,ottimo lavoro e auguri
            p.s. una domanda usi wordpress perche e gratuito o hai preferenze?

          • Ti ringrazio, uso wordpress perchè è molto semplice, completo, adattabile a qualsiasi esigenza ed è open.

          • Aster

            capisco un amico mi ha chiesto di aiutarlo a mettere a posto il suo sito web modesto e ho visto che la fatto con wordpress e poi su aruba per questo te lo chiesto

  • Giacomo

    [segue opinione personale]
    L’articolo riassume la procedura per compilare un programma quando tutto va bene: configure make e make install, ma al 99% le cose non mi sono mai andate così e in questi casi un principiante si trova immerso in un bagno di sangue e difficilmente riesce nell’istallazione, trovandosi alla fine piuttosto scoraggiato.
    E’ bene che i sorgenti siano a disposizione e che qualcuno ogni tanto li provi e li esamini, ma di fatto se il software è già pronto per la mia distro, installare da pacchetto già pronto è molto piu’ veloce. Il sorgente a volte vado a leggerlo (ma piu’ per imparare che per cercare tracce di malware).

    • Leonardo Bertazzolo

      Ciao Giacomo, sono d’accordo con te, se sono disponibili pacchetti precompilati da fonti affidabili per la propria distro è sempre meglio utilizzare quelli piuttosto che mettersi a compilare tutto da 0, la guida infatti nasce come supporto nei casi in cui questo non è possibile, forse questo punto non è molto esplicito nell’articolo, ma non ho scritto da nessuna parte, e non è mia opinione, che sia meglio compilarsi da sé tutto quanto piuttosto che utilizzare i pacchetti pronti. Bisogna considerare però che tante volte i pacchetti precompilati per certe distro non sono disponibili e questa è l’unica via praticabile per poter utilizzare certi software, e perchè farne a meno se con un po’ di sforzo li si può avere?

    • Fabrixxossidedotnet

      Esatto, la maggior parte delle volte occorre fixare mancanza di librerie, creare nuovi link simbolici, compilarsi dipendenze non abbastanza aggiornate interpretare gli output di errore, la volte che va bene al primo colpo sono praticamente zero. Bisogna saper affrontare uno dopo l’altro i vari errori e fare anche ricerche sull’output per trovare casi simili senza scoraggiarsi. E’ importante poi sapersi fermare quando l’installazione /modifica di librerie o pacchetti rischia di rendere instabile il sistema e sarebbero richiesti interventi più profondi…In generale sapere cosa si sta facendo..

No more articles