jump to navigation

Compilare con Ubuntu: 1) apt-get build-dep

In Articoli, Guide e HowTo, Facili, o quasi :) il 22/10/06 @ 15:09 , trackback
0 votes, average: 0 out of 50 votes, average: 0 out of 50 votes, average: 0 out of 50 votes, average: 0 out of 50 votes, average: 0 out of 5 (media: 0, identificati e vota!)
Loading ... Loading ...

di felipe

Questa guida si ispira ad una delle primissime cose scritte per pollycoke: il post “Compilare con Debian“, che a sua volta era un approfondimento al post “Compilare sorgenti“. Prima di cominciare a fare qualsiasi cosa quindi vi chiedo di leggere quelle due guide: contengono nozioni indispensabili.

Ok, da ora in poi do per scontato che sappiate cosa siano, a cosa servano e come si usino i vari configure, autogen.sh e make. Procediamo:

La prima cosa da fare per rendere una Ubuntu pronta a compilare è installare i pacchetti essenziali alla compilazione:

$: sudo apt-get install build-essential

Quello è in realtà in “metapacchetto”: non contiene nient’altro che dipendenze da altri pacchetti, così installandolo avremo make, autotools e altre cose utili.


Nel post “Compilare sorgenti” (lo avete letto, vero?) spiegavo cosa sono gli header, e i pacchetti di sviluppo e come fare più o meno a capire quando ce ne serve uno. Facciamo un caso specifico e vediamo come mi comporto in genere io. L’esempio me lo fornisce un utente che ha commentato una mia guida contravvenendo ad una delle regole di Pollycoke (incollandomi il suo errore tra i commenti). Normalmente avrei eliminato il suo commento ma oggi lo lasciamo perché ci serve :-)

Bene, aprite, magari in una nuova pagina, il commento che trovate qui e leggetelo. Si tratta dell’errore kilometrico che è spuntato dopo aver dato make senza avere i giusti requisiti installati sul sistema. Notate le righe come queste:

state.c:27:20: error: compiz.h: No such file or directory
state.c:29:18: error: glib.h: No such file or directory
state.c:31:22: error: X11/Xlib.h: No such file or directory
state.c:32:23: error: X11/Xutil.h: No such file or directory
state.c:33:23: error: X11/Xatom.h: No such file or directory

Indicano appunto che mancano quei file.h, ossia gli header. Lo scopo di questa guida è fornire alcuni consigli per districarsi con APT e recuperare tutto ciò che serve a compilare. Per la cronaca: l’utente stava cercando di compilare un plugin aggiuntivo per compiz.

Come usare apt-get build-dep

Questa è sempre la prima prova che si dovrebbe fare quando si vuole compilare qualcosa. APT nella sua immensa provvidenza *sa* cosa serve per compilare qualsiasi pacchetto che stia dentro i repository di APT, quindi generalmente basta chiedere a lui. Controllate che nel vostro sources.list i repository deb-src non abbiano un # davanti, le linee deb-src devono apparire più o meno così:

deb-src http://it.archive.ubuntu.com/ubuntu dapper universe bla bla bla …

Se così non fosse togliete il # davanti a deb-src, e già che ci siete abilitate i repository universe e multiverse (se non lo avete già fatto), togliendo il # dalle righe deb e deb-src che contengono le parole “universe” e “multiverse”, appunto. Salvate il file

Prima di avere a che fare con APT è sempre bene aggiornare il database. Date il comando:

$: sudo apt-get update

Ok, adesso risolviamo il caso specifico. Abbiamo detto che l’utente voleva compilare un plugin per compiz, quindi dobbiamo essere sicuri che il nostro sistema sia in grado di compilare Compiz. Siamo fortunati perché questo trucchetto funziona sono con software che è nei repository ufficiali, come appunto Compiz.

Bene, stiamo per fare la seguente domanda ad APT:

Per favore, o grande APT, benevolo amico dell’utente più impacciato ma allo stesso tempo intrepido alleato del guru più smaliziato, mi installi tutto quello che dovrei installare per poter compilare Compiz?

Tradotto in comandi:

$: sudo apt-get build-dep compiz

Nota: individuare il nome può essere un casino in certi casi. Ci sono mille pacchetti che si chiamano compiz-qualcosa ma l’unico contenuto nei repository deb-src di Ubuntu è compiz e basta.

A questo punto APT risponde una cosa del genere:

I seguenti pacchetti NUOVI (NEW) saranno installati:
lunga serie di pacchetti
lunga serie di pacchetti
lunga serie di pacchetti
0 aggiornati, 666 installati, 0 da rimuovere e 0 non aggiornati.
È necessario prendere 1kB di archivi.
Dopo l’estrazione, verranno occupati totMB di spazio su disco
Continuare [S/n]?

Perfetto, ovviamente rispondiamo sì e alla fine del lavoro di apt saremo in grado di compilare compiz! :-)

Pagine forse correlate:

Etichette:

Commenti »

1. loopback - 22/10/06 @ 16:07

Tutto questo funziona alla perfezione, a patto di avere un hard disk sano & funzionante… (questa la capiscono solo i 4 gatti presenti su #linux-help qualche sera fa)

2. Shuren - 22/10/06 @ 17:39

miao!

3. felipe - 22/10/06 @ 19:28

cacchio io non c’ero!

voglio i log

4. loopback - 22/10/06 @ 20:40

Per farla breve, ti ricordi che qualche sera fa ero venuto su #linux-help chiedendo lumi sul perche’ sulla mia edgy gli autotools non funzionassero? Beh, la sera dopo ho sentito due sviluppatori ubuntu che io ho la fortuna di conoscere e loro la sfiga di conoscermi e alla fine grazie ad un -f dato ad strace abbiamo trovato (a dire il vero l’ha trovato uno dei due di ubuntu, visto che il -f l’aveva suggerito lui) il file .m4f incriminato, che e’ risultato essere illeggibile. Morale della favola disco fisso nella pattumiera e xx euro in meno nel mio portafoglio (xx perche’ non ho ancora deciso che disco comprare).

5. felipe - 22/10/06 @ 20:42

wow, ma il danno al disco dovuto a cosa? io ho un HD da 8GB risalente a tipo 10 anni fa e ancora rulla…

da lui sono passate tutte le distro di cui parlavo nella mia recente topten :D

6. loopback - 22/10/06 @ 20:58

Disco fisso da 40GB Toshiba da 2.5″ del portatile. Ho dato un badblocks -b 4096 e me ne ha trovati una trentina di blocchi corrotti. La cosa strana e’ che avevo installato Ubuntu la settimana prima, formattando le partizioni (tranne /home, ma il problema era su /). Con i dischi fissi di adesso se la scrittura su un settore fallisce viene automaticamente marcato come difettoso e il dato viene scritto in una posizione diversa, quindi quei 30 settori (quasi tutti in una zona contigua del disco) non avrebbero dovuto proprio esserci. Ovviamente il portatile viene trattato come un figlio e maneggiato con tutte le attenzioni del caso…

7. izzy - 22/10/06 @ 23:55

innanzi tutto chiedo scusa per aver violato una regola del blog, e ti ringrazio per questo post.

ma per cercare i pacchetti contenuti nei repo deb-src come si fa? in poche parole come faccio a vedere qual è il pacchetto?

8. felipe - 23/10/06 @ 1:04

@izzy:
Beh diciamo che mi hai dato lo spunto per scrivere una cosa che avrei dovuto spiegare da tanto tempo, quindi siamo pari :)

trovi i nomi esatti dei pacchetti con apt-cache search

ma spesso vale più l’intuito e un pizzico di esperienza, e poi il sistema è formidabile!

9. izzy - 23/10/06 @ 7:38

ah ok, quindi si fa allo stesso modo che con i pacchetti normali, con aptitude o con apt-cache :P

10. Compilare con Ubuntu: 2) apt-file « pollycoke :) - 6/11/06 @ 14:40

[...] In “Compilare con Ubuntu: 1) apt-get build-dep” vi avevo segnalato la bellezza e l’utilità di apt-get build-dep. Adesso vorrei svelarvi un altro segreto per riuscire sempre a trovare quello che vi manca per compilare qualcosa¹. Come sempre segnalo i post “propedeutici” e indispensabili per compilare su Debian/Ubuntu: “Compilare con Debian“, a sua volta era un approfondimento al post “Compilare sorgenti“. [...]

11. silvia - 30/01/08 @ 11:07

ciao! ho un ulteriore problema… non riconosce l’ header curses.h… sapreste dirmi come includerlo?

12. Maththias - 28/03/08 @ 14:34

Gli anni passano e per caso sono capitato qui.
Spero qualcuno si faccia a vanti a rispondermi!

Una domanda, la mia: ma vi è la possibilità di invertire il processo di build-dep?

Meglio, se installo tutte le dipendenze con quel comando e poi non compilo più il pacchetto, come fare per eliminare tutte le librerie -dev inutili che mi ha installato?

Vorrei proprio saperlo e confido in voi…

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