jump to navigation

Compilare con Ubuntu: 7) apt-cache showsrc

In Avanzate, per Guru!, Guide il 6/02/08 @ 20:16 trackback

Compilare con Ubuntu - Pollycoke :)È passato un po’ di tempo dall’ultima volta che ho scritto indicazioni su come compilare sfruttando gli strumenti messi a disposizione da APT in Debian, Ubuntu e derivate. Vi presento dunque questa piccolissima chicca, spesso molto utile per chi è solito giocare con le budella della propria distribuzione :D

Poniamo il caso che abbiamo miscelato repository, sorgenti e binari, di differenti versioni di Debian o Ubuntu, come descritto nella guidaCompilare con Ubuntu: 6) Miscelare repository per avere pacchetti più recenti” e che vogliamo compilare una data applicazione di cui non conosciamo esattamente le dipendenze di compilazione. Come faremo a soddisfarle?


A causa del suddetto miscuglio di repository, il ricorso ad Apt-get Build dep di cui avevo parlato nella guida “Compilare con Ubuntu: 1) apt-get build-deppuò non bastare per un semplice motivo: se il pacchetto sorgente in questione ha delle dipendenze non incluse nel repository binario (quello alla versione corrente della distribuzione), APT si limiterà ad afflosciarsi nella tristezza. Questo vale anche se i pacchetti richiesti come dipendenze sono ad una versione troppo recente. Esempio:

$: apt-get build-dep kdemultimedia-kde4
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Build-Depends dependency for kdemultimedia-kde4 cannot be satisfied
because no available versions of package cdbs can satisfy version requirements

Che equivale grossomodo a qualcosa del genere:

felipe: APT-GET, stavo pensando… ma secondo te cosa serve per installare kdemultimedia-kde4?
APT-GET: te lo dico subito felì… serve esattamente… oh merda.
felipe: che c’è?!?
APT-GET: niente, è che… boh aspetta, ma…
felipe: uhm, se non lo sai niente, eh
APT-GET: ma no eppure… mi manca qualche maledetto indice :(
felipe: vabbè tranquillo ora mi arrangio
APT-GET: mi… mi spiace. forse posso cantarti una canzoncina?
felipe: no, sarà per un’altra volta
APT-GET: allora ti faccio la battuta della mucca, eh?
felipe: lascia stare, dai.

Per fortuna c’è un rimedio, magari un po’ più macchinoso, ma infallibile. Di solito lo uso solo se apt-get build-dep restituisce l’errore riportato sopra. Il rimedio si chiama apt-cache, e per l’esattezza il parametro “showsrc”. Esempio:

$: apt-cache showsrc kdemultimedia-kde4 | grep Build-Depends
Build-Depends: cdbs (>= 0.4.50), cdparanoia, cmake, debhelper (>= 5),
kdebase-workspace-dev (>= 4:4.0.1), kdelibs5-dev (>= 4:4.0.1), libasound2-dev,
 [...]

Come vedete ho accorciato la lista di dipendenze di compilazione e ho filtrato l’output di apt-cache con grep, lasciando passare solo la riga che ci interessa, ovvero “Build-Depends” (dipendenze di compilazione).

Una volta ottenuta questa lista di “build-depends” non resta altro da fare che controllare uno per uno i pacchetti indicati e installare quelli eventualmente non ancora disponibili nel sistema. Potrebbe esserci bisogno di installare pacchetti non ancora presenti

Dopo aver soddisfatto le dipendenze si può procedere con la compilazione come descritto nella “Compilare con Ubuntu: 6) Miscelare repository per avere pacchetti più recenti” che citavo prima. In ogni caso consiglio di leggere tutte le guide della serie (e magari la documentazione ufficiale di APT) prima di lanciarsi in esperimenti ;)


Pagine forse correlate:

Etichette:

Commenti »

1. finferflu - 6/02/08 @ 20:23

oddio, lo scambio con APT-GET mi ha fatto morire :D

2. ThE_RaY - 6/02/08 @ 20:37

post che ricorderò più per la conversazione FELIPE – APT che per il trick della compilazione

3. nonno - 6/02/08 @ 20:37

delizioso, bravo felipe :)

4. nonno - 6/02/08 @ 20:42

ps: tanto per ricordarlo a chi crede sia difficile, sulla hardy ho installato kd4 con sudo apt-get install kde4, e basta, fa tutto da solo, poi se uno vuole compilare e seguire felipe vuol dire che è bravissimo ;)

5. bricke - 6/02/08 @ 20:43

ahahahah.

Bravo…..

Mai pensato di scrivere un libro su ubuntu?

6. Fire - 6/02/08 @ 20:58

Scusate…la battuta della mucca qual’è??? ^_^

7. Pak - 6/02/08 @ 21:00

Geniale!

8. nessunohastonick - 6/02/08 @ 21:09

@ 6:

apt-get moo

9. ORGA - 6/02/08 @ 21:33

Non ho capito granché, ma il dialogo m’ha fatto rifee parecchio :D

10. crom - 6/02/08 @ 22:15

ahah il dialogo con apt e’ molto post-lsd ;)

11. Hoghemaru - 6/02/08 @ 22:28

la storia della mucca non la conoscevo… :)

ce ne sono altri di trucchetti di questo tipo? :D

12. Alex Palex - 6/02/08 @ 22:45

Bella guida che completa un ciclo molto interessante. Che ne diresti di metterlo su PDF e renderlo disponibile su una pagina del blog, accorpando tutte le varie puntate? Sarebbe di grande utilità per tutti e meno frammentario, secondo me.

Complimenti e saluti

13. Ecas - 6/02/08 @ 23:27

proponi a Quentin lo scambio con APT-GET e sicuramente ti scritturerà.. :D

14. Fale - 7/02/08 @ 3:30

ieri ho litigato con il mio apt… il mio non è così gentile… quando gli ho chiesto le dipendenze… mi ha mandato a quel paese…

15. Anansi - 7/02/08 @ 9:16

qui si rasenta la schizofrenia….

cmq le tue guide sono sempre ottime :-)

16. Marco - 7/02/08 @ 12:17

Ti ho mai detto che sei geniale Felipe??
Un Felipe-Pupazzeto sul comodino lo voglio!!!!!

Quand’è che lanci il merchandise???

17. ponciarello - 7/02/08 @ 14:47

grazie felipe della dritta utilissima :)

18. Sythenast - 7/02/08 @ 15:41

Questa dovrebbe andare tra i Post Imperdibili o negli IRC Logs e Perle Varie… stupendosa la conversazione con APT.

(__)
( oo )
/ ——\ /
/ | | |
* /\—/\
~~ ~~
…."Have you mooed today?"…

19. Sythenast - 7/02/08 @ 15:43

AAARGH!!! Povera mucca macellata da WordPress…

20. madbad - 7/02/08 @ 16:05

Sto ancora rotolando sotto la scrivania! :)

Bellissimo.

21. flyingecko - 7/02/08 @ 17:34

cerca su google apt-pinning

22. Treviño - 8/02/08 @ 4:38

Il tuo dialogo con APT mi ha fatto sbellicare… :P

Cmq forse usando qualcosa tipo un pipe aggiunto a quanto hai già scritto te, si può semplificare la cosa. Esempio:

apt-cache showsrc compiz | grep Build-Depends | cut -f2 -d":" | sed "s/ | [^ ]*//g;s/([^)]*)//g;s/[ ]*, / /g"

Questo ti butta fuori una lista delle dipendenze senza divisori che può essere data tranquillamente in pasto ad apt-get (beh, a dire il vero inglobando il comando di sopra in un paio di parentesi, basterebbe fare sudo apt-get install $(COMANDO-SOPRA).

23. Treviño - 8/02/08 @ 4:40

Ops scusa il comando giusto è
apt-cache showsrc compiz | grep Build-Depends | sed "s/ | [^ ]*//g;s/([^)]*)//g;s/[ ]*, / /g" | cut -f2 -d":"

24. felipe - 8/02/08 @ 11:14

@tutti:
Haha non immaginavo che vi sarebbe piaciuto il dialogo con apt sconsolato per non essere riuscito a rispondermi :D

@Treviño:
Ottima idea! Anche se forse preferisco sempre controllare una per una le dipendenze prima di cercare di installarle, perché se apt non trova uno o più pacchetti si affloscia di nuovo… ma forse volevi farmi scrivere un’altro dialogo? :D

PS: Ma non sarebbe più carino se APT non morisse in questi casi? Potrebbe dire che non sa proprio “tutto”, ma almeno quelle info che conosce dovrebbe comunicarle…