jump to navigation

Compilare con Ubuntu: 3) checkinstall

In Facili, o quasi :), Guide il 1/12/06 @ 11:56 trackback

In questo terzo “episodio” mi avventuro al di fuori del protettivo e comodo mondo di APT per mostrare un esempio di installazione di sorgenti nella “vita reale”.

Per capire e magari mettere in pratica questo post dovete necessariamente leggere e “accettare” le altre guide della stessa categoria, che sono tutte propedeutiche a questa.

Se vogliamo compilare un’applicazione che non è disponibile nei repository Ubuntu oppure abbiamo bisogno di una versione più recente… Insomma se proprio non abbiamo altra scelta che quella di compilare e installare sorgenti non “debianizzati”, c’è un potente alleato che ci aiuta ad evitare di sporcare troppo la nostra /usr

Checkinstall

Normalmente la procedura di installazione che trovate superficialmente descritta in molti file README o INSTALL distribuiti con i sorgenti si limita a recitare:

1 ./configure
2 make
3 make install <- noi qui useremo checkinstall invece

Beh come abbiamo visto in passato, c’è molto di più di quei tre comandi :) Abbiamo già affrontato i problemi legati ai primi due passi, come la ricerca/installazione di tutto ciò che serve per fare andare a buon fine la compilazione, e spero che adesso grazie a quelle indicazioni ci sia molta più gente in grado di risolvere dipendenze mancanti e roba del genere.

Checkinstall funziona e interagisce con i gestori dei pacchetti delle maggiori distro: rpm di Red Hat e derivate, dpkg di Debian e derivate, installpkg di Slackware

Quelle indicazioni restano sempre validissime, oggi ci occupiamo in particolare del terzo passaggio: quel “make install” che copia i vari file dell’app da voi compilata nel filesystem, ossia l’installazione vera e propria.

Prima di tutto installiamo checkinstall:

$: sudo apt-get install checkinstall

L’uso è abbastanza elementare e c’è poco da spiegare: la prossima volta che capiterà di installare una qualsiasi applicazione, invece di dare

$: sudo make install

daremo:

$: sudo checkinstall

Il risultato sarà lo stessissimo. I vantaggi sono che checkinstall però non si limita a copiare i file, ma ne tiene traccia e ricorda quali ha installato. C’è di più: tutte le informazioni di checkinstall vengono passate direttamente al nostro gestore di pacchetti, Checkinstall infatti funziona e interagisce con i gestori dei pacchetti delle maggiori distro: rpm di Red Hat e derivate, dpkg di Debian e derivate, installpkg di Slackware.

Questo significa che se in un secondo momento volessimo disinstallare l’app favolosa ed eliminarne ogni traccia dal filesystem ci potremo affidare al nostro gestore di pacchetti, in Debian/Ubuntu disinstalleremo tutto con un semplice:

$: sudo apt-get remove applicazione_favolosa

O potremo usare direttamente dpkg, oppure …sì, da Synaptic!

Avvertimenti e osservazioni da tenere a mente

In caso di conflitti o problemi, dpkg “crepa” molto altezzosamente e si rifiuta di collaborare:

Checkinstall ha bisogno di un numero di versione anche “finto” per poter installare la vostra app. Per fornire il numero di versione basta che la directory dei sorgenti dell’app finiscano con un numero, ad esempio: Compiz-0.3.5. A questo punto basta ripetere il comando e tutto andrà a buon fine.

Checkinstall non tiene traccia delle dipendenze necessarie alla compilazione e nemmeno all’esecuzione dell’app, per cui se passate a qualcuno un deb creato con checkinstall, questo qualcuno dovrà sbrigarsela lui con le dipendenze necessarie.

Un’app installata con Checkinstall si comporta come un qualsiasi pacchetto DEB non ufficiale, come quelli che si trovano spesso in repository esterni, pertanto ha un alto grado di probabilità di risultare incompatibile con altri pacchetti già installati o con futuri aggiornamenti. In questo caso si può forzare l’installazione con un:

$: sudo dpkg --force-all nome-del-pacchetto_versione.deb

Ma state sempre attenti ad usare comandi del genere, perché forzare le cose non è mai una buona idea.

E questo non si applica solo al software :)

Condividi questo articolo:

  • FriendFeed 
  • TwitThis 
  • Facebook 
  • Badzu 
  • LinkedIn 
  • Google 
  • del.icio.us 
  • Wikio IT 
  • DiggIta 
  • Technotizie 
  • OKNotizie 

Pagine forse correlate:

Etichette:

Commenti »

1. coobox - 1/12/06 @ 12:01

Bravo Felipe.

Facevo così da tempo ma nn tutti conoscono la procedura, con questo post penso che molti faranno un bel sorrisone :-)

2. Bigshot - 1/12/06 @ 12:22

sinceramente nel passato per me checkinstall è stato molto ma molto utile.. e qualche volta anche in questi giorni :D

3. whitenoise - 1/12/06 @ 13:04

ottimo articolo felipe!

4. visik7 - 1/12/06 @ 13:13

non fatelo vi prego fate il pacchetto lo so che e’ + difficile + lungo e + laborioso ma vi prego non sminchiate i vostri sistemi con checkinstall

5. coobox - 1/12/06 @ 13:21

visik xkè dici questo ? a me nnha mai sminkiato nulla

6. italyanker - 1/12/06 @ 13:35

Bè…bel metodo…Non lo conoscevo!

@coobox: anch’io ho sorriso quando ho letto! :D

@visik7: Esperienze traumatiche??? ;D

7. Bigshot - 1/12/06 @ 13:43

@visik7
ti dirò.. siamo sinceri.. il 99% delle volte in cui un sistema si sputtana per delle isntallazioni alla “cavolo” (usiamo parole soft) non è colpa del package manager o di compilatori o di aiuti tipo chackinstall e tanto altro…
il fatto è che di solito i casini sono provocati dalal disattenzione, dall’inesperienza e dalla stupidità di chi fa lo smanettone con il pici…

ora non dico questo di te :D
magari te sei 1%, anzi, lo spero proprio, ma non per questo dire certe cose quando il consenso unanime parla chiaro…

8. NoWhereMan - 1/12/06 @ 13:48

aggiungerei fakeroot.
sudo fakeroot checkinstall
e chi s’è visto s’è visto :)

9. sbaush - 1/12/06 @ 14:54

eh checkinstall è molto potente!! Io lo usavo molto per compilare le beta di gaim quando ero sotto gnome…
Qui da Kubuntu ancora non mi è mai capitato!
Grande Felipe!

10. |_NiGhTmArE_| - 1/12/06 @ 15:52

molto comodo checkinstall e cmq ancora più comodo se il configure si lancia con auto-apt

le mie fasi sono queste
auto-apt run ./configure
make
sudo checkinstall
:)

11. ClaudioT. - 1/12/06 @ 16:25

Visik7 ha ragione.
checkinstall è un buon metodo per poche compilazioni (uno, due programmi… tre al massimo), se si hanno molti pacchetti personalizzati è di gran lunga meglio (e anche più elegante) creare un archivio deb (o rpm o tgz) con i metodi canonici come descritto dalle specifiche dei formati.
I motivi per cui, se abusato, diventa un cattivo metodo sono tre: checkinstall non tiene traccia delle dipendenze, in un sistema con molti pacchetti creati con checkinstall l’update potrebbe non essere eseguito correttamente e portare a malfunzionamenti dei programmi già installati (non si sputtana il db dei pacchetti, ma il sistema diventa inconsistente); checkinstall si appoggia a installwatch che non sa veramente distinguere quali files provengano dall’installazione e quali siano estranei (il sistema potrebbe scrivere un file estraneo e questo verrebbe incluso); checkinstall si esegue con i privilegi di root, i pacchetti (in maniera ortodossa) si dovrebbero creare senza essere amministratore.

