Applicare una patch ad un pacchetto Debian

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Debian-swirl.png 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 Swirl-auth40.png Debianized 40%
Estesa da:
Verificata da:
HAL 9000 10:20, 7 set 2019 (CEST)

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