Applicare una patch ad un pacchetto Debian: differenze tra le versioni
m (firma) |
m (→PROCEDIAMO: sistemati i titoli dei paragrafi) |
||
Riga 1: | Riga 1: | ||
==Introduzione== | ==Introduzione== | ||
In | In questo howto vedremo come sia possibile applicare una patch ad un pacchetto | ||
ufficiale Debian. | |||
Prima di proseguire, però, vedremo quando non è possibile farlo: | |||
* 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...). | |||
==Preparazione del sistema== | |||
Per prima cosa bisogna assicurarsi di avere, in '''/etc/apt/sources.list''', | |||
le sorgenti per scaricare i pacchetti di tipo deb-src: | |||
<pre> | |||
#--CUT HERE--# | |||
#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 | |||
#--CUT HERE--# | |||
</pre> | |||
ora aggiorniamo il contenuto del database dei pacchetti: | |||
<pre> | <pre> | ||
# apt-get update | |||
</pre> | </pre> | ||
==Procediamo== | |||
===Metodo 1: `apt-get source && dpkg-buildpackage`=== | |||
Per scaricare i sorgenti, seguiamo questa procedura: | |||
Per avere tutto in ordine, creiamo una cartella di lavoro | |||
<pre> | <pre> | ||
$ mkdir nomepacchetto && cd nomepacchetto | |||
</pre> | </pre> | ||
Ora possiamo scaricare i sorgenti: | |||
<pre> | |||
$ apt-get source nomepacchetto | |||
</pre> | |||
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: | |||
<pre> | |||
$ cd nomepacchetto-ver.sio.ne | |||
$ wget http://indirizzo/per/la/patch.patch | |||
</pre> | |||
supponendo che la patch non sia compressa... | |||
<pre> | <pre> | ||
$ patch -p1 < patch.patch | |||
</pre> | </pre> | ||
se è compressa: | |||
<pre> | |||
$ zcat patch.patch | patch -p1 | |||
</pre> | |||
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 | |||
<pre> | <pre> | ||
# dpkg-buildpackage | |||
</pre> | </pre> | ||
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 | |||
<pre> | <pre> | ||
# apt-get buid-dep 'nomepacchetto_da_installare' | |||
</pre> | </pre> | ||
una volta giunta a termine la compilazione, troveremo (nella cartella | |||
nomepacchetto da noi creata) una serie di file .deb! | |||
ora possiamo installarli: | |||
<pre> | <pre> | ||
# dpkg -i nomepacchetto_ver.sio.ne.deb | |||
</pre> | |||
Bene, se non riceviamo errori...il pacchetto è installato. | |||
===Metodo 2: `apt-build`=== | |||
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''', che consente di applicare delle patch al pacchetto da installare. | |||
Vediamo, ora, come fare. | |||
Scarichiamo la patch: | |||
<pre> | |||
$ wget http://indirizzo/per/la/patch.patch | |||
</pre> | </pre> | ||
ora diamo il semplice comando: | |||
<pre> | |||
# apt-build -p 0 --patch patch.patch install 'pacchetto' | |||
</pre> | |||
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! | |||
---- | ---- [[User:MaXeR|MaXeR]] | ||
Versione delle 07:51, 15 mag 2005
Introduzione
In questo howto vedremo come sia possibile applicare una patch ad un pacchetto ufficiale Debian. Prima di proseguire, però, vedremo quando non è possibile farlo:
- 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...).
Preparazione del sistema
Per prima cosa bisogna assicurarsi di avere, in /etc/apt/sources.list, le sorgenti per scaricare i pacchetti di tipo deb-src:
#--CUT HERE--# #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 #--CUT HERE--#
ora aggiorniamo il contenuto del database dei pacchetti:
# apt-get update
Procediamo
Metodo 1: `apt-get source && dpkg-buildpackage`
Per scaricare i sorgenti, seguiamo questa procedura: Per avere tutto in ordine, 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 è 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 buid-dep '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.
Metodo 2: `apt-build`
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, che consente di applicare delle patch al pacchetto da installare. Vediamo, ora, come fare. Scarichiamo la patch:
$ 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!