Veidojam .deb paku (atjaunots)

Moderators: Vecākie lietotāji

Velko
Reģistrēts lietotājs
Atbildes: 19
Pievienojies: 28 Aug 2007, 09:55
Reputācija: 0

Veidojam .deb paku (atjaunots)

Post no Velko » 28 Okt 2007, 12:21

[imgl]https://notepad.lv/bildes/atteli/200 ... 913496.png[/imgl]
Zināms, ka Debian (un arī Ubuntu) programmas tiek pieinstalētas no .deb pakām. Bet ko darīt, ja kāda programma nav dabūjama "sapakotā" veidā? Varam, protams, taisīt tradicionālo ./configure && make && make install, tomēr tādā garā var ātri "piesārņot" sistēmu, ka vairs nevar saprast, kas ir uzinstalēts, kas nav. Š oreiz iesim citu ceļu - veidosim paši savu .deb paku.

Kā piemēru izmantošu Gnome Original Disk Mount applet. Kas tas tāds? "Reiz sensenos laikos" iekš Gnome 2.8 bija, manuprāt, ļoti labs, konfigurējams Disk Mounter applets. Diemžēl sākot ar Gnome 2.10 Disk Mounter applets zaudējis konfigurēšanas iespējas, turklāt visi "mountpointi" izskatās pilnīgi vienādi. Manuprāt nepatīkami. Līdzīgās domās ir arī sākotnējais Disk Mounter autors, kurš to "izvilcis" atsevišķā pakā. Diemžēl .deb neviens no tā nav pacenties izveidot.

Un tā - pie darba. Pārliecinamies, ka mums ir uzinstalētas nepieciešamās pakas:

Code: Select all

apt-get install build-essential fakeroot dh-make autotools-dev
Novelkam un atpakojam sourci

Code: Select all

wget http://kent.dl.sourceforge.net/sourceforge/gqapplets/drivemount-original-applet-2.10.0.tar.gz
tar -xzf drivemount-original-applet-2.10.0.tar.gz
cd drivemount-original-applet-2.10.0/
"Debianizējam":

Code: Select all

dh_make -c gpl -e velko@nospam.org -f ../drivemount-original-applet-2.10.0.tar.gz
dh_make uzdod 2 jautājumus:
  • kādu paku gribam taisīt? Atbildam single binary
  • Vai visi dati pareizi? Spiežam Enter.
Image

dh_make izveidoja apakšdirektoriju debian ar kaudzi pakas izveidošanai nepieciešamu failu. Tagad mums šie faili jāpiekoriģē savām vajadzībām.

Sāksim ar "birokrātiju": copyright. Lielākā daļa teksta jau tur ir, atliek aizpildīt trūkstošās vietas.

Code: Select all

This package was debianized by Velko <velko> on
Sat, 20 Oct 2007 14&#58;56&#58;52 +0300.

It was downloaded from http&#58;//gqapplets.sourceforge.net/applet-mount.html

Upstream Author&#58; John Ellis <johne>

Copyright&#58; &#40;C&#41; 2005 John Ellis
           &#40;C&#41; 1999-2004 The GNOME Hackers
           &#40;C&#41; 1998 John Ellis &#40;original code&#41;
Nākošais changelog. Arī "birokrātija", tomēr šis fails arī nosaka kāds versijas numurs tiks piešķirts pakai. Atkal - lielākā daļa teksta jau tur ir, pielabojam nepieciešamo.

Code: Select all

drivemount-original-applet &#40;2.10.0-1&#41; unstable; urgency=low

  * Initial release

 -- Velko <velko>  Sat, 20 Oct 2007 14&#58;56&#58;52 +0300
Manuprāt ķēpīgākais fails: control. Tas nosaka pakas atkarības, aprakstu utml.

Aizpildam Description un garo aprakstu. Depends šajā gadījumā atstājam kā ir - tas aizpildīsies automātiski. Bet tagad visnepatīkamākais: Build-Depends. Š eit jānorāda pakas, kurām jābūt uzinstalētām, lai šo paku varētu nokompilēt. Diemžēl gatavas receptes, kā noteikt kas te būtu rakstāms nav. Viens no veidiem - mēģināt kompilēt (skat. tālāk), tad skatīties kas pietrūkst, pieinstalēt, pierakstīt šeit un mēģināt atkal, kamēr izdodas. Galu galā man sanāca šāds fails:

Code: Select all

Source&#58; drivemount-original-applet
Section&#58; unknown
Priority&#58; extra
Maintainer&#58; Velko <velko>
Build-Depends&#58; debhelper &#40;>= 5&#41;, autotools-dev, intltool, libpanel-applet2-dev
Standards-Version&#58; 3.7.2

Package&#58; drivemount-original-applet
Architecture&#58; any
Depends&#58; $&#123;shlibs&#58;Depends&#125;, $&#123;misc&#58;Depends&#125;
Description&#58; Gnome Disk Mounter &#40;the original&#41;
 The original drive mount applet that was a part of the gnome-applets
 package through GNOME 2.8, for 2.10 they decided to rewrite it and
 drop usability. &#40;sigh&#41;
rules. Š is fails nosaka, kā tiks būvēta paka. Š eit ir vairākas sadaļas, kā pakas kods tiek konfigurēts, kompilēts, kā tiek veidota .deb paka. Parasti dh_make šett izdara visu kā nākas, tā ka pagaidām šaja failā neko nemainam.

README.Debian šeit būtu jāraksta piezīmes, specifiskas Debian. Tā kā mums nekādu īpašo piezīmju nav, tad šo failu dzēšam.

Tagad varam mēģināt kompilēt paku:

Code: Select all

fakeroot dpkg-buildpackage
Ja met kādas kļūdas, tad skatamies, kas pietrūkst, pierakstam attiecīgo paku control/Build-Depends, pieinstalējam to un mēģinam vēlreiz.

Kad beidzot kompilācija nostrādā, izveidojas debian/drivemount-original-applet mape. Š eit varam apskatīties, kādi faili, kurās vietās nonāks. Redzam, ka pats applets tiks instalēts /usr/libexec/. Tomēr Debian visus pārējos Gnome appletus glabā /usr/lib/gnome-applets/. Kaut gan applets darbosies arī tā, tomēr tas nebūtu īsti pareizi.

Rediģējam rules failu, lai nomainītu atrašanās vietu (pierakstīju klāt --libexecdir):

Code: Select all

config.status&#58; configure
	dh_testdir
	# Add here commands to configure the package.
	./configure --host=$&#40;DEB_HOST_GNU_TYPE&#41; --build=$&#40;DEB_BUILD_GNU_TYPE&#41; \
	    --prefix=/usr --mandir=\$$&#123;prefix&#125;/share/man --infodir=\$$&#123;prefix&#125;/share/info \
	    --libexecdir=\$$&#123;exec_prefix&#125;/lib/gnome-applets \
            CFLAGS="$&#40;CFLAGS&#41;" LDFLAGS="-Wl,-z,defs"
Kompilējam vēlreiz - tagad applets nonāk "pareizajā" vietā - /usr/lib/gnome-applets/.

Protams, dpkg-buildpackage ir izveidojis arī atbilstošo .deb paku, Tā meklējama "soli augstāk" - blakus arhīvam, no kura izpakojām sourci.

Pievienojam paku personīgajam repozitorijam, vai instalējam pa tiešo:

Code: Select all

dpkg -i drivemount-original-applet_2.10.0-1_i386.deb
Pēc pakas pieinstalēšanas spiežam ar labo taustiņu uz kāda no Gnome paneļiem, ņemam Add to Panel... Atveras saraksts, kurā atrodams arī mūsu applets:
Image

Lūk arī Disk Mounter darbībā. Tā tas izskatās uz Gnome Panel (3 eksemplāri - CDROM, ārējais HDD un Flash):
Image

Konfigurācijas dialogs:
Image

Happy packaging!

User avatar
samurajs
Administrators
Atbildes: 14988
Pievienojies: 06 Mar 2007, 15:04
Reputācija: 0
Atrodas: Liepājas anomālā zona

Post no samurajs » 28 Okt 2007, 20:48

Paldies autoram, lielisks raksts! Praktiskajā darbā noderēs.
Image

Pievienot atbildi

Return to “Raksti”