Applicare una patch ad un pacchetto Debian
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 | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |