Applicare una patch ad un pacchetto Debian: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
(verificata, spostata sezione relativa ad apt-build in "Apt-build: ottimizzazione dei pacchetti")
 
(12 versioni intermedie di 8 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.


Da qualche anno si sono diffusi i 'pen drive', delle pennine usb con dei chip di memoria, per portare sempre con se ogni informazione.
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]].
Linux, in questo campo, ha sempre sofferto di un problema: il mount e umount delle periferiche...
Ora, grazie a questo interessante pacchetto, � possibile automatizzare questa procedura e, anzi, renderla ancora pi� semplice e comoda.


== 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.


==Installazione==
Di default sono già abilitate. In caso di dubbi, si rimanda alla lettura della guida: [[I repository ed il loro utilizzo]].


Per installare usbmount, bisogna scaricare il pacchetto Debian (che per ora non � ancora stato incluso nei repository ufficiali) dal sito del progetto: http://usbmount.alioth.debian.org/ (i pacchetti si trovano qui: http://usbmount.alioth.debian.org/package/).
In caso di modifiche, ricordarsi di aggiornare il contenuto del database dei pacchetti, con [[privilegi di amministrazione]]:
Una volta scaricato, � sufficiente aprire una shell, e da root dare il seguente comando:
<pre>
<pre>
# dpkg -i /path/per/raggiungere/il/pacchetto/usbmount_v.e.r.deb
# apt-get update
</pre>
</pre>
L'errore che si potrebbe riscontrare � la mancanza di udev, la cui risoluzione � molto semplice:
 
== Scaricare i sorgenti ==
Iniziamo, per avere tutto in ordine, a creare una cartella di lavoro:
<pre>
<pre>
# apt-get install udev
$ mkdir sorgenti && cd sorgenti
</pre>
</pre>


Ora possiamo scaricare i sorgenti:
<pre>
$ apt-get source nomepacchetto
</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>
# apt-get build-dep nomepacchetto
</pre>


==Configurazione==
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.


Il pacchetto non necessita di riconfigurazione, in quanto i valori di default sono ottimali. Analizziamo comunque i file di configurazione e le opzioni: il file contenente la configurazione di usbmount � '''/etc/usbmount.conf'''.<br/>
== Applicare la patch ==
Le direttive sono:<br/>
Supponendo che la patch non sia compressa:
* '''MOUNTPOINTS''' Indicano le directory in cui dovranno essere montate le periferiche. Viene sempre utilizzata la prima disponibile (cosa molto comoda) e, se non sono presenti, vengono create.<br/>
<pre>
* '''FILESYSTEMS''' Contiene la lista dei filesystem da provare, quando si esegue il mount del device. Il mio consiglio � di avere prima vfat e poi msdos, per evitare problemi di 'storpiatura' dei nomi dei file.<br/>
$ patch -p1 < patch.patch
* '''MOUNTOPTIONS''' Serve per indicare le opzioni da passare al mount del device. Se non � presente, consiglio l'aggiunta dell'opzione 'quiet' che elimina i messaggi di errore relativi all'assenza di permessi nei filesystem di tipo fat.<br/>
</pre>
* '''VERBOSE''' Utile per il debug (e se qualche cosa non va come deve). In caso di dubbio, lasciare su 'no'.<br/>
Se fosse compressa:
<pre>
$ zcat patch.patch | patch -p1
</pre>


== Compilazione ==
Una volta applicata la patch, se non riceviamo errori, siamo pronti a compilare il pacchetto.<br/>
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>
# dpkg-buildpackage -us -uc
</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.


==Utilizzo==
Una volta giunta a termine la compilazione, troveremo (nella directory ''nomepacchetto'' da noi creata) una serie di file .deb.


L'utilizzo � piuttosto semplice.
== Installazione del pacchetto ==
� sufficiente inserire il dispositivo, aspettare un secondo, e recarsi nella directory /media/usb (o usb0, usb1, ...), dove verr� montata la periferica.
Ora possiamo installarli con [[dpkg]] o [[gdebi]]:
Per poter leggere e scrivere, bisogna appartenere al gruppo 'floppy': per ottenere ci� e sufficiente un
<pre>
<pre>
# adduser nomeutente floppy
# dpkg -i nomepacchetto_ver.sio.ne.deb
</pre>
</pre>
Ovviamente il gruppo modificabile nelle impostazioni di usbmount.
Per quanto riguarda l'umount, non bisogna preoccuparsi: le periferiche sono montate con la flag 'sync' attiva, che comporta un accesso in scrittura in tempo reale. Per evitare perdite di dati basta aspettare il termine della copia dei dati, dopo di che possibile rimuoverla direttamente (facendo attenzione a non aver aperte applicazioni che accedono al mountpoint del device).


Bene, se non riceviamo errori, il pacchetto è installato.


==Conclusioni==
{{Autori
|Autore = [[User:MaXeR|MaXeR]]
|Verificata_da =
:[[Utente:HAL 9000|HAL 9000]] 10:20, 7 set 2019 (CEST)
|Numero_revisori = 1
}}


UsbMount � una utility ancora giovane, che sicuramente verr� migliorata, ed ampliata. Sicuramente diventer� un must su tutti i computer (sinceramente, non riesco a farne a meno ^_^)!
[[Categoria:Apt]]
[[Categoria:Creare e modificare pacchetti]]

Versione attuale delle 08:20, 7 set 2019

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