Applicare una patch ad un pacchetto Debian: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(+ template autori)
(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 per scaricare i pacchetti di tipo deb-src:
<pre>
<pre>
#--CUT HERE--#
# per stable
#per stable
deb-src http://ftp.it.debian.org/debian/ stable main
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
# per testing
deb-src http://ftp2.it.debian.org/debian/ testing main non-free contrib
deb-src http://ftp.it.debian.org/debian/ testing main
deb-src http://non-us.debian.org/debian-non-US testing/non-US main contrib
non-free


#per unstable
# per unstable
deb-src http://ftp2.it.debian.org/debian/ sid main non-free contrib
deb-src http://ftp.it.debian.org/debian/ sid main
deb-src http://non-us.debian.org/debian-non-US sid/non-US main contrib non-free
#--CUT HERE--#
</pre>
</pre>
ora aggiorniamo il contenuto del database dei pacchetti:
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' ==


==Procediamo==
Iniziamo, per avere tutto in ordine, a creare una cartella di lavoro:
 
===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
$ mkdir sorgenti && cd sorgenti
</pre>
</pre>


Riga 47: Riga 35:
</pre>
</pre>


così facendo, scaricheremo 3 file, che verranno decompressi in una cartella
così facendo scaricheremo tre file. Sarà creata automaticamente anche una directory sulla base dei due file compressi .tar.gz . Il risultato sarà, ad esempio:
(nomepacchetto-ver.sio.ne)
<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').


Ora possiamo entrare in questa cartella, scaricare la patch e applicarla:
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>
$ cd nomepacchetto-ver.sio.ne
# apt-get build-dep nomepacchetto
$ wget http://indirizzo/per/la/patch.patch
</pre>
</pre>


supponendo che la patch non sia compressa:
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:
se è 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>


Il comando proverà a compilare il pacchetto, ed in caso di errori ci chiederà
Una volta giunta a termine la compilazione, troveremo (nella directory ''nomepacchetto'' da noi creata) una serie di file .deb!<br/>
di sistemare le dipendenze (se l'errore è dovuto alla mancanza di alcune
Ora possiamo installarli con [[dpkg]] o [[gdebi]]:
librerie) elencando tutti i pacchetti necessari, installabili con un normale
<pre>
# apt-get build-dep 'nomepacchetto_da_installare'
</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
# dpkg -i nomepacchetto_ver.sio.ne.deb
</pre>
</pre>


Bene, se non riceviamo errori...il pacchetto è installato.
Bene, se non riceviamo errori, il pacchetto è installato.


== Metodo 2: 'apt-build'==


===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 è 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.
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:
ora 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;

Versione delle 14:48, 15 mag 2015

Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Introduzione

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.

Preparazione del sistema

Per prima cosa bisogna assicurarsi di avere, in /etc/apt/sources.list, le sorgenti da cui scaricare i pacchetti di tipo 'deb-src' relative alla versione di Debian che si sta utilizzando:

# per stable
deb-src http://ftp.it.debian.org/debian/ stable main

# per testing
deb-src http://ftp.it.debian.org/debian/ testing main

# per unstable
deb-src http://ftp.it.debian.org/debian/ sid main

adattare queste righe in base alle proprie esigenze, ad esempio mirror diverso, sezioni differenti o rimozione di una o più righe (se si utilizza solo stable allora le righe di testing e sid sono inutili).
Ora aggiorniamo il contenuto del database dei pacchetti:

# apt-get update

Metodo 1: 'apt-get source && dpkg-buildpackage'

Iniziamo, per avere tutto in ordine, a creare una cartella di lavoro:

$ mkdir sorgenti && cd sorgenti

Ora possiamo scaricare i sorgenti:

$ apt-get source nomepacchetto

così facendo scaricheremo tre file. Sarà creata automaticamente anche una directory sulla base dei due file compressi .tar.gz . Il risultato sarà, ad esempio:

nomepacchetto-versione
nomepacchetto_versione.debian.tar.gz
nomepacchetto_versione.orig.tar.gz
nomepacchetto_versione.dsc

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:

# apt-get build-dep nomepacchetto

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.
Supponendo che la patch non sia compressa:

$ patch -p1 < patch.patch

Se fosse 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 -us -uc

Una volta giunta a termine la compilazione, troveremo (nella directory nomepacchetto da noi creata) una serie di file .deb!
Ora possiamo installarli con dpkg o gdebi:

# 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 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

e 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!




Guida scritta da: MaXeR Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized