Veidojam .deb paku (atjaunots)

Sākumlapa Forumi Notepad.lv IT ziņas Raksti Veidojam .deb paku (atjaunots)

Tiek skatīts 2 ierakstu – 1 līdz 2 (no 2 kopumā)
  • Autors
    Ieraksti
  • #146118
    Velko
    Participant

    [imgl]https://notepad.lv/bildes/atteli/20071028120913496.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:


    apt-get install build-essential fakeroot dh-make autotools-dev


    Novelkam un atpakojam sourci

    Code:


    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:


    dh_make -c gpl -e [email protected] -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.
  • [img]https://notepad.lv/bildes/atteli/20071028121115947.jpg[/img]

    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:

    This package was debianized by Velko on
    Sat, 20 Oct 2007 14:56:52 +0300.

    It was downloaded from http://gqapplets.sourceforge.net/applet-mount.html

    Upstream Author: John Ellis

    Copyright: (C) 2005 John Ellis
    (C) 1999-2004 The GNOME Hackers
    (C) 1998 John Ellis (original code)


    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:

    drivemount-original-applet (2.10.0-1) unstable; urgency=low

    * Initial release

    — Velko Sat, 20 Oct 2007 14:56: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:

    Source: drivemount-original-applet
    Section: unknown
    Priority: extra
    Maintainer: Velko
    Build-Depends: debhelper (>= 5), autotools-dev, intltool, libpanel-applet2-dev
    Standards-Version: 3.7.2

    Package: drivemount-original-applet
    Architecture: any
    Depends: ${shlibs:Depends}, ${misc:Depends}
    Description: Gnome Disk Mounter (the original)
    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. (sigh)


    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:


    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:

    config.status: configure
    dh_testdir
    # Add here commands to configure the package.
    ./configure –host=$(DEB_HOST_GNU_TYPE) –build=$(DEB_BUILD_GNU_TYPE)
    –prefix=/usr –mandir=$${prefix}/share/man –infodir=$${prefix}/share/info
    –libexecdir=$${exec_prefix}/lib/gnome-applets
    CFLAGS=”$(CFLAGS)” 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:


    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:

    [img]https://notepad.lv/bildes/atteli/20071028121248335.png[/img]

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

    [img]https://notepad.lv/bildes/atteli/20071028121347569.png[/img]

    Konfigurācijas dialogs:

    [img]https://notepad.lv/bildes/atteli/2007102812145912.png[/img]

    Happy packaging!

#171524
samurajs
Participant

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

Tiek skatīts 2 ierakstu – 1 līdz 2 (no 2 kopumā)
  • Jums ir jāpieslēdzas sistēmai, lai varētu komentēt šo tēmu.
Jaunākais portālā