Compilare con Ubuntu: 6) Miscelare repository per avere pacchetti più recenti
In Avanzate, per Guru!, Guide il 2/05/07 @ 20:18 trackbackQuesto è un vecchio trucco che gli utenti Debian conoscono senza dubbio, dal momento che a causa dei lunghi tempi di rilascio di Debian è una pratica molto comune. Si tratta di recuperare i sorgenti della versione di testing della distribuzione, e compilarli per quella stabile.
|
In questo modo si possono ottenere pacchetti sempre freschi e avere alte possibilità di mantenere il sistema pulito, a meno di grossi sconvolgimenti al sistema di pacchettizzazione. Ok, sebbene con Ubuntu – grazie ai tempi corti tra una versione e l’altra – non ci sia frequente bisogno di questo escamotage, ci sono casi in cui può tornare utile, e poi è divertente :D
Attenzione: questo post è catalogato come “Avanzati, per Guru!” non a caso. Con questi trucchi potete trasformare la vostra tranquilla Ubuntu in una bestia da compilazioni esagerate, ed è quello che mi propongo di fare personalmente… ma se non si hanno sufficienti conoscenze non bisogna esagerare. Siete avvertiti :)
Proviamo a scendere nel dettaglio, con un esempio pratico. Tutti sapete che la prossima versione di Ubuntu, Gutsy Gibbon, è già operativa (cfr. “Aperto il repository che conterrà le “tribù” di Gibboni ;)“). Io aggiungo che è molto operativa, visto che gli sviluppatori stanno riversando nei repo molti pacchetti interessanti e alle più recenti versioni… tanto che mi capita di pensare di passare a Gutsy già da ora (non fatelo!)
Installare i pacchetti di Gutsy in Feisty, così si può!
Uno dei pacchetti che mi fa tanta gola è Ardour 2.0, ci avreste scommesso :D Si da il caso che Ardour 2.0 sia già pronto in Gutsy, e quindi quale occasione per mettere in pratica questo vecchio trucchetto? Vi descrivo la procedura proprio mentre APT sta compilando la mia copia di Ardour 2.0 :)
Modificare gli archivi dei pacchetti sorgente
La prima cosa da fare è quella di modificare il file che contiene gli indirizzi degli archivi dei pacchetti:
$: sudo gedit /etc/apt/sources.list
Da qualche parte all’inizio del file ci dovrebbe essere la riga che indica ad APT dove recuperare i sorgenti dei pacchetti, quella che comincia per “deb-src“. Nel mio caso appariva così (eventualmente togliete il “#”, per abilitarlo):
deb-src http://it.archive.ubuntu.com/ubuntu/ feisty main restricted universe multiverse
È bastato sostituire “feisty” con “gutsy”, adesso è così:
deb-src http://it.archive.ubuntu.com/ubuntu/ gutsy main restricted universe multiverse
Potrebbero esserci altre righe che cominciano per “deb-src“, ma a noi interessa solo quella principale, non gli aggiornamenti o backports eccetera, che nemmeno esistono per ora. Fatto questo basta aggiornare il database di APT:
$: sudo apt-get update
Scaricare e compilare i sorgenti
A questo punto il nostro sistema viaggia “a due livelli”: i pacchetti binari, quelli che normalmente scarichiamo con synaptic e che usiamo per aggiornare la distro sono quelli di sempre, alle versioni di sempre. Il database dei sorgenti invece punta alle versioni contenute nella versione di testing.
Noi punteremo a quelli per installare l’ultima versione di Ardour, con questo comando:
$: mkdir ardour $: cd ardour $: apt-get source ardour
Questo crea una directory “ardour”, ci entra dentro, e scarica i vari file necessari a compilare correttamente. Ma non è tutto, grazie agli archivi dei sorgenti della versione di testing che abbiamo abilitato, APT sa anche quali sono le dipendenze di compilazione di Ardour 2.0, per installarle tutte basta un semplice comando, già visto nel post “Compilare con Ubuntu: 1) apt-get build-dep“:
$: sudo apt-get build-dep ardour
Questo è un passaggio un po’ delicato, dovreste controllare che APT non tenti di installare pacchetti strani o – peggio ancora – disinstallarne altri. L’idea di questo articolo è di suggerire uno strumento avanzato, ma anche potente e “pericoloso”, quindi siate coscienti delle vostre capacità :)
Compilare i sorgenti così ottenuti è un passaggio molto semplice, non bisogna modificare niente e neanche adattare i sorgenti, sono già perfettamente compatibili nella stragrande maggioranza dei casi, basta un solo comando dato all’interno della sotto-directory in cui sono contenuti i veri sorgenti, in questo caso:
$: cd ardour-2.0 $: debuild binary
Se non ci sono problemi di dipendenze mancanti, conflitti o perversioni varie, questo dovrebbe dare un po’ di lavoro al vostro processore. Ubuntu in compilazione si comporta sempre egregiamente, sfoderando tutta la potenza del “motore” Debian… e infatti dopo circa una mezzora (il tempo di scrivere questa guida, rispondere con monosillabi al telefono, bere un succo alla pesca, cambiare album in rhythmbox), ecco il risultato:
$: cd ../ $: ls *.deb ardour_2.0-0ubuntu1_i386.deb ardour-i686_2.0-0ubuntu1_i386.deb ardour-dbg_2.0-0ubuntu1_i386.deb
Ecco i pacchetti belli pronti per essere installati :) Sappiate che l’unico che serve è ardour-i686 (almeno nel mio caso), una volta installato il pacchetto mi sincero della buona riuscita ed ecco come appare la mia copia di Ardour:
L’esempio presentato in questa guida non è esattamente semplicissimo e nemmeno veloce, lo so, sappiate però che ci sono molti altri pacchetti che non richiedono troppo tempo e troppe conoscenze per essere compilati e funzionare nel pieno rispetto delle regole di pacchettizzazione di Ubuntu :)
Altri pacchetti da provare
Tra i candidati a questo genere di giochetti ci sono senza dubbio i pacchetti che in Gutsy sono già a versioni più appetibili rispetto a quelle in Feisty, pur con la giovanissima età di Gutsy:
- Eye of GNOME 2.19 (apt-get source eog)
- Gimp 2.3.16 (apt-get source gimp)
- Tracker 0.6 (apt-get source tracker – ma non è ancora in gutsy)
- Tutte le applicazioni più importanti
- KDE 4 :D (occhio con questo!)
…e ovviamente la lista si allunga man mano che Gutsy matura e cresce. Vi avverto solo di non installare mai librerie di sistema con questo trucco, perché potreste creare più casini di quanti immaginiate, vale sempre la regola del buon senso.
Buone compilazioni, so che per alcuni più avventurosi ho tolto il coperchio all’inferno :D
— Pagine forse correlate:
Commenti »
ahahhaha felipe Xd bello il cerbiatto XD!!!!
comunque debian si è un pò svegliata, è leggermente meno lenta con i rilasci :O
Grande! Bellissima guida, grazie felipe
Bella guida… Penso che ci provero’. :)
Ma mi spieghi cos’e’ quella traccia “”merda.rev” nello screenshot di Ardour??? XD
debian meno lenta? :-D
Da quali considerazioni nasce questo commento?
Debian esce solo quando e’ pronta. Per il desktop c’e’ ubuntu
@tutti:
Dai dai, sto aspettando di leggere quale pazzo si lancia in compilazioni efferate :D
@2dvisio:
Non immagini i nomi strani che uso per le mie tracce… quello mi è sfuggito! Cmq è un effetto speciale (reverse di un arpeggio), e non ha niente a che vedere con la defecazione :D
mi stavo chiedendo giusto un po’ di cose riguardo ai repo di gutsy e su come avere pacchetti aggiornati senza ricorrere a fonti esterne (vedi ubuntu click&run)…alla fine mi ritrovo come al solito a imparare tantissime cose interessanti :D
thanks
grande felipe il tuo blog è sempre il migliore…..continua così!!!!!!!!!!!
Sono passato ad ubuntu da circa un mesetto. La mia prima distrubuzione è stata “potato”. Dopo pochissimo aggiornata a sid. C’e’ stato un periodo in cui volevo ***ottimizzare*** tutto. Il termine non rende bene l’idea. Ero ossessionato dall’ultima versione e in più la volevo veloce. I pacchetto debian fino a poco tempo fa erano ottimizzati per i386. Quindi scaricavo i sorgenti e ricompilavo tutto. Da gcc a glibc6 a vim. Diventa una droga e passi il tempo a ricompilare visto che gli aggiornamenti su sid sono molto frequenti. Avevo notato che le uniche compilazioni che avevano senso erano il kernel, X. Ai tempi non usavo gnome ne’ OO quindi non saprei, ma stando ad alcuni commenti oo ne benefficiava parecchio. Avevo anche pensato di provare gentoo ma cambiare per cambiare mi son buttato per un periodo su freebsd (che è rimasto sul mio desktop, make buildworld e’ favoloso ). A marzo con il nuovo portatile ho messo ubuntu. Ho tutto quello che mi serve gia’ configurato e ottimizzato e non ho piu’ distrazioni.
Solo una cortesia: mi accenneresti, anche brevemente, al perché il mio precedente commento è stato rimosso? Ovviamente è casa tua e ci fai un po’ quel che ti pare, ma chiedere è lecito e rispondere è cortesia, giusto?
Grazie.
dove è finita la tanto usata avast?
io uso anche i repo di sid e experimental a volte ci sono patch o pacchetti + nuovi
a volte uso anche incoming ma x quello non c’e’ un repo :)
primo mio post qui (wow autocelebrativo :P)
qualcuno mi sa dire come si fa ad eliminare tutta la brodaglia di *-dev ? chiedo visto che mi sembra evidente che, anche senza aspettare di stufarmi di ardour2, quei pacchetti non mi servono più appena finita la compilazione. ‘nsomma qualcosa tipo “sudo apt-get purge-build-deps ardour” ?
PS: fuozza sicilia :) w i buddaci ed abbasso GaDania :P :D
@jOm
io li lascio sempre e comunque. Tanto non sarà oggi ma domani mi troverò a compilare qualcosa che le richiede…:-)
Benarrivato!
Come si configura debuild per cambiare le opzioni di ottimizzazione?
@dadokkio:
@OpenMania:
Grazie ;)
@Anonimo #8:
Il concetto di ottimizzazione non ha molto a che vedere con quanto trattato in questa guida, anche se simile. In generale cmq è sempre bene avere presente quando troppo è troppo, sono d’accordo
@LoPissicologo:
Era semplicemente OT https://pollycoke.net/regole/ per favore replica nella pagina delle regole, se devi, altrimenti dovrò cancellare altri commenti :)
@j0m:
Potresti fare una ricerca, per nome, di “-dev” in synaptic, ed eliminare, oppure provare qualcosa tipo:
$: sudo apt-get --purge remove *-dev
Ma ti avverto che sono entrambe azioni potenzialmente pericolose, soprattutto la seconda!
@Massimo:
È argomento di un prossimo articolo ;)
Ma se si facesse un chroot della versione in sviluppo? Non si sporca il sistema e si può provare tutto…
Una guida qui: http://wiki.ubuntu-it.org/ChrootConDebootstrap
scritta tempo fa ma sempre valida.
Facendo così otterrei lo stesso risultato?
$: sudo apt-get -b source ardour
ecco cosa mi ha risposto il terminale quando gli ho dato il comando “debuild binary ”
debuild: command not found
@yoda:
Ma io non voglio due distribuzioni in una :)
@AleX-75:
Esattametne lo stesso, ma fa tutto in automatico. Io preferisco spezzettare per ispezionare/cambiare/correggere eventuali problemi
@OpenMania:
Ti manca qualche pacchetto di sviluppo:
$: sudo apt-get install devscripts
In ogni caso sappi che “debuild” è solo uno dei tanti metodi più o meno equivalenti, come facevo notare ad AleX-75
Ma cosa succede se modifico anche le linee per i binari, così da non dover ricompilare niente?
Grazie.
Grazie per la risposta, Felipe. ;)
Purtroppo non riesco arrivare in fondo alla compilazione perché mi mancano un sacco di dipendenze.
La maggior parte di queste le ho installate, ma se tento di installare libfreetype6-dev (che a sua volta blocca l’installazione di altre librerie) ottengo questo errore, ed al momento non ci sono ancora saltato fuori:
libfreetype6-dev:
Dipende: libfreetype6 (=2.2.1-5ubuntu1) ma 2.3.3-0mlind1~edgy1 verrà installato
Comunque non mi arrendo, anche solo per una questione di principio! :P
Hai ragione Felipe, mi sa che hai proprio tolto il coperchio all’inferno … :D
@KubuntUser:
Succede che ti ritrovi con la versione di sviluppo appena inaugurata->instabilissima. Non farlo
@AleX-75:
Ma hai Edgy e stai usando il repo di gutsy per i sorci? Uhm…
Sappi in ogni caso che puoi cambiare le dipendenze e prendere in giro dpkg modificando il file debian/control presente in ogni sorgente. Ma occhio che non è una cosa da fare alla leggera, e tieni presente che questo post è indirizzato ad utenti esperti!
No, veramente ho una Edgy aggiornata a Feisty con il repo sorgenti per la Gutsy … che macello!! :D
Non capisco da dove sbuchi “2.3.3-0mlind1~edgy1″ … comunque sono folle ma non abbastanza per mettermi a prendere per i fondelli dpkg … so già che ne uscirei con le ossa rotte per cui ci vado con i piedi di piombo.
E’ vero che questo è un post per utenti esperti, ma d’altronde finché non si smanetta un pò su queste cose (magari facendosi anche del male) come si fà a diventare un “utonto” esperto? ;D
Felipe complimenti per il blog, davvero ben fatto.
Tornando OT, ho installato Eye of Gnome 2.19.1 dai repository gusty.
Prima di iniziare bisogna scaricare e compilare ed installare gnome-pkg-tools, perchè con le versioni precedenti eog non funziona.
Dopo aver installato gnome-pkg-tools ho dato il comando build-dep per eog e sinaptyc mi ha tirato giu 22 mb di librerie.
Fatto questo tutto procede liscio come l’olio, grazie!
p.s. adesso provo con Gimp
@sdonk:
Bravo! Un’altra via per risolvere l’inghippo (quella che ho usato io) poteva essere semplicemente quella di modificare il file debian/control di eog, per indicargli di usare la versione di gnome-pkg-tools presente in Feisty
Ricorda: evita dove possibile di installare da Gutsy librerie o cmq tutto quello che non siano applicazioni ;)
Modificare il file debian/control è al di sopra delle mie conoscenze, però le librerie me le ha scaricate dai repository feisty (bello il sistema su due livelli). ;-)
[...] https://pollycoke.net/2007/05/02/compilare-con-ubuntu-6-miscelare-repository-per-avere-pacc... [...]
CIao a tutti,primo post anche per me,davvero ottimo il blog e le varie guide,mi hai messo voglia di compilare(quando installerò gentoo?)
solo che mi dà un problemino quando faccio debuild binary,in particolare con le sorgenti del nuovo gimp,che può essere mai(sono semi-niubbo ma con tantissima voglia di imparare)?
[email protected]:~/gimp-2.3.18$ debuild binary
dpkg-checkbuilddeps: Unmet build dependencies: cdbs (>= 0.4.37) patchutils intltool libaa1-dev libgtkhtml2-dev (>= 2.0.0) libart-2.0-dev python-gtk2-dev (>= 2.8.0) libexif-dev (>= 0.6.12) libmng-dev librsvg2-dev (>= 2.7.2-2) libwmf-dev (>= 0.2.8-1.1) libpoppler-glib-dev (>= 0.3.1) libgnomevfs2-dev (>= 2.10.0) libgnomeui-dev (>= 2.10.0) libcurl3-gnutls-dev libasound2-dev (>= 1.0.0)
dpkg-checkbuilddeps: Build conflicts: libgimp2.0
debuild: fatal error at line 1192:
You do not appear to have all build dependencies properly met.
If you have the pbuilder package installed, you can run
/usr/lib/pbuilder/pbuilder-satisfydepends as root to install the
required packages, or you can do it manually using dpkg or apt using
the error messages just above this message.
ovviamente già provato il pbuilder…non dovrò mica installare tutti quei pacchetti per soddisfare le dipendenze??
Mi scuso per il doppio commento,ma avevo dimenticato l’ovvio build-dep….ottime guide come sempre,1 pò meno i niubbi distratti….ancora scusa per aver incasinato i commenti,in caso cancelli…
[...] sorgenti e binari, di differenti versioni di Debian o Ubuntu, come descritto nella guida “Compilare con Ubuntu: 6) Miscelare repository per avere pacchetti più recenti” e che vogliamo compilare una data applicazione di cui non conosciamo esattamente le [...]
felipe, mi spiegheresti la frase sul "motore debian" che si fa notare in compilazione? :)
non dovrebbe avere granché a che fare con la distro, dato che i tool sono sempre quelli, quanto con l’architettura (e con l’esattezza con cui questa si riflette nei flag di gcc).. sei d’accordo?
asy
from wikipedia:
"[Klik] uses one .cmg file per application. Each one is self-contained: it includes all libraries the application depends on and that are not part of the base system."
Non si rischia la duplicazione di librerie? Mi spiego.
Se un’app (ad esempio pidgin) mettesse le libpurple in un cmg, un’altra app (un ipotetico adium per linux) farebbe altrettanto? Nel sistema ci sarebbero due libpurple? Il tutto ruota intorno a ciò che si intende per base system..
asy
@asymmetric:
Per il primo commento: mi riferivo solo al fatto che Ubuntu, sotto l’apparenza docile, sotto sotto è pur sempre una Debian e non ci sono problemi a compilare. Non stavo tirando fuori flag gcc o niente del genere.
Il secondo commento è ovviamente fuori contesto, se vuoi riscriverlo nel giusto articolo magari poi lo cancello da qui ;)