12. cantor - 1/12/06 @ 17:17

Ciao,
Ho usato la mia installazione slackware su -current con checkinstall per quasi 2 anni senza nessun problema, ne sono quindi un testimonial convinto e contento :D.

Quanto alle dipendenze beh, un mio amico direbbe “benvenuti nel lo sporco mondo slackware” ;)

13. OOpabloOO - 1/12/06 @ 18:41

Sarà, ma io continuo a preferire un semplice:

dh_make
./configure
debuild binary

e in un attimo ho il pacchetto bello e pronto :)

14. felipe - 1/12/06 @ 19:08

@OOpabloOO:
Non noti una certa progressione nei miei post su come compilare? Arriveremo anche al nirvana… non temere e abbi fede ;)

15. OOpabloOO - 1/12/06 @ 19:48

eheheh, potrebbe essere la prossima puntata allora :P
A dire il vero, prima di scoprire sti script sgobbavo come un somaro creando a mano i vari file dentro debian/
Diciamo che con sti script il mio nirvana l’ho quasi raggiunto :D

PS: Complimenti per il blog ;)

16. davido - 5/02/07 @ 18:11

felipe, c’è qualcuno che aspetta trepidante la puntata sul nirvana….:)

17. Andrea - 10/03/07 @ 19:57

ho datto un occhiatina al PC-BSD e la possibilità di creare i file di installazione .pbi
senza preocuparsi per le dipendenze. Lavoro ben fatto. Qualcuno mi sa dire se qualcosa del genere puo un giorno succedere nel mondo Linux, in povere parole
di installare questi paccheti senza rotura di co….(se esiste un progetto simile)
grazie mile
ps. uso Ubuntu 7.04

18. Me - 28/03/07 @ 23:49

Magari ci fosse per PC-BSD lo stesso interesse rivestito per Linux.
Allora si che MacOSX avrebbe davvero qualcosa da temere!

Caro Andrea, finchè usi, come pcbsd ti fa fare con i .pbi, i pacchetti proprietari della distribuzione Synaptic sarà il tuo fedele compagno, ma in PCBSD come nel pinguino avrai di che sgobbare con le dipendenze per usare software di terze parti :)

19. Compilare...cosa e come? « caccolangrifata’s wall - 25/04/07 @ 15:39

[...] del programma da installare e lanciare i tre comandi. Rimando a una guida davvero ottima su Pollycoke. La strada più ardua da seguire è quella di creare un pacchetto deb tramite dh_make. Come prima [...]

20. notoriousxl - 16/05/07 @ 12:26

Nel caso la directory dei sorgenti non riporti il numero di versione, si può, in alternativa al cambiare nome alla directory, usare la seguente opzione di checkinstall:
–pkgversion [numero]
Può capitare inoltre che diversi programmi usino lo stesso nome per la directory dei sorgenti; per evitare di sovrascrivere pacchetti già installati, può tornare utile specificare anche il nome del pacchetto che si andrà ad installare:
–pkgname [nome]
(ho usato queste opzioni per installare tcl e tk - entrambi avevano il configure dentro la directory unix)

21. giovanni recchia - 13/08/07 @ 17:55

Ho installato pidgin senza checkinstall, per la fretta.
Come faccio ad eliminare tutto quello che ha copiato?

22. PaceyIV - 4/10/07 @ 18:37

in genere i sorgenti vengono accompagnati oltre ke da una procedura di “install” anke da una di “uninstall”, rispettivamente make install e make uninstall.
quindi ti dovrebbe bastare lanciare il comando sudo make uninstall all’interno della cartella dei sorgenti da cui hai installato pidgin

(commentando accetti implicitamente le Regole di pollycoke, leggile!)