Applicare una patch ad un pacchetto Debian: differenze tra le versioni
(Prima versione) |
(verificata, spostata sezione relativa ad apt-build in "Apt-build: ottimizzazione dei pacchetti") |
||
(18 versioni intermedie di 10 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
==Introduzione== | {{Versioni compatibili|Jessie|Stretch|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 <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: | ||
<pre> | <pre> | ||
$ mkdir | $ mkdir sorgenti && cd sorgenti | ||
</pre> | </pre> | ||
Riga 50: | 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: | |||
<pre> | |||
nomepacchetto-versione | |||
nomepacchetto_versione.debian.tar.gz | |||
nomepacchetto_versione.orig.tar.gz | |||
nomepacchetto_versione.dsc | |||
</pre> | |||
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: | |||
<pre> | <pre> | ||
# apt-get build-dep nomepacchetto | |||
</pre> | </pre> | ||
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: | |||
<pre> | <pre> | ||
$ patch -p1 < patch.patch | $ patch -p1 < patch.patch | ||
</pre> | </pre> | ||
Se fosse compressa: | |||
<pre> | <pre> | ||
$ zcat patch.patch | patch -p1 | $ zcat patch.patch | patch -p1 | ||
</pre> | </pre> | ||
Una volta applicata la patch, se non riceviamo errori, siamo pronti a | == Compilazione == | ||
compilare il pacchetto. | Una volta applicata la patch, se non riceviamo errori, siamo pronti a compilare il pacchetto.<br/> | ||
Per fare questo utilizzeremo un altro tool Debian: dpkg-buildpackage | 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 | # 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]]: | |||
<pre> | <pre> | ||
# dpkg -i nomepacchetto_ver.sio.ne.deb | # dpkg -i nomepacchetto_ver.sio.ne.deb | ||
</pre> | </pre> | ||
Bene, se non riceviamo errori | Bene, se non riceviamo errori, il pacchetto è installato. | ||
{{Autori | |||
|Autore = [[User:MaXeR|MaXeR]] | |||
|Verificata_da = | |||
:[[Utente:HAL 9000|HAL 9000]] 10:20, 7 set 2019 (CEST) | |||
|Numero_revisori = 1 | |||
}} | |||
[[Categoria:Apt]] | |||
[[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 |