In questo howto vedremo come sia possibile applicare una patch ad un pacchetto ufficiale Debian. Prima di proseguire, però, vedremo quando non è possibile farlo, evvero quando il pacchetto non è stato distribuito anche in forma di sorgenti, capita per qualche repository non ufficiale e per alcuni pecchetti uff. (una volta mi era successo...).
Per prima cosa bisogna assicurarsi di avere, in /etc/apt/sources.list, le sorgenti per scaricare i pacchetti di tipo deb-src:
#per stable deb-src http://ftp2.it.debian.org/debian/ stable main non-free contrib deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free #per testing deb-src http://ftp2.it.debian.org/debian/ testing main non-free contrib deb-src http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free #per unstable deb-src http://ftp2.it.debian.org/debian/ sid main non-free contrib deb-src http://non-us.debian.org/debian-non-US sid/non-US main contrib non-free
ora aggiorniamo il contenuto del database dei pacchetti:
# apt-get update
Per scaricare i sorgenti ed avere tutto in ordine, seguiamo questa procedura, anzitutto creiamo una cartella di lavoro
$ mkdir <nomepacchetto> && cd <nomepacchetto>
Ora possiamo scaricare i sorgenti:
$ apt-get source nomepacchetto
così facendo, scaricheremo 3 file, che verranno decompressi in una cartella (
<nomepacchetto>-ver.sio.ne
)
Ora possiamo entrare in questa cartella, scaricare la patch e applicarla:
$ cd <nomepacchetto>-ver.sio.ne $ wget http://indirizzo/per/la/patch.patch
Supponendo che la patch non sia compressa:
$ patch -p1 < patch.patch
se invece è compressa:
$ zcat patch.patch | patch -p1
Una volta applicata la patch, se non riceviamo errori, siamo pronti a compilare il pacchetto. Per fare questo utilizzeremo un altro tool Debian: dpkg-buildpackage
# dpkg-buildpackage
Il comando proverà a compilare il pacchetto, ed in caso di errori ci chiederà di sistemare le dipendenze (se l'errore è dovuto alla mancanza di alcune librerie) elencando tutti i pacchetti necessari, installabili con un normale
# apt-get install <nomepacchetto_da_installare>
Una volta giunta a termine la compilazione, troveremo (nella cartella nomepacchetto
da noi creata) una serie di file .deb
! ora possiamo installarli:
# dpkg -i <nomepacchetto>_ver.sio.ne.deb
Bene, se non riceviamo errori...il pacchetto è installato!
Prima di iniziare, è d'obbligo una introduzione su apt-build. Questo tool è abbastanza giovane, e consente di compilare i pacchetti Debian ottimizzandoli per la propria macchina. Durante l'installazione vengono poste delle domande (tipo di processore, livello di ottimizzazione), e rispondendo nel modo opportuno, sarà possibile compilare i pacchetti ottimizzandoli per la propria macchina, cosa che, nel METODO 1 non avviene.
Apt-build ci mette a disposizione una opzione, --patch <file>
, che consente di applicare delle patch al pacchetto da installare. Vediamo, ora, come fare.
Scarichiamo la patch:
$ wget wget http://indirizzo/per/la/patch.patch
ora diamo il semplice comando:
# apt-build -p 0 --patch patch.patch install pacchetto
Ora mettiamoci comodi, armati di tazzona di caffè (rigorosamente marchiata con un bel Tux) e controlliamo a video mentre:
- vengono scaricate i pacchetti
-dev
per la compilazione; - viene aggiornato l'elenco dei pacchetti dei vari repository (usare l'opzione
--noupdate
per evitarlo); - vengono scaricati i sorgenti del pacchetto;
- viene applicata la patch;
- inizia la compilazione del pacchetto:
- viene/vengono installato/i il/i pacchetto/i generato/i.
Bene, ora il pacchetto è installato nel vostro sistema!
Per segnalazioni, suggerimenti... maxer@knio.it
---
MaXeR
maxer@knio.it
http://www.knio.it
---