[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Ricreare pacchetto debian per applicare patch



On Monday 01 June 2015 11:39:21 you wrote:
> 
> Dovrei applicare una patch al pacchetto libmbim per cercare di capire
> dove stia il problema e fare qualche test.
> 
> Mi potreste dare una dritta e magari un documento cui far riferimento?
> Grazie in anticipo!

Mi rispondo da solo.
Allora intanto ho preso spunto in parte da questo documento:

https://wiki.debian.org/BuildingTutorial

Sintetizzando grosso modo il meccanismo è il seguente:
il generico pacchetto .deb o, come in questo caso il set di pacchetti
.deb relativi ad un certo tarball di sorgenti vanilla viene generato

- spacchettando il tarball vanilla
- copiandovi dentro la subdir "debian"
- editando il file "debian/changelog"
- lanciando "fakeroot debian/rules"

Il tarball vanilla si prende dal sito del software stesso.
Oppure si genera a partire per esempio dal ramo di sviluppo GIT,
CVS, SVN, a seconda di quale modalità collaborativa hanno scelto
gli sviluppatori per mantenerlo.
Per esempio nel caso di "libmbim" lo sviluppo è basato su GIT.
Per generare il tarball vanilla relativo alla versione di sviluppo
penso che non ci sia un metodo generico, ma varia da software a
software. Nel mio caso ho chiesto la procedura direttamente agli
sviluppatori:

--------------------------------------------------------
mkdir -p /build/git
cd /build/git
git clone git://anongit.freedesktop.org/libmbim/libmbim
cd libmbim
NOCONFIGURE=1 ./autogen.sh
./configure --enable-gtk-doc
make
make distcheck
---------------

Così ottengo il pacchetto "libmbim-1.13.0.tar.xz" nella dir corrente
ed ecco che il tarball vanilla l'abbiamo ottenuto.

Adesso serve la subdir "debian" collocata nei sorgenti spacchettati
del pacchetto sorgente debian. Vi mostro di seguito i passaggi per
spiegarmi meglio con l'esempio:

-----------------
# mkdir -p /build/libmbim/1.12.2
# cd /build/libmbim/1.12.2
# apt-get source libmbim
# ls -F1 /build/libmbim/1.12.2/
libmbim-1.12.2/
libmbim_1.12.2-2.debian.tar.xz
libmbim_1.12.2-2.dsc
libmbim_1.12.2.orig.tar.xz

# ls -F1 libmbim-1.12.2/debian/
changelog
compat
control
copyright
gbp.conf
libmbim-glib-dev.install
libmbim-glib-doc.doc-base
libmbim-glib-doc.install
libmbim-glib4.docs
libmbim-glib4.install
libmbim-glib4.lintian-overrides
libmbim-glib4.symbols
libmbim-proxy.install
libmbim-utils.install
mbimcli.1
rules*
source/
watch
-----

l'ultimo comando mette in evidenza la subdir "debian"
che ci serve e che non è presente nel tarball vanilla
nuovo. In pratica eliminando quella subdir si ottiene
il contenuto del tarball vanilla relativo alla versione
vecchia del software.

Quindi la procedura prevede in prima battuta di copiare
la dir "debian" nei nuovi sorgenti vanilla.
Ecco il seguito:

-------------------
/build/libmbim# pwd
/build/libmbim

/build/libmbim# ls -F *
1.12.2:
libmbim-1.12.2/  libmbim_1.12.2-2.debian.tar.xz  libmbim_1.12.2-2.dsc
libmbim_1.12.2.orig.tar.xz

1.13.0:

/build/libmbim/1.13.0# cd 1.13.0

/build/libmbim/1.13.0# tar xvJf /build/git/libmbim/libmbim-1.13.0.tar.xz

/build/libmbim/1.13.0# ls
libmbim-1.13.0

/build/libmbim/1.13.0# cp ../1.12.2/libmbim-1.12.2/debian
libmbim-1.13.0/

/build/libmbim/1.13.0# cd libmbim-1.13.0/
-----------------------------------------

A questo punto siamo nella dir di lavoro da cui creeremo il nuovo
set di pacchetti binari .deb.
Ma prima occorre cambiare almeno il nome della versione del software
coerentemente, se lanciassimo "fakeroot debian/rules" adesso, otterremmo
un set di pacchetti deb del tipo:
libmbim-glib-dev_1.12.2-2_i386.deb
Ovvero il nome del pacchetto sarebbe identico a quello delal versione
"1.12.2-2" e quando andremo ad installarli con dpkg potrbbero esserci
problemi se avessimo la versione vecchia preinstallata...

Per cambiare nome al pacchetto si deve editare debian/changelog, nel mio
caso vi ho aggiunto in testa quanto segue (con un po' di fantasia...).

-----------------------------------------------
libmbim (1.13.0-1) experimental; urgency=medium

  * Imported Upstream version 1.13.0

   -- Me <me@debian.invalid>  Wed, 03 Jun 2015 15:18:23 +0100
--------------------------------------------------------------

questo punto poteva essere anche fatto in modo automatizzato
e probabilmente più elegante sfruttando il comando:

--------------------
debchange -v 1.13.0
--------------------

Perfetto ora si può creare il nostro set di pacchetti binari e
finalmente installarli con dpkg e rifinire l'installazione con apt:

------------------------------------------------------------------
/build/libmbim/1.13.0/libmbim-1.13.0# fakeroot debian/rules clean

/build/libmbim/1.13.0/libmbim-1.13.0# fakeroot debian/rules binary

/build/libmbim/1.13.0/libmbim-1.13.0# ls ..
libmbim-1.13.0                      libmbim-glib-doc_1.13.0-1_all.deb
libmbim-glib4_1.13.0-1_i386.deb  libmbim-utils_1.13.0-1_i386.deb
libmbim-glib-dev_1.13.0-1_i386.deb  libmbim-glib4-dbg_1.13.0-1_i386.deb
libmbim-proxy_1.13.0-1_i386.deb

/build/libmbim/1.13.0/# dpkg -i *deb

/build/libmbim/1.13.0/# apt-get install -f

/build/libmbim/1.13.0/# dpkg -l |grep libmbim
ii libmbim-glib-dev:i386 1.13.0-1 i386 Header files for adding MBIM
                                       support to applications that
				       use glib
ii libmbim-glib-doc      1.13.0-1  all API documentation for the MBIM
                                       protocol library
ii libmbim-glib4:i386    1.13.0-1 i386 Support library to use the MBIM
                                       protocol
ii libmbim-glib4-dbg     1.13.0-1 i386 Support library to use the MBIM
protocol
ii libmbim-proxy         1.13.0-1 i386 Proxy to communicate with MBIM
                                       ports
ii libmbim-utils         1.13.0-1 i386 Utilities to use the MBIM
                                       protocol from the command line

----------------------------------------------------------------------

Come si vede in ultimo, ecco che i nuovi paccchetti risultano installati
regolarmente.

Per tutto quello che concerne l'installazione degli strumenti necessari
alla procedura descritta vi rimando al link in cima "BuildinTutorial".
Infatti tra le altre cose, tramite:

apt-get build-dep nome-pacchetto

si può ottenere tutto il necesario. Ripeto la pagina del wiki linkata
è fatta bene e in fondo vi è anche un'utilissima FAQ.

Spero possa tornare utile anche ad altri.
Alla prossima!


Reply to: