Applicare una patch ad un pacchetto Debian
Versioni Compatibili Debian 8 "jessie" Debian 9 "stretch" Debian 10 "buster" |
Introduzione
In questo how-to vedremo come sia possibile applicare una patch a un pacchetto ufficiale Debian.
Bisogna sottolineare, tuttavia, che non sempre è possibile farlo: è necessario, infatti, che il pacchetto sia stato distribuito in forma di sorgenti. Ciò è sempre garantito se si utilizza la sola sezione main nei repository.
Preparazione del sistema
Per prima cosa bisogna assicurarsi di avere, in /etc/apt/sources.list
, le sorgenti da cui scaricare i pacchetti, ossia le righe inizianti con deb-src relative alla versione di Debian che si sta utilizzando.
Di default sono già abilitate. In caso di dubbi, si rimanda alla lettura della guida: I repository ed il loro utilizzo.
In caso di modifiche, ricordarsi di aggiornare il contenuto del database dei pacchetti, con privilegi di amministrazione:
# apt-get update
Scaricare i sorgenti
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').
Installare le dipendenze per la compilazione
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.
Applicare la patch
Supponendo che la patch non sia compressa:
$ patch -p1 < patch.patch
Se fosse compressa:
$ zcat patch.patch | patch -p1
Compilazione
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
(installato in automatico con apt-get build-dep
); come segue:
# dpkg-buildpackage -us -uc
Con i parametri -us
e -uc
sarà generato un pacchetto senza firmare i sorgenti e i file generati dal comando (.changes e .buildinfo) rispettivamente.
Una volta giunta a termine la compilazione, troveremo (nella directory nomepacchetto da noi creata) una serie di file .deb.
Installazione del pacchetto
Ora possiamo installarli con dpkg o gdebi:
# dpkg -i nomepacchetto_ver.sio.ne.deb
Bene, se non riceviamo errori, il pacchetto è installato.
Guida scritta da: MaXeR | Debianized 40% |
Estesa da: | |
Verificata da:
| |
Verificare ed estendere la guida | Cos'è una guida Debianized |