6 999
contributi
(+ template autori) |
S3v (discussione | contributi) (aggiornata con contenuti di "Aggiungere una patch a un pacchetto Debian" (vedere task #48 della revisione Wiki)) |
||
Riga 1: | Riga 1: | ||
{{Versioni compatibili}} | {{Versioni compatibili}} | ||
==Introduzione== | == Introduzione == | ||
In questo howto vedremo come sia possibile applicare una patch ad un pacchetto | In questo howto vedremo come sia possibile applicare una [[patch]] ad un [[pacchetto]] ufficiale Debian. Bisogna sottolineare, tuttavia, che non sempre è possibile farlo: è necessario, infatti, che il pacchetto sia stato distribuito in forma di sorgenti. | ||
ufficiale Debian. Bisogna sottolineare, tuttavia, che non sempre è possibile farlo: è necessario, infatti, che il pacchetto sia stato distribuito in forma di sorgenti. | |||
==Preparazione del sistema== | == Preparazione del sistema == | ||
Per prima cosa bisogna assicurarsi di avere, in <code>/etc/apt/sources.list</code>, | Per prima cosa bisogna assicurarsi di avere, in <code>/etc/apt/sources.list</code>, le sorgenti da cui scaricare i pacchetti di tipo 'deb-src' relative alla versione di Debian che si sta utilizzando: | ||
le sorgenti | |||
<pre> | <pre> | ||
# per stable | |||
#per stable | deb-src http://ftp.it.debian.org/debian/ stable main | ||
deb-src http:// | |||
#per testing | # per testing | ||
deb-src http:// | deb-src http://ftp.it.debian.org/debian/ testing main | ||
#per unstable | # per unstable | ||
deb-src http:// | deb-src http://ftp.it.debian.org/debian/ sid main | ||
</pre> | </pre> | ||
adattare queste righe in base alle proprie esigenze, ad esempio [[mirror]] diverso, [[sezione|sezioni]] differenti o rimozione di una o più righe (se si utilizza solo [[stable]] allora le righe di ''testing'' e ''sid'' sono inutili).<br/> | |||
Ora aggiorniamo il contenuto del database dei pacchetti: | |||
<pre> | <pre> | ||
# apt-get update | # apt-get update | ||
</pre> | </pre> | ||
== Metodo 1: 'apt-get source && dpkg-buildpackage' == | |||
Iniziamo, per avere tutto in ordine, a creare una cartella di lavoro: | |||
<pre> | <pre> | ||
$ mkdir | $ mkdir sorgenti && cd sorgenti | ||
</pre> | </pre> | ||
Riga 47: | Riga 35: | ||
</pre> | </pre> | ||
così facendo | così facendo scaricheremo tre file. Sarà creata automaticamente anche una directory sulla base dei due file compressi .tar.gz . Il risultato sarà, ad esempio: | ||
<pre> | |||
nomepacchetto-versione | |||
nomepacchetto_versione.debian.tar.gz | |||
nomepacchetto_versione.orig.tar.gz | |||
nomepacchetto_versione.dsc | |||
</pre> | |||
La prima voce è una directory contenente l'insieme dei due archivi sottostanti compattati, mentre il file .dsc è relativo al file di controllo tipico dei pacchetti Debian. I file .tar.gz contengono i sorgenti del pacchetto, ossia i sorgenti originali ('orig.tar.gz') e le modifiche ai sorgenti inserite dagli sviluppatori Debian ('debian.tar.gz'). | |||
Successivamente bisognerà installare tutti pacchetti necessari per compilare i sorgenti. Per far questo, il mitico [[apt-get]] ci aiuterà a procurarci tutto quanto ci serve con il semplice comando: | |||
<pre> | <pre> | ||
# apt-get build-dep nomepacchetto | |||
</pre> | </pre> | ||
Scaricati tutti i pacchetti necessari, possiamo entrare nella directory automaticamente creata da 'apt-get source' (nel nostro caso ''nomepacchetto-versione'') e copiare qui la [[patch]] (nell'esempio il suo nome sarà ''patch.patch'') e applicarla.<br/> | |||
Supponendo che la patch non sia compressa: | |||
<pre> | <pre> | ||
$ patch -p1 < patch.patch | $ patch -p1 < patch.patch | ||
</pre> | </pre> | ||
Se fosse compressa: | |||
<pre> | <pre> | ||
$ zcat patch.patch | patch -p1 | $ zcat patch.patch | patch -p1 | ||
</pre> | </pre> | ||
Una volta applicata la patch, se non riceviamo errori, siamo pronti a | Una volta applicata la patch, se non riceviamo errori, siamo pronti a compilare il pacchetto.<br/> | ||
compilare il pacchetto. | Per fare questo utilizzeremo un altro tool Debian: ''dpkg-buildpackage'': | ||
Per fare questo utilizzeremo un altro tool Debian: dpkg-buildpackage | |||
<pre> | <pre> | ||
# dpkg-buildpackage | # dpkg-buildpackage -us -uc | ||
</pre> | </pre> | ||
Una volta giunta a termine la compilazione, troveremo (nella directory ''nomepacchetto'' da noi creata) una serie di file .deb!<br/> | |||
Ora possiamo installarli con [[dpkg]] o [[gdebi]]: | |||
nomepacchetto da noi creata) una serie di file .deb! | |||
Ora possiamo installarli: | |||
<pre> | <pre> | ||
# dpkg -i nomepacchetto_ver.sio.ne.deb | # dpkg -i nomepacchetto_ver.sio.ne.deb | ||
</pre> | </pre> | ||
Bene, se non riceviamo errori | Bene, se non riceviamo errori, il pacchetto è installato. | ||
== Metodo 2: 'apt-build'== | |||
Prima di iniziare, è d'obbligo una introduzione su apt-build.<br/> | |||
Questo tool 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 | |||
Prima di iniziare, è d'obbligo una introduzione su apt-build. | |||
Questo tool | |||
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. | propria macchina, cosa che, nel METODO 1 non avviene. | ||
Apt-build ci mette a disposizione una opzione, <code>--patch</code>, che consente di applicare delle patch al pacchetto da installare. | Apt-build ci mette a disposizione una opzione, <code>--patch</code>, che consente di applicare delle patch al pacchetto da installare.<br/> | ||
Vediamo, ora, come fare. | Vediamo, ora, come fare.<br/> | ||
Scarichiamo la patch: | Scarichiamo la patch: | ||
<pre> | <pre> | ||
$ wget http://indirizzo/per/la/patch.patch | $ wget http://indirizzo/per/la/patch.patch | ||
</pre> | </pre> | ||
e diamo il semplice comando: | |||
<pre> | <pre> | ||
# apt-build -p 0 --patch patch.patch install 'pacchetto' | # apt-build -p 0 --patch patch.patch install 'pacchetto' | ||
Riga 113: | Riga 92: | ||
ora mettiamoci comodi, armati di tazzona di caffè (rigorosamente marchiata con un bel Tux) e controlliamo a video mentre: | 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; | * vengono scaricate i pacchetti *-dev per la compilazione; | ||
* viene aggiornato l'elenco dei pacchetti dei vari repository (usare l'opzione <code>--noupdate</code> per evitarlo); | * viene aggiornato l'elenco dei pacchetti dei vari [[repository]] (usare l'opzione <code>--noupdate</code> per evitarlo); | ||
* vengono scaricati i sorgenti del pacchetto; | * vengono scaricati i sorgenti del pacchetto; | ||
* viene applicata la patch; | * viene applicata la patch; |
contributi