3 581
contributi
m (Aggiornamento mirror default con il più efficiente httpredir) |
(verificata, spostata sezione relativa ad apt-build in "Apt-build: ottimizzazione dei pacchetti") |
||
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]] |
contributi