abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 10:20 | Komunita

Projekt GNU dnes slaví 33 let. Přesně před třiatřiceti lety, 27. září 1983, Richard Stallman oznámil, že se chystá napsat s Unixem kompatibilní operační systém GNU (Gnu's Not Unix).

Ladislav Hagara | Komentářů: 0
včera 20:20 | Bezpečnostní upozornění

Byly vydány verze 1.1.0b a 1.0.2j kryptografické knihovny OpenSSL. Dle bezpečnostního upozornění byly opraveny bezpečnostní chyby CVE-2016-6309 (Debian) a CVE-2016-7052 (Debian) způsobené nepříliš povedenou opravou bezpečnostních chyb minulý týden (zprávička).

Ladislav Hagara | Komentářů: 0
včera 17:47 | Komunita

Byly zveřejněny videozáznamy přednášek a prezentace (pdf) z konferencí vývojářů LLVM a GNU Tools. Konference proběhly v městečku Hebden Bridge. Jednodenní konference LLVM Cauldron 2016 proběhla 8. září. Od 9. do 11. září probíhala na stejném místě třídenní konference GNU Tools Cauldron 2016.

Ladislav Hagara | Komentářů: 0
včera 12:43 | Nová verze

Po téměř 11 měsících vývoje od verze 0.10.0 (zprávička) byla vydána verze 0.11.0 hardwarově nenáročného desktopového prostředí LXQt (Lightweight Qt Desktop Environment) vzniklého sloučením projektů Razor-qt a LXDE (zprávička). Z novinek lze zmínit například pavucontrol-qt, Qt port audio mixéru pavucontrol z projektu PulseAudio. V lxqt-config přibyla možnost nastavování jasu. Vylepšena byla podpora více monitorů.

Ladislav Hagara | Komentářů: 19
včera 12:00 | Nová verze

Po 9 měsících vývoje byla vydána nová verze 0.5.0 (GitHub) klasické 2D plošinovky inspirované sérií Super Mario SuperTux. Z novinek lze zmínit především nový integrovaný editor umožnující editovat úrovně a mapy přímo ze hry.

Ladislav Hagara | Komentářů: 0
24.9. 14:11 | Komunita

Už jenom do pondělí 3. října lze přihlásit přednášku nebo workshop, nebo také navrhnout zajímavé téma nebo osobu, na brněnskou open source, open mind a open hardware konferenci OpenAlt 2016, jež navazuje na konference LinuxAlt a Openmobility a proběhne 5. a 6. listopadu 2016. Inspirovat se lze loňským ročníkem.

Ladislav Hagara | Komentářů: 0
24.9. 13:33 | Nová verze

Po šesti týdnech od vydání verze 5.1.0 (zprávička) byla vydána verze 5.2.0 správce digitálních fotografií digiKam (digiKam Software Collection). Kromě oprav chyb, v Bugzille bylo uzavřeno 42 záznamů, přináší nejnovější digiKam také nový nástroj pro potlačení efektu červených očí vytvořený v rámci letošního Google Summer of Code 2016.

Ladislav Hagara | Komentářů: 0
24.9. 12:55 | Bezpečnostní upozornění

Americká společnost Yahoo, provozující stejnojmenný internetový portál, oficiálně potvrdila bezpečnostní incident z konce roku 2014. Dle tiskové zprávy ukradl státem podporovaný útočník údaje o 500 milionech uživatelích. Jedná se o jejich jména, emailové adresy, telefonní čísla, data narození, haše hesel (bcrypt) a v některých případech také bezpečnostní otázky a odpovědi na ně.

Ladislav Hagara | Komentářů: 0
23.9. 16:46 | Nová verze

Po třech týdnech od vydání wattOS R10 LXDE oznámili vývojáři odlehčené linuxové distribuce wattOS také vydání wattOS R10 Microwatt. Obě vydání vycházejí z Ubuntu 16.04.1 LTS. Výchozím správcem oken v Microwattu je dlaždicový (tiling) i3, webovým prohlížečem Surf, správcem souborů PCManFM a pdf prohlížečem Mupdf. Ukázka prostředí na YouTube.

Ladislav Hagara | Komentářů: 5
23.9. 01:01 | Zajímavý projekt

Vidar Holen aktualizoval svůj přehled s počty (sprostých) slov (Internet Archive) obsažených ve zdrojových kódech Linuxu. Nejedná se pouze o přidání zdrojových kódů nových verzí Linuxu. Přidána byla především možnost definování si vlastních slov.

Ladislav Hagara | Komentářů: 25
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (27%)
 (30%)
 (32%)
 (7%)
 (4%)
 (0%)
Celkem 142 hlasů
 Komentářů: 3, poslední dnes 09:40
    Rozcestník
    Reklama

    Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)

    30. 6. 2008 | Michal Čihař | Návody | 7037×

    Byrokracii máme úspěšně za sebou a dnes se poprvé pokusíme vytvořit vlastní balíček.

    Obsah

    Trocha teorie na úvod

    link

    Balíček pro Debian se kompiluje spuštěním souboru debian/rules. Dříve mohl být tento skript libovolný, ale v současné době se už musí jednat o makefile (tedy skript pro Make) s pevně danou sadou cílů:

    • build - povinný cíl, který zkompiluje program
    • build-arch a build-indep - volitelné cíle pro kompilaci architekturově závislých a nezávislých částí balíčku
    • binary, binary-arch, binary-indep - povinné cíle pro vytvoření balíčku; první vytvoří všechny, další dva opět jen balíčky závislé respektive nezávislé na architektuře
    • clean - povinný cíl, který má za úkol vrátit vše, co mohly provést výše uvedené cíle
    • get-orig-source - volitelný cíl, který by měl vytvořit soubor orig.tar.gz, pokud je pro jeho vytváření potřeba nějaká úprava originálního zdroje

    Tučně zvýrazněné cíle tedy musí mít každý balíček. Kromě těchto cílů si můžeme definovat libovolné vlastní, obvyklé ještě bývá mít cíle configure pro konfiguraci (tedy například puštění skriptu ./configure) a install pro provedení instalace (make install).

    Potřebné nástroje

    link

    Pro kompilaci balíčků potřebujeme minimálně sadu nazvanou "build essentials"; tyto balíčky se nám nainstalují při instalaci balíčku build-essential.

    Dále by se všechny balíčky měly kompilovat pod superuživatelem root, aby bylo možné vytvářet soubory se správnými právy. Protože to však není zrovna bezpečná cesta, vznikl wrapper fakeroot (ve stejnojmenném balíčku), který předstírá, že proces běží pod uživatelem root a přístupy na soubory emuluje tak, aby přístupová práva zůstala zachována po dobu jeho běhu. Pro kompilační proces tak vše vypadá, že běží pod superuživatelem, ale ve skutečnosti se používá běžný účet uživatele.

    Poslední nástroj, který nám usnadní práci, bude dh-make. Ten použijeme na vytvoření základní kostry balíčku. Postup v články byl zkoušen s verzí 0.44 a je možné, že jiné verze budou produkovat trochu jiné výsledky.

    Před dalším krokem proto nainstalujte vše potřebné:

    # apt-get install dh-make fakeroot build-essential

    Náš první balíček

    link

    Jako ukázkový balíček zabalíme aplikaci hello. Nedělá nic užitečného, ale na pochopení základů vytváření balíčků nám postačí. Vytváření balíčku obvykle spočívá v mnoha krocích, a proto byl vytvořen nástroj dh_make (z balíčku dh-make), který nám základní kroky usnadní.

    Program dh_make vytvoří základní strukturu balíčku, předhodí nám hromadu ukázkových souborů a vůbec se snaží zjednodušit první kroky. Jak již víme z prvního dílu, originální tarball by se měl jmenovat trochu jinak než ten stažený, takže ho přejmenujeme a rozbalíme:

    $ wget -q http://osdn.dl.sourceforge.net/sourceforge/abeni/hello-0.1.tar.gz
    $ mv hello-0.1.tar.gz hello_0.1.orig.tar.gz
    $ tar xfz hello_0.1.orig.tar.gz 
    $ cd hello-0.1/

    Nyní již může přijít na řadu dh_make. Ten můžeme pustit bez jakýchkoliv parametrů a na základní vlastnosti se nás zeptá, ale je lepší mu zadat další vlastnosti balíčku prostřednictvím parametrů.

    Parametr -c určuje licenci, pod kterou balíček je, a tím pro nás dh_make připraví vhodnou šablonu pro soubor debian/copyright. V našem případě je program hello pod GNU GPL a použijeme tedy -c gpl.

    Pomocí dalších parametrů můžeme zadat typ balíčku. Pokud ho nezadáme, tak se nás na něj dh_make zeptá, takže to není nezbytně nutné.

    Další informace čerpá dh_make z proměnných prostředí DEBEMAIL a DEBFULLNAME - ty obsahují jméno a e-mail správce balíčku (stejné proměnné používají i další nástroje, převážně pak ty z balíčku devscripts).

    Nyní již tedy víme, co budeme potřebovat, a můžeme dh_make spustit:

    $ export DEBFULLNAME='Stojan Jakotyč'
    $ export DEBEMAIL='stojan@example.com'
    $ dh_make -c gpl
    
    Type of package: single binary, multiple binary, library, kernel module or cdbs?
     [s/m/l/k/b] s
    
    Maintainer name : Stojan Jakotyč
    Email-Address   : stojan@example.com 
    Date            : Tue, 05 Feb 2008 14:32:06 +0900
    Package Name    : hello
    Version         : 0.1
    License         : gpl
    Type of Package : Single
    Hit <enter> to confirm: 
    Skipping creating ../hello_0.1.orig.tar.gz because it already exists
    Done. Please edit the files in the debian/ subdirectory now. hello
    uses a configure script, so you probably don't have to edit the Makefiles.
    

    Vytvořil se nám adresář debian, který obsahuje jak vygenerované soubory, tak i příklady pro ostatní. Příklady pro mnoho dalších akcí nás u takto jednoduchého balíčku nezajímají a adresář debian můžeme poněkud pročistit jejich odstraněním:

    $ rm debian/*.ex debian/*.EX

    Balíček nyní můžeme zkusit zkompilovat nástrojem dpkg-buildpackage (z balíčku dpkg-dev), ale brzy narazíme na chyby, takže se tento proces asi bez našeho zásahu neobejde (parametr -rfakeroot není v novějších verzích potřeba):

    $ dpkg-buildpackage -rfakeroot
    dpkg-buildpackage: source package hello
    dpkg-buildpackage: source version 0.1-1
    dpkg-buildpackage: source changed by Stojan Jakotyč <stojan@example.com>
    dpkg-buildpackage: host architecture i386
     fakeroot debian/rules clean
    dh_testdir
    dh_testroot
    rm -f build-stamp 
    # Add here commands to clean up after the build process.
    /usr/bin/make distclean
    make[1]: Entering directory `/tmp/firstdeb/hello-0.1'
    make[1]: *** No rule to make target `distclean'.  Stop.
    make[1]: Leaving directory `/tmp/firstdeb/hello-0.1'
    make: *** [clean] Error 2
    dpkg-buildpackage: failure: fakeroot debian/rules clean gave error exit status 2
    

    Pro náš balíček bohužel dh_make neodhadl správně všechny příkazy v debian/rules, takže se budeme muset podívat, jak vlastně tento soubor vypadá. Pokud si ho otevřete v editoru, uvidíte mnoho příkazů debhelperu - dh_*. V tuto chvíli si jich nebudeme všímat, protože výchozí chování nám prozatím vyhovuje a budou podrobněji popsány v dalších dílech seriálu.

    První chyba, na kterou jsme narazili, je při volání make distclean. Problém je, že v této době ještě nemusí být vytvořen soubor Makefile, takže tento příkaz může selhat. Správné řešení tohoto problému je otestování existence souboru Makefile před spuštěním tohoto příkazu:

    [ ! -f Makefile ] || $(MAKE) distclean

    Při dalším spuštění dpkg-buildpackage narazíme na problém s parametry pro configure, protože náš balíček používá starší verzi autoconfu. Řešení tohoto problému je opět jednoduché - stačí přesunout předávání proměnných CFLAGS a LDFLAGS před volání ./configure:

    CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs" ./configure ...

    Nyní již by nám dpkg-buildpackage měl vytvořit binární i zdrojový balíček:

    ...
    dpkg-deb: vytvářím balík `hello' v `../hello_0.1-1_i386.deb'.
     signfile hello_0.1-1.dsc
    gpg: skipped "Stojan Jakotyč <stojan@example.com>": secret key not available
    gpg: [stdin]: clearsign failed: secret key not available
    
     dpkg-genchanges  >../hello_0.1-1_i386.changes
    dpkg-genchanges: including full source code in upload
    dpkg-buildpackage: full upload (original source is included)
    dpkg-buildpackage: warning: Failed to sign .dsc and .changes file
    

    Můžeme si pogratulovat, právě jsme vytvořili první balíček. Výsledek po dnešním dílu si také můžete stáhnout zde: hello_0.1-1.dsc, hello_0.1-1.diff.gz, hello_0.1.orig.tar.gz. Nicméně do dokonalosti má balíček ještě daleko.

    Závěr

    link

    Jako domácí úkol si do příštího dílu můžete upravit soubory, které jsme popsali v minulých dílech. Další problém, který můžete vidět ve výstupu dpkg-buildpackage, je, že se nepodařilo balíček podepsat. Na opravení této chyby stačí vygenerovat PGP klíč pro našeho uživatele. Domácích úkolů už máte dost, příště si podrobněji rozebereme, co se děje v debian/rules.

    Nejčtenější články posledního měsíce

    Zpráva pro talentované linuxáky: pojďme s námi tvořit internet
    HW novinky: výrobci SSD svorně hovoří o 100TB kapacitě
    HW novinky: Intel bude vyrábět 10nm ARM čipy

    Nejkomentovanější články posledního měsíce

    Zpráva pro talentované linuxáky: pojďme s námi tvořit internet
    HW novinky: výrobci SSD svorně hovoří o 100TB kapacitě
    HW novinky: Intel bude vyrábět 10nm ARM čipy
      všechny statistiky »

    Seriál Balíčky pro Debian (dílů: 12)

    Balíčky pro Debian - 1 (úvod) (první díl)
    <—« Balíčky pro Debian - 3 (další informace v balíčku)
    »—> Balíčky pro Debian - 5 (Debhelper a ti druzí)
    Balíčky pro Debian - 12 (závěr aneb co se jinam nevešlo) (poslední díl)

    Související články

    Na co se často ptáme: Balíčkovací systémy
    Seriál: Instalace softwaru v Linuxu
    Seriál: Gentoo ebuild
    Seriál: Rukověť baliče RPM
    Seriál: Balíčkovací systém Arch Linuxu
    Smart Package Manager - instalujeme chytře
    Zdroje balíčkov pre Ubuntu
    Balíčkovací systém Mandrake Linuxu
    Balíčkovací systém Gentoo Linuxu

    Odkazy a zdroje

    Návod pro začínajícího balíčkáře
    Příručka vývojáře
    Zásady Debianu
    Dokumentace pro vývojáře

    Další články z této rubriky

    Filtrujeme čtivé texty z Projektu Gutenberg 8
    Filtrujme čtivé texty z Projektu Gutenberg 7
    Filtrujme čtivé texty z Projektu Gutenberg 6
    Filtrujme čtivé texty z Projektu Gutenberg 5
    Filtrujme čtivé texty z Projektu Gutenberg 4
           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    30.6.2008 17:11 Robert
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)
    Zdravim,

    da se nejak jednoduse udelat debian balik pro projekt rizeny Cmakem?

    Diky.

    Robert
    30.6.2008 20:19 Jirka P
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)
    Příloha:
    Jistě. Asi nejjednodušší je použít cdbs (viz příloha), ale ani předělat nějaký makefile-based (anebo autotools-based) balíček by neměl být problém.
    30.6.2008 23:20 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)
    No není to o nic složitější než pro autoconf ... viz třeba gammu.
    1.7.2008 21:20 mnn
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)
    Prepacte ale na mna nejako zlozite :-( a to sa uz v command line nejako vyznam (okrem bashu)……
    2.7.2008 00:21 Jirka P.
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)
    Neni to složité... stačí umět make (a to ještě ne moc do hloubky) a prakticky si to zkusit. Pak to jde samo
    houska avatar 4.7.2008 12:05 houska | skóre: 41 | blog: HW
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)
    odkaz na zdroj hello nefunguje
    hikikomori82 avatar 5.1.2009 15:01 hikikomori82 | skóre: 18 | blog: foobar | Košice
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)
    Co s tymto?
    configure: warning: CFLAGS=-g -O2: invalid host type
    configure: warning: LDFLAGS=-Wl,-z,defs: invalid host type
    configure: error: can only configure for one host and one target at a time
    make: *** [config.status] Error 1
    
    5.1.2009 15:15 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)
    Není lepší se ptát v diskuzi než u půl roku starého článku? A trochu víc informací co vlastně děláš by taky neuškodilo. Ale vypadá to, že configure dáváš parametry, které neumí zpracovat.
    hikikomori82 avatar 5.1.2009 16:13 hikikomori82 | skóre: 18 | blog: foobar | Košice
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)
    Postupoval som presne podla postupu s tym rozdielom ze mi hlasilo chybajuci balicek autotools tak som ho nainstaloval. Prikaz "CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs" ./configure" zbehol ale "dpkg-buildpackage" zahlasi tu chybu.
    dpkg-buildpackage: set CPPFLAGS to default value: 
    dpkg-buildpackage: set CFLAGS to default value: -g -O2
    dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
    dpkg-buildpackage: set FFLAGS to default value: -g -O2
    dpkg-buildpackage: set LDFLAGS to default value: -Wl,-Bsymbolic-functions
    dpkg-buildpackage: source package hello
    dpkg-buildpackage: source version 0.1-1
    dpkg-buildpackage: source changed by Stojan Jakotyc <stojan@example.com>
    dpkg-buildpackage: host architecture i386
     fakeroot debian/rules clean
    dh_testdir
    dh_testroot
    rm -f build-stamp 
    # Add here commands to clean up after the build process.
    /usr/bin/make distclean
    make[1]: Entering directory `/home/inx/balicky/hello-0.1'
    make[1]: *** No rule to make target `distclean'.  Stop.
    make[1]: Leaving directory `/home/inx/balicky/hello-0.1'
    make: [clean] Error 2 (ignored)
    rm -f config.sub config.guess
    dh_clean 
     dpkg-source -b hello-0.1
    dpkg-source: building hello in hello_0.1-1.tar.gz
    dpkg-source: building hello in hello_0.1-1.dsc
     debian/rules build
    dh_testdir
    # Add here commands to configure the package.
    cp -f /usr/share/misc/config.sub config.sub
    cp -f /usr/share/misc/config.guess config.guess
    ./configure --host=i486-linux-gnu --build=i486-linux-gnu --prefix=/usr --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info CFLAGS="-g -O2" LDFLAGS="-Wl,-z,defs"
    configure: warning: CFLAGS=-g -O2: invalid host type
    configure: warning: LDFLAGS=-Wl,-z,defs: invalid host type
    configure: error: can only configure for one host and one target at a time
    make: *** [config.status] Error 1
    dpkg-buildpackage: failure: debian/rules build gave error exit status 2
    
    5.1.2009 16:19 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)
    Přesně podle postupu? A co ta část, kde je napsáno:
    stačí přesunout předávání proměnných CFLAGS a LDFLAGS před volání ./configure
    hikikomori82 avatar 5.1.2009 23:25 hikikomori82 | skóre: 18 | blog: foobar | Košice
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)
    Citujem: Prikaz "CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs" ./configure" zbehol ...
    6.1.2009 11:24 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
    Rozbalit Rozbalit vše Re: Balíčky pro Debian - 4 (kompilace balíčku a náš první balíček)
    V logu vidím:
    ./configure --host=i486-linux-gnu --build=i486-linux-gnu --prefix=/usr --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info CFLAGS="-g -O2" LDFLAGS="-Wl,-z,defs"
    a přitom by mělo být:
    CFLAGS="-g -O2" LDFLAGS="-Wl,-z,defs" ./configure --host=i486-linux-gnu --build=i486-linux-gnu --prefix=/usr --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info

    Založit nové vláknoNahoru

    ISSN 1214-1267   Powered by Hosting 90 Server hosting
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.