Applicare una patch ad un pacchetto Debian

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian 6 "squeeze"
Debian 7 "wheezy"
Debian 8 "jessie"

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