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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
mNessun oggetto della modifica
Riga 5: Riga 5:
Prima di proseguire, però, vedremo quando non è possibile farlo:
Prima di proseguire, però, vedremo quando non è possibile farlo:
* il pacchetto non è stato distribuito anche in forma di sorgenti (capita per
* il pacchetto non è stato distribuito anche in forma di sorgenti (capita per
qualche repository non ufficiale e per alcuni pecchetti uff. (una volta mi era
qualche repository non ufficiale e per alcuni pacchetti ufficiali (una volta mi era
successo...).
successo...).



Versione delle 00:27, 4 gen 2010

Introduzione

In questo howto vedremo come sia possibile applicare una patch ad un pacchetto ufficiale Debian. Prima di proseguire, però, vedremo quando non è possibile farlo:

  • il pacchetto non è stato distribuito anche in forma di sorgenti (capita per

qualche repository non ufficiale e per alcuni pacchetti ufficiali (una volta mi era successo...).


Preparazione del sistema

Per prima cosa bisogna assicurarsi di avere, in /etc/apt/sources.list, le sorgenti per scaricare i pacchetti di tipo deb-src:

#--CUT HERE--#
#per stable
deb-src http://ftp2.it.debian.org/debian/ stable main non-free contrib
deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib
non-free

#per testing
deb-src http://ftp2.it.debian.org/debian/ testing main non-free contrib
deb-src http://non-us.debian.org/debian-non-US testing/non-US main contrib
non-free

#per unstable
deb-src http://ftp2.it.debian.org/debian/ sid main non-free contrib
deb-src http://non-us.debian.org/debian-non-US sid/non-US main contrib non-free
#--CUT HERE--#

ora aggiorniamo il contenuto del database dei pacchetti:

# apt-get update


Procediamo

Metodo 1: `apt-get source && dpkg-buildpackage`

Per scaricare i sorgenti, seguiamo questa procedura: Per avere tutto in ordine, creiamo una cartella di lavoro

$ mkdir nomepacchetto && cd nomepacchetto

Ora possiamo scaricare i sorgenti:

$ apt-get source nomepacchetto

così facendo, scaricheremo 3 file, che verranno decompressi in una cartella (nomepacchetto-ver.sio.ne)

Ora possiamo entrare in questa cartella, scaricare la patch e applicarla:

$ cd nomepacchetto-ver.sio.ne
$ wget http://indirizzo/per/la/patch.patch

supponendo che la patch non sia compressa...

$ patch -p1 < patch.patch

se è compressa:

$ zcat patch.patch | patch -p1

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

# dpkg-buildpackage

Il comando proverà a compilare il pacchetto, ed in caso di errori ci chiederà di sistemare le dipendenze (se l'errore è dovuto alla mancanza di alcune librerie) elencando tutti i pacchetti necessari, installabili con un normale

# apt-get build-dep 'nomepacchetto_da_installare'

una volta giunta a termine la compilazione, troveremo (nella cartella nomepacchetto da noi creata) una serie di file .deb! ora possiamo installarli:

# dpkg -i nomepacchetto_ver.sio.ne.deb

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


Metodo 2: `apt-build`

Prima di iniziare, è d'obbligo una introduzione su apt-build. Questo tool è abbastanza giovane, e consente di compilare i pacchetti Debian ottimizzandoli per la propria macchina. Durante l'installazione vengono poste delle domande (tipo di processore, livello di ottimizzazione), e rispondendo nel modo opportuno, sarà possibile compilare i pacchetti ottimizzandoli per la propria macchina, cosa che, nel METODO 1 non avviene.

Apt-build ci mette a disposizione una opzione, --patch, che consente di applicare delle patch al pacchetto da installare. Vediamo, ora, come fare. Scarichiamo la patch:

$ wget http://indirizzo/per/la/patch.patch

ora diamo il semplice comando:

# apt-build -p 0 --patch patch.patch install 'pacchetto'

ora mettiamoci comodi, armati di tazzona di caffè (rigorosamente marchiata con un bel Tux) e controlliamo a video mentre:

  • vengono scaricate i pacchetti *-dev per la compilazione;
  • viene aggiornato l'elenco dei pacchetti dei vari repository (usare l'opzione --noupdate per evitarlo);
  • vengono scaricati i sorgenti del pacchetto;
  • viene applicata la patch;
  • inizia la compilazione del pacchetto:
  • viene/vengono installato/i il/i pacchetto/i generato/i.

Bene, ora il pacchetto è installato nel vostro sistema!



MaXeR