Applicare una patch ad un pacchetto Debian: differenze tra le versioni
S3v (discussione | contributi) (aggiornata con contenuti di "Aggiungere una patch a un pacchetto Debian" (vedere task #48 della revisione Wiki)) |
(verificata, spostata sezione relativa ad apt-build in "Apt-build: ottimizzazione dei pacchetti") |
||
(2 versioni intermedie di 2 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili}} | {{Versioni compatibili|Jessie|Stretch|Buster}} | ||
== Introduzione == | == 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 == | == Preparazione del sistema == | ||
Per prima cosa bisogna assicurarsi di avere, in <code>/etc/apt/sources.list</code>, 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]]: | |||
<pre> | <pre> | ||
# apt-get update | # apt-get update | ||
</pre> | </pre> | ||
== | == Scaricare i sorgenti == | ||
Iniziamo, per avere tutto in ordine, a creare una cartella di lavoro: | Iniziamo, per avere tutto in ordine, a creare una cartella di lavoro: | ||
<pre> | <pre> | ||
Riga 34: | Riga 25: | ||
$ apt-get source nomepacchetto | $ apt-get source nomepacchetto | ||
</pre> | </pre> | ||
così facendo scaricheremo tre file. Sarà creata automaticamente anche una directory sulla base dei due file compressi .tar.gz . Il risultato sarà, ad esempio: | così facendo scaricheremo tre file. Sarà creata automaticamente anche una directory sulla base dei due file compressi .tar.gz . Il risultato sarà, ad esempio: | ||
<pre> | <pre> | ||
Riga 44: | Riga 34: | ||
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'). | 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: | 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> | ||
Riga 49: | Riga 40: | ||
</pre> | </pre> | ||
Scaricati tutti i pacchetti necessari, possiamo entrare nella directory automaticamente creata da | Scaricati tutti i pacchetti necessari, possiamo entrare nella directory automaticamente creata da <code>apt-get source</code> (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: | Supponendo che la patch non sia compressa: | ||
<pre> | <pre> | ||
Riga 59: | Riga 52: | ||
</pre> | </pre> | ||
== Compilazione == | |||
Una volta applicata la patch, se non riceviamo errori, siamo pronti a compilare il pacchetto.<br/> | Una volta applicata la patch, se non riceviamo errori, siamo pronti a compilare il pacchetto.<br/> | ||
Per fare questo utilizzeremo un altro tool Debian: | Per fare questo utilizzeremo un altro tool Debian: <code>dpkg-buildpackage</code> (installato in automatico con <code>apt-get build-dep</code>); come segue: | ||
<pre> | <pre> | ||
# dpkg-buildpackage -us -uc | # dpkg-buildpackage -us -uc | ||
</pre> | </pre> | ||
Con i parametri <code>-us</code> e <code>-uc</code> 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]]: | Ora possiamo installarli con [[dpkg]] o [[gdebi]]: | ||
<pre> | <pre> | ||
Riga 72: | Riga 69: | ||
Bene, se non riceviamo errori, il pacchetto è installato. | Bene, se non riceviamo errori, il pacchetto è installato. | ||
{{Autori | {{Autori | ||
|Autore = [[User:MaXeR|MaXeR]] | |Autore = [[User:MaXeR|MaXeR]] | ||
|Verificata_da = | |||
:[[Utente:HAL 9000|HAL 9000]] 10:20, 7 set 2019 (CEST) | |||
|Numero_revisori = 1 | |||
}} | }} | ||
[[Categoria:Apt]] | [[Categoria:Apt]] | ||
[[Categoria:Creare e modificare pacchetti]] | [[Categoria:Creare e modificare pacchetti]] |
Versione attuale delle 08:20, 7 set 2019
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 |