Příklady sestavení deb balíčku ze zdrojů. Učíme se sestavovat balíčky deb Debian vytváří balíček ze zdroje

deb soubor je archiv ve formátu ar, obsahující instalační soubory programu, informace o programu a také skripty (příkazové soubory) spouštěné před a po instalaci a odinstalaci programu (přítomnost skriptů není povinná - nemusí být součástí balení).

Formát souboru deb je popsán v manuálových stránkách deb(5) - tato nápověda se zobrazí, pokud v terminálu napíšete man deb. Na internetu je také poměrně dost stránek obsahujících tyto informace – stačí je vyhledat deb(5). Tato příručka zde není zahrnuta, protože oficiální příručka pro vývojáře Debianu, Package Format Help (která se v době psaní této příručky nachází na adrese http://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics. en.html) je napsáno, že formát balíčků se může měnit, a proto se doporučuje pro práci s nimi použít utilitu dpkg-deb. Nápovědu k práci s obslužným programem dpkg-deb získáte zadáním příkazu man dpkg-deb do terminálu.

Program GUI-deb funguje tak, že vytvoří adresář obsahující potřebná data a spustí program dpkg-deb, uvede tento adresář a další potřebné parametry.

Správný adresář pro dpkg-deb pro vytvoření instalačního balíčku musí nejprve obsahovat podadresář "DEBIAN". Tento adresář by měl obsahovat všechna data, která se nekopírují do systému, ale přímo je využívají programy pro práci s balíčky – informace o balíčku, skripty prováděné před a po instalaci atd. Žádné soubory obsažené v adresáři DEBIAN nebudou při instalaci balíčku přidány do systému souborů počítače, na kterém je balíček nainstalován.

Mimo adresář "DEBIAN" obsahuje ty soubory, které budou zkopírovány do souborového systému počítače, na kterém bude balíček nainstalován. Soubory musí být umístěny v adresářích, do kterých budou umístěny při instalaci balíčku. To znamená, že uvnitř adresáře vytvořeného pro dpkg-deb by měla být vytvořena kopie částí souborového systému, které potřebujeme - jako by tento adresář byl jeho kořenem ("/"). Tedy pokud je například název adresáře, na jehož základě bude balíček vytvořen, „~/TMP_DEBS/MyProgram“ a je nutné, aby při instalaci v souborový systém soubor "MyProgram.png" byl zapsán do adresáře "/usr/share/pixmaps" - musíte vytvořit adresář "usr" v adresáři "~/TMP_DEBS/MyProgram", v něm - adresář "share", uvnitř "share" - adresář "pixmaps" ", a umístěte soubor "MyProgram.png" do adresáře "pixmaps". V důsledku toho bude úplná cesta k souboru "~/TMP_DEBS/MyProgram/usr/share/pixmaps/MyProgram.png". Při vytváření balíčku dojde k odříznutí části adresáře "~/TMP_DEBS/MyProgram" a během instalace soubor "MyProgram.png" skončí na požadované adrese "/usr/share/pixmaps". Pro každý soubor je tedy nutné vytvořit potřebné adresáře.

Po vytvoření adresáře zbývá pouze spustit dpkg-deb a předat potřebné parametry. Nejnutnější parametry dpkg-deb pro sestavování balíčků jsou popsány v části "Parametry příkazového řádku pro obslužný program dpkg-deb". Pokud v kontrolním souboru nejsou žádné chyby, instalační balíček se vytvoří.

Existuje několik způsobů instalace programů. Téměř každý má společnou část - rozbalte zdroje:

Tar xvfj mega_app.tar.bz2

Tar xvfz mega_app.tar.gz

Proveďte příkaz ./configure, pak udělat. Tyto příkazy se používají k vytváření spustitelných souborů, knihoven atd. ze zdrojových kódů.
Samostatně stojí za zmínku první příkaz - ./configure
Pokud udelas ./configure --help, pak získáte seznam parametrů, které lze předat ./configure
Často je například možný následující příkaz:

./configure --prefix=/opt/mega_app

Nebo uveďte cestu ke knihovně, která z nějakého důvodu nebyla nalezena sama o sobě:

./configure --kerberos-lib=/opt/kerberos/lib

Klasický.
Takže uděláme sekvenci:

./configure make

A příkaz, který skutečně nainstaluje všechny součásti programu do systému:

Proveďte instalaci

VAROVÁNÍ!!! Pomocí této metody je snadné získat v budoucnu velmi vážné problémy. Za prvé, s největší pravděpodobností nebudete moci program odinstalovat (provést odinstalaci).

Používáme program Checkinstall.
Správná cesta. Po dokončení obecné části spusťte:

Na vše se vás program sám zeptá, nebo stačí všude stisknout ENTER.
man checkinstall také velmi dobrý způsob :))

Sestavení balíčku ze zdrojů pro Debian.
Toto je samostatná a složitá cesta – musíte porozumět mnoha aspektům vytváření deb balíčků (nebo jakýchkoli jiných). Zde tato cesta nebude popsána celá, pouze příklad, jak sestavit balíček z již připravených materiálů.
Takže příklad. Přejděte na packages.ubuntu.com, najděte požadovaný balíček (například diff) a stáhněte si dva soubory – zdroj (http://archive.ubuntu.com/ubuntu/pool/main/d/diffutils/diffutils_2.8.1.o ... ) a patch pro něj, který opraví zdrojové kódy a vytvoří složku debian se souborem magických pravidel uvnitř (http://archive.ubuntu.com/ubuntu/pool/main/d/diffutils/diffutils_2.8.1 -1...).
Zkopírujte je do složky ~/test a nejprve rozbalte zdroje:

Tar xvfz diffutils_2.8.1.orig.tar.gz

A poté aplikujte náplast:

Cd diffutils-2.8.1/ gzip -cd ../diffutils_2.8.1-11ubuntu4.diff.gz | patch -p1

Teď to musíme udělat debian/pravidla spustitelný:

Chmod +x debian/pravidla

A sestavte balíček:

Fakeroot binární debian/pravidla

Fakeroot je nutný pro normálního uživatele k sestavení balíčku (většinou mnoho požadovaných operací vám zabrání vytvořit balíček).

Ls ../ diff_2.8.1-11ubuntu4_i386.deb diffutils-2.8.1 diffutils_2.8.1-11ubuntu4.diff.gz diffutils_2.8.1.orig.tar.gz

Jak vidíte, balíček je připraven.

Nebo Debian:

wget název_balíčku.dsc, název_balíčku.diff.gz, název_balíčku.orig.tar.gz dpkg-source -x název_balíčku.dsc cd ./název_balíčku/ dpkg-buildpackage -rfakeroot

Závěr
Existují také metody - vytvořit balíček od začátku do konce. Musíte si vzít příručku pro vytváření balíčků z vaší distribuce a použít ji ke studiu tohoto procesu zevnitř i zvenčí. Udělejte spoustu balíčků, dobrých a potřebných. Pokud jste vytvořili dobrou sestavu, pošlete ji vývojářům distribuce a udržujte ji aktuální. Pamatujte, že i jeden balíček, který podporujete, může být užitečný stovkám lidí po celém světě.

Udělejme si krátkou pauzu a podívejme se na video o SEO optimalizace webová stránka:

Úvod

Balíček Deb je běžný archiv souborů obsahujících soubory určené k instalaci do systému a také některé servisní soubory nezbytné k tomu, aby byla tato instalace flexibilní.

    Archiv control.tar.gz, obsahující skripty napsané správcem balíčku, používané při instalaci/odinstalování balíčku, stejně jako další soubory služeb;

    Archiv data.tar.gz obsahující binární soubory programu, pro který byl balíček vytvořen;

    Debian-binary soubor.

Protože se obsah balíčku může v budoucnu změnit (v debian-binary bude nové číslo verze), nedoporučuje se kompilovat balíček deb pomocí programů tar, gzip, ar a tato možnost nebude v článek.

Balíček je sestaven programem dpkg ze speciálně připravené adresářové struktury:

    Cesta/k/adresáři/souboru1

    Cesta/k/dirX/souboruX

    Soubory a adresáře určené k instalaci do systému. Jejich umístění v archivu odpovídá jejich pozici v souborovém systému, pokud se počítá od kořenového adresáře. Například soubor usr/share/doc/package/copyright v archivu deb po instalaci bude umístěn v /usr/share/doc/package/copyright (všechny budou zabaleny do archivu data.tar.gz) ;

    Adresář DEBIAN/ obsahující servisní informace o balíčku. Obsah tohoto adresáře bude během sestavování zabalen do archivu control.tar.gz;

Vytvoření balíčku Geany (rychlé a lehké IDE)

konfigurovat

Příkaz configure se při spuštění s přepínačem –help zobrazí seznam parametrů, které mu lze předat.

$ ./configure ... kontrola stylu závislosti gcc... (v mezipaměti) gcc3 kontrola g++... žádná kontrola c++... žádná kontrola gpp... žádná kontrola aCC... žádná kontrola CC ... žádná kontrola cxx... žádná kontrola cc++... žádná kontrola cl.exe... žádná kontrola FCC... žádná kontrola KCC... žádná kontrola RCC... žádná kontrola xlC_r... žádná kontrola xlC... žádná kontrola, zda používáme kompilátor GNU C++... žádná kontrola, zda g++ přijímá -g... žádná kontrola stylu závislosti g++... žádná konfigurace: chyba: Ne C++ kompilátor nenalezeno. Nainstalujte si prosím kompilátor C++.

Podíváme se na výstup příkazu, pokud je na konci řádku „ne“, znamená to, že systém nemá pomocné programy a knihovny potřebné ke kompilaci tohoto programu. Výstup je neinformativní – neexistuje žádná zřejmá korespondence mezi chybou a balíčkem, který je třeba nainstalovat. S vědomím, že v Ubuntu jsou balíčky knihoven často rozděleny do dvou typů:

    dynamická knihovna nezbytná pro provoz již zkompilovaných programů;

    balíček se stejným názvem a příponou -dev, který obsahuje soubory potřebné pro kompilaci programů

Nainstalujte požadované balíčky.

# aptitude install autoconf automake libtool autotools-dev dpkg-dev fakeroot intltool-debian intltool ... Budou nainstalovány následující NOVÉ balíčky: autoconf automake autotools-dev build-essential(a) dpkg-dev g++(a) g++-4.3( a) gettext(a) intltool intltool-debian libltdl7-dev(a) libstdc++6-4.3-dev(a) libtool m4(a) 0 balíčků aktualizováno, 14 nových nainstalováno, 0 balíčků označeno k odstranění a 0 balíčků ne aktualizováno. Potřebujete získat 10,2 MB archivů. Po rozbalení bude 35,9 MB obsazeno. Chceš pokračovat?

Y...

$ ./configure ... kontrola pkg-config je alespoň verze 0.9.0... ano kontrola GTK... configure: error: Požadavky na balíček (gtk+-2.0 >= 2.8.0) nebyly splněny: Žádný balíček Nalezeno "gtk+-2.0" Zvažte úpravu proměnné prostředí PKG_CONFIG_PATH, pokud jste nainstalovali software s nestandardní předponou. Alternativně můžete nastavit proměnné prostředí GTK_CFLAGS a GTK_LIBS, abyste nemuseli volat pkg-config. Další podrobnosti najdete na manuálové stránce pkg-config.

Chyba. Vyžaduje balíček gtk+-2.0. Jak ukázalo vyhledávání na anglických fórech, balíček se stále jmenuje libgtk2.0-dev. Dejme tomu. Jak ukazuje výstup níže - je lepší najít JIŽ zkompilovaný balíček DEB - naštěstí je to reálná šance.

# aptitude install libgtk2.0-dev ... Budou nainstalovány následující NOVÉ balíčky: debhelper(a) html2text(a) libatk1.0-dev(a) libcairo2-dev(a) libdirectfb-dev(a) libdirectfb-extra (a) libexpat1-dev(a) libfontconfig1-dev(a) libfreetype6-dev(a) libglib2.0-dev(a) libgtk2.0-dev libice-dev(a) libjpeg62-dev(a) libmail-sendmail- perl(a) libpango1.0-dev(a) libpixman-1-dev(a) libpng12-dev(a) libpthread-stubs0(a) libpthread-stubs0-dev(a) libsm-dev(a) libsys-hostname- long- perl(a) libsysfs-dev(a) libx11-dev(a) libxau-dev(a) libxcb-render-util0-dev(a) libxcb-render0-dev(a) libxcb1-dev(a) libxcomposite- dev(a) libxcursor-dev(a) libxdamage-dev(a) libxdmcp-dev(a) libxext-dev(a) libxfixes-dev(a) libxft-dev(a) libxi-dev(a) libxinerama-dev( a) libxrandr-dev(a) libxrender-dev(a) po-debconf(a) x11proto-composite-dev(a) x11proto-core-dev(a) x11proto-damage-dev(a) x11proto-fixes-dev( a) x11proto-input-dev(a) x11proto-kb-dev(a) x11proto-randr-dev(a) x11proto-render-dev(a) x11proto-xext-dev(a) x11proto-xinerama-dev(a) xtrans- dev(a) zlib1g-dev(a) 0 balíčků aktualizováno, 51 nově nainstalovaných, 0 balíčků označených k odstranění a 0 balíčků neaktualizovaných. Potřebujete získat 11,4 MB archivů. Po rozbalení bude 39,4 MB obsazeno. Chceš pokračovat?

Y

Pojďme zkontrolovat. Spusťte znovu ./configure. A dole vidíme štěstí :) Příkaz byl úspěšně proveden!!!

$ ./configure ... Nainstalujte Geany do: /usr/local Použití GTK verze: 2.16.1 Sestavení s podporou tisku GTK: ano Sestavení s podporou pluginů: ano Použít podporu virtuálního terminálu: ano Použít podporu soketu (UNIX doména): ano Konfigurace je v pořádku.

udělat

Kompilace do binárních souborů

    Metoda 1 je standardní (vhodná pro jakoukoli unixovou distribuci). Nejlepší použití na FreeBSD při instalaci z portů. Na Ubuntu to zatíží systém, protože správci balíčků (apt, aptitude atd.) neuvidí nainstalovaný program. V souladu s tím jej budete muset odstranit ručně. $ provést instalaci

    Metoda 2 - použijte nástroj checkinstall # aptitude install checkinstall # man checkinstall JMÉNO checkinstall - Sledujte instalaci místního softwaru a vytvořte binární soubor, který lze spravovat pomocí softwaru pro správu balíčků. ...

    Protože vytváříme balíček pro Ubuntu, zajímají nás klíče:

    D Vytvořte balíček Debianu.

    Celá sekvence příkazů:

    $ cd /home/darkfire/deb/geany/geany-0.17 $ ./configure $ make $ sudo bash # další příkazy musí být spuštěny jako root # checkinstall -D ... ************ * **************************************** ******* Hotovo. Nový balíček byl nainstalován a uložen do /home/darkfire/deb/geany/geany-0.17/geany_0.17-1_i386.deb Můžete jej kdykoli odstranit ze systému pomocí: dpkg -r geany ******** ********************************************* ********** ***...

    Balíček geany_0.17-1_i386.deb je vytvořen a připraven k instalaci.

Vytvoření balíčku IDE Eric Python

Vytváříme balíček Eric IDE s podporou ruského jazyka. Stáhněte a rozbalte zdrojový kód a rusifikaci. Před kompilací nainstalujeme balíčky potřebné ke spuštění Erica.

# aptitude install cyclerepair libqscintilla2-3 libqt3-i18n libqt4-assistant libqt4-help libqt4-webkit libqt4-xmlpatterns $ mkdir -p /home/darkfire/deb/eric4ide $ cd /home4/darkfiride downloads.sourceforge.net/project/eric-ide/eric4/4.3.5/eric4-4.3.5.tar.gz $ wget http://downloads.sourceforge.net/project/eric-ide/eric4/4.3.5 /eric4-i18n-ru-4.3.5.tar.gz?use_mirror=sunet $ tar -xzvf eric4-4.3.5.tar.gz $ tar -xzvf eric4-i18n-ru-4.3.5.tar.gz $ cd /home/darkfire/deb/eric4ide/eric4-4.3.5/ $ sudo bash # checkinstall python install.py checkinstall 1.6.1, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran Tento program je distribuován za podmínek GNU GPL Dokumentace balíčku adresář ./doc -pak neexistuje. Mám vytvořit výchozí sadu dokumentů balíčku? [y]: Dokumentace k balíčku se připravuje...OK Napište prosím popis balíčku. Ukončete popis prázdným řádkem nebo EOF. >> Vytváříme balíček Eric IDE s podporou ruského jazyka. >> ********************************************************** **** Vybráno vytvoření balíčku Debian *** ******************************************** ************ Tento balíček byl vytvořen s použitím těchto hodnot: 0 - Správce: [ root@ubuntuatom ] 1 - Shrnutí: [ Vytváříme balíček Eric IDE s podporou ruského jazyka. ] 2 - Název: [ eric4 ] 3 - Verze: [ 4.3.5 ] 4 - Vydání: [ 1 ] 5 - Licence: [ GPL ] 6 - Skupina: [ checkinstall ] 7 - Architektura: [ i386 ] 8 - Umístění zdroje: [ eric4-4.3.5 ] 9 - Umístění alternativního zdroje: 10 - Vyžaduje: 11 - Poskytuje: [ eric4 ] Zadejte číslo pro změnu parametru nebo stiskněte ENTER pro pokračování: ... Kompilace eric/uninstall.py ... Instalace eric4 .. Instalace dokončena. ======================== Instalace byla úspěšně dokončena ====================== Kopírování adresář dokumentace... ./ ./README-i18n.txt ./DÍKY ./README grep: /var/tmp/tmp.hxkpsnHJSB/newfile: Žádný takový soubor nebo adresář Některé soubory vytvořené instalací jsou uvnitř sestavení adresář: /home/darkfire/deb/eric4ide/eric4-4.3.5 Pravděpodobně nechcete, aby byly součástí balíčku, zvláště pokud jsou ve vašem domovském adresáři. Chcete, abych je uvedl? [n] : Vyloučit je z balíčku? (odpověď ANO je dobrý nápad) [y]: Soubory jsou zkopírovány do dočasného adresáře...OK Odstraňování binárních souborů a knihoven ELF...OK Komprimování manuálových stránek...OK Vytvoření seznamu souborů files...OK Sbírám balíček Debianu... Dočasné soubory se mažou...OK Záložní balíček se zapisuje...OK Dočasný adresář se maže. ..OK *********************************************** ******* *********************** Hotovo. Nový balíček byl nainstalován a uložen do /home/darkfire/deb/eric4ide/eric4-4.3.5/eric4_4.3.5-1_i386.deb Můžete jej kdykoli odstranit ze systému pomocí: dpkg -r eric4 ***** ********************************************* ********** *****

Nainstalujte zkompilovaný balíček:

Dpkg -i eric4_4.3.5-1_i386.deb

Selhání

Při spouštění dojde k chybě

# eric4 Traceback (poslední poslední hovor):

Soubor "/usr/lib/python2.6/dist-packages/eric4/eric4.py", řádek 20, v z PyQt4.QtCore importovat QTextCodec, SIGNAL, SLOT, qWarning, \

ImportError: Žádný modul s názvem PyQt4.QtCore

Pokusím se co nejjasněji vysvětlit proces vytváření deb balíčků na příkladu ruby-zookeper. Ihned vás varuji, že způsob balení rubínových drahokamů, který jsem popsal, je nesprávný, je lepší k tomu použít gem2deb, ale protože... sestavte ruby-zookeper ze zdroje pomocí gem2deb Nejnovější verze Neuspěl jsem, pak je zde nejjednodušší způsob montáže.

Pokud vytváříte rubínové balíčky, jak je doporučeno, přes gem2deb, pak je lepší přidat řádek

Exportovat DH_RUBY_IGNORE_TESTS=vše/exportovat DH_RUBY_IGNORE_TESTS=vše

v debianu/pravidlech.

Protože Pokud budeme vytvářet ruby ​​kód, budeme potřebovat ruby ​​a sadu nástrojů pro vytváření deb balíčků.

Sudo apt-get install ruby ​​​​dpkg-dev

Pokud máte stará verze ruby, pak nemá příkaz gem, budete také muset nainstalovat balíček rubygems nebo aktualizovat ruby.

Nyní nainstalujme drahokam fpm, která nám sestaví deb balíček.

Instalace sudo gem fpm fpm -s gem -t deb zookeeper

V aktuálním adresáři máme balíček rubygem-zookeeper_1.4.11_amd64.deb, zdálo by se, že věc je již v pytli, ale protože... potřebujeme zdrojový balíček, abychom z něj mohli postavit deb třeba v OBS, pak budeme pokračovat.

Vytvoříme adresář sestavení

Cp rubygem-zookeeper_1.4.11_amd64.deb ~/ cd mkdir -p ruby-zookeeper/fakeroot cd ruby-zookeeper/fakeroot

Extrahujeme do něj obsah nově sestaveného balíčku

Dpkg-deb -R ~/rubygem-zookeeper_1.4.11_amd64.deb ruby-zookeeper_1.4.11-1

Nyní vytvoříme soubory potřebné k sestavení balíčku. Měly by být v adresáři debian. Některé soubory můžeme zkopírovat z rozbaleného balíčku.

Mkdir debian cp rubygem-zookeeper_1.4.11-1/DEBIAN/control debian/control

Upravme jej do následujícího stavu. Nezapomeňte změnit správce

Zdroj: ruby-zookeeper Provozovatel: Sekce: ruby ​​​​Build-Depends: debhelper (>= 7.0.50~) Priorita: extra Domovská stránka: https://github.com/slyphon/zookeeper Balíček: ruby-zookeeper Architektura: amd64 Depends: $(shlibs:Depends) , $ (misc:Depends), ruby ​​​​Popis: Nízkoúrovňový multi-Ruby obal kolem vazeb ZooKeeper API. Přívětivější rozhraní najdete na http://github.com/slyphon/zk. Aktuálně podporované: MRI: (1.8.7, 1.9.2, 1.9.3), JRuby: ~> 1.6.7, Rubinius: 2.0.testování, REE 1.8.7. . Tato knihovna používá verzi 3.4.5 vazeb zookeeper.

Potřebujeme také debian/pravidla. Pojďme to vytvořit. override_dh_shlibdeps je potřeba, aby se zabránilo kontrole propojení knihoven zookeeperů, protože nejde to pryč.

#!/usr/bin/make -f # -*- makefile -*- %: dh $@ override_dh_shlibdeps: true

Tabulátory jsou v debian/rules povinné a nelze je nahradit mezerami. Udělejme to spustitelné.

Chmod +x debian/pravidla

usr/* var/*

Nyní vytvoříme debian/changelog a zapíšeme tam:

Ruby-zookeeper (1.4.11-1) NEVYpuštěno; urgency=medium * Počáteční vydání -- root St, 25. listopadu 2015 20:01:55 +0300

Také stále potřebujeme debian/compat

Echo 7 > debian/compat

Zkopírujeme soubory, které se budou instalovat, do místního adresáře a smažeme složku s rozbaleným balíčkem, který již nebudeme potřebovat;

Mv ruby-zookeeper_1.4.11-1/(usr,var) . rm -r ruby-zookeeper_1.4.11-1

Pojďme vytvořit nový balíček, stejně jako zdrojový balíček.

Dpkg-buildpackage -rfakeroot -uc -F

V adresáři výše budeme mít všechny potřebné soubory.

Ll .. celkem 5528 drwxr-xr-x 3 kořen kořen 4096 20. prosince 13:32 ./ drwx------ 12 kořen kořen 4096 20. prosince 13:31 ../ drwxr-xr-x 5 kořen 4096 20 13:28 fakeroot/ -rw-r--r-- 1 kořenový kořen 1261 20. prosince 13:32 ruby-zookeeper_1.4.11-1_amd64.changes -rw-r--r-- 1 kořenový kořen 2375044 prosinec: 20 13 32 ruby-zookeeper_1.4.11-1_amd64.deb -rw-r--r-- 1 kořenový kořen 565 20. prosince 13:32 ruby-zookeeper_1.4.11-1.dsc -rw-r--r-- 1 kořenový kořen 3263381 20. prosince 13:32 ruby-zookeeper_1.4.11-1.tar.gz

Můžete zkontrolovat obsah výsledného deb balíčku

Často je nějaký balíček k dispozici na pobočkách nestabilní A experimentální, ale není ve větvích stabilní/testování. Opravdu chci nainstalovat program, ale aktualizace poloviny systému je děsivá nebo nežádoucí.

Pro takové případy existuje skvělý zdroj backports.org, ale jeho použití je v mnoha ohledech podobné přímému použití větví nestabilní a někdy způsobuje další problémy kvůli pravidelným konfliktům mezi backporty a nestabilními.

Ve většině případů nainstalujte balíček z nestabilní A experimentální Můžete použít opětovné sestavení balíčku ve vašem prostředí. To se provádí poměrně snadno a tento manuál má v této záležitosti pomoci začínajícímu uživateli. Podíváme se například na možnost instalace balíčku fluxbox z experimentální- větve.

Nainstalujme nástroje pro montáž:

#aptitude instalační devscripts

Klíč Gpg a exportujte některé proměnné prostředí s ním spojené:

vývozní [e-mail chráněný] export DEBFULLNAME="yourfullname" export [e-mail chráněný]

Nastavení apt-get

Nejprve musíme nakonfigurovat apt-get pro práci s repozitáři Debian src. Chcete-li to provést, přidejte do souboru /etc/apt/sources.list následující řádky:

deb-src http://ftp.debian.org/debian testování hlavní příspěvek nesvobodný deb-src http://ftp.debian.org/debian sid hlavní příspěvek nesvobodný deb-src http://ftp.debian .org/debian experimentální hlavní příspěvek nesvobodný

Samozřejmě si můžete vybrat jakékoliv zrcadlo balení – to, které používáte nejčastěji. Po změně souboru /etc/apt/sources.list udělat to tradiční

#apt-get aktualizaci

Trochu teorie

Co je balíček src v systému Debian?

Balíček debian src je zdrojový kód programu, laskavě poskytnutý autorem pod jednou či druhou licencí, doplněný několika skripty (poskytnutými správcem balíčku) pro sestavení balíčku.

Všechny skripty, soubory atd. související s vytvářením balíčku na systému Debian jsou tradičně umístěny v podadresáři debian/ spolu se zdrojovými texty.

Balíček Debian src se obvykle skládá z několika souborů:

    package-version.dsc - textový soubor, který obsahuje seznam dalších potřebné soubory;

    package-version.orig.tar.gz- archiv se zdrojovým kódem programu;

    package-version.diff.gz- patch do archivu se zdrojovým kódem programu, který k nim přidává výše zmíněný adresář debian/ a případně obsahuje opravy provedené správcem ve zdrojovém kódu.

Poznámka: Některé obsahují adresář debian/ přímo do archivu se zdrojovými kódy. To se týká hlavně programů vyvinutých speciálně pro Debian. V tomto případě místo souborů .orig.tar.gz A .diff.gz bude jeden soubor package-version.tar.gz.

Příjem a rozbalení zdrojového balíčku

$ zdrojový balíček apt-get

pro náš případ s fluxboxem to bude vypadat takto:

$ apt-get source fluxbox Čtení seznamů balíčků... Hotovo Budování stromu závislostí... Hotovo Je potřeba stáhnout 1033kB zdrojové archivy. Received:1 http://ftp.debian.org experimental/main fluxbox 0.9.15.1+1.0rc2-1 (dsc) Received:2 http://ftp.debian.org experimental/main fluxbox 0.9.15.1+1.0rc2- 1 (tar) Přijato: 3 http://ftp.debian.org experimental/main fluxbox 0.9.15.1+1.0rc2-1 (rozdíl) Přijato 1033 kB po dobu 1 m38 s (10,5 kB/c) gpg: Podpis vytvořen Út 4. července 2006 1 :05:39 MSD pomocí ID klíče DSA E160649A gpg: Nelze zkontrolovat podpis: veřejný klíč nenalezen dpkg-source: extrahování fluxboxu ve fluxboxu-0.9.15.1+1.0rc2 dpkg-source: rozbalování fluxbox_0.9.15.1+1.0 rc2 .orig.tar.gz dpkg-source: použití ./fluxbox_0.9.15.1+1.0rc2-1.diff.gz

Chcete-li najít seznam verzí v dostupných úložištích, můžete použít příkaz

zásada $apt-cache<имя пакета>

V důsledku této akce, jak je patrné z výše uvedeného logu, došlo ke stažení potřebných souborů z mirroru (který jsme zaregistrovali v /etc/apt/sources.list) a zdroje byly rozbaleny a byl na ně aplikován patch .diff.gz.

Tato operace nemusela být provedena pomocí apt-get, můžete přejít na stránku balíčku, stáhnout soubory z odkazu Ke stažení (v dolní části stránky) a rozbalit pomocí příkazu

$ dpkg-source -x fluxbox_0.9.15.1+1.0rc2-1.dsc

Můžete také použít nástroj dget, který stáhne celý balíček a okamžitě rozbalí zdroje:

dget www.path.to/fluxbox_0.9.15.1+1.0rc2-1.dsc

Něco málo o struktuře adresáře debian/

Všechny akce pro sestavení balíčků se provádějí ze zdrojového adresáře, který byl získán při rozbalení archivu src. V tomto adresáři se také nachází adresář debian/.

V tomto adresáři nás budou zajímat především dva soubory:

    debian/pravidla- tento skript ve skutečnosti vytváří balíček (a je to běžný Makefile);

    debian/ovládání- tento textový soubor nám poskytne některé informace, které budeme potřebovat níže;

Nejprve v poslední soubor máme zájem o jeden řádek pro náš balíček fluxbox vypadá to takto:

    Závisí na sestavení: libx11-dev, libxext-dev, libxft-dev, libxinerama-dev, libxpm-dev, libxrandr-dev, x-dev, libxt-dev, debhelper (>=4.1.0), libxx111, libxx111 -dev, libxext-dev, libxft-dev, libxinerama-dev, libxpm-dev, libxrandr-dev, x-dev, libimlib2-dev, libgtk2.0-dev, cdbs

Jak vidíte, toto je pouze seznam balíčků, které potřebujeme při montáži.

Vytvářejte závislosti

To může být nejjednodušší nebo nejobtížnější otázka. Situace je následující. Správcem balíčku je obvykle někdo, kdo dobře rozumí vnitřním prvkům Debianu, takže správci jsou často první, kdo osvojí testovací/nestabilní větve. Navíc k nahrávání balíčků v Debianu dochází primárně v unstable, a proto správce často testoval sestavení svého balíčku pouze pod testing/unstable. Poměrně zřídka uvádějí autoři programů u svých výtvorů závislosti na verzích, takže není vždy možné uvést správné verze a mohou být buď nadhodnoceny, nebo podhodnoceny. Zjištění, se kterou verzí konkrétní knihovny se program přestane stavět, zabere spoustu času a úsilí a často to není opravdu nutné.

Instalace závislostí sestavení

Jednoduchý případ: vše se povedlo napoprvé

Pokud máte apt-get nakonfigurován, jak je uvedeno výše, lze ve většině případů instalaci závislostí provést jedním příkazem:

# apt-get build-dep fluxbox

Pro balíček fluxbox, který zvažujeme, se vše potřebné nainstaluje bez problémů a můžete přejít do sekce (níže) Sestavení balíčku.

V mé distribuci chybí požadované závislosti

Zde jsou dvě možné možnosti.

    Možnost, která poskytuje 100% výsledky, ale může vyžadovat více práce: podívejte se na řádek Sestavení-závisí, o kterém byla řeč výše, a podívejte se, jaké knihovny nebo nástroje v naší distribuci chybí. Jejich seznam zpravidla není tak velký, aby vytrvalého člověka (jeden nebo dva) vyděsil. Tyto knihovny nebo nástroje sestavujeme pomocí tohoto hacku (rekurzivně;)).

    Pokud v řadě Sestavení-závisí označuje něco, co v naší distribuci chybí verze balíčku, můžete se pokusit snížit požadavky správce úpravou souboru debian/ovládání. Zkuste snížit číslo verze požadované knihovny nebo nástroje určeného správcem na to, které máte. Než přejdete na tuto cestu, prohlédněte si zdrojový adresář INSTALOVAT soubory nebo README. V těchto souborech autoři programu někdy popisují závislosti svého duchovního dítěte, a pokud autor programu uvedl závislost na verzi, pak s největší pravděpodobností pokus o downgrade nepovede k ničemu.

Chcete-li zjistit, co ještě není nainstalováno pro sestavení balíčku, spusťte nástroj dpkg-checkbuilddeps ve zdrojovém adresáři. Tento nástroj zobrazí seznam toho, co je vyžadováno pro sestavení, ale ještě není nainstalováno ve vašem systému. Chcete-li přejít k dalšímu kroku, musíte se ujistit, že nástroj dpkg-checkbuilddeps negeneroval zprávy o neuspokojených závislostech. Můžete zkusit vytvořit nesplněnou závislost nebo snížit požadavky na číslo verze nebo kombinaci obou.

Sestavení balíčku

Snadná montáž

Vše, co k montáži potřebujeme, je tedy nainstalováno. Zbývá už jen balíček skutečně sestavit. K tomu potřebujeme utilitu fakeroot, nainstalujte jej, pokud jej ještě nemáte nainstalovaný.

Přejděte do adresáře s rozbaleným balíčkem src a zadejte příkaz:

  • $dch -i

Samostatně musíte zvážit, kterou verzi uvést v protokolu změn.

  • Toto by neměla být verze nalezená v oficiálním úložišti (aby nedošlo k záměně)
  • Pokud právě provádíte backport, pak by verze měla být nižší než verze, na které je balíček postaven (aby nedošlo k problémům, když se tento balíček dostane do testování, pak do stable a pokusíte se o dist-upgrade). Přidejte řádek ~backports1 v tomto případě na číslo verze. Později, pokud bude v úložištích balíček se stejným číslem verze, váš systém jej aktualizuje. Číslo 1 v tomto případě to může znamenat vaše číslo sestavení a slovo zadní porty lze nahradit jakýmkoli jiným, který bude více informativní.

Na základě toho by bylo správné verzi přidat - jaký řádek 1, pokud jste něco výrazně upravili, popř ~jaký řádek1, pokud jste provedli backport.

$ fakeroot ./debian/rules binární nebo $ dpkg-buildpackage -rfakeroot nebo #debuild

Výsledkem je, že binární balíček, pro který byl celý chaos spuštěn, bude zkompilován v nadřazeném adresáři.

Problémy v tomto kroku mohou nastat pouze ve dvou případech:

  • V předchozích krocích jste udělali něco špatně (například jste snížili závislost, ale ve skutečnosti to nebylo možné udělat);
  • V balíčku src jste narazili na chybu. I to se občas stává. Stává se, že balíčky nejsou sestaveny, například kvůli „nesprávně“ instalaci umaskovat. Obecně platí, že sestavování balíčků z umaskovat Nemělo by to záviset, ale z nějakého důvodu je tato chyba v Debianu docela běžná.

Vraťte se o několik kroků zpět a zkuste to znovu.

Pokud existuje pouze archiv se zdroji

Takže máme pouze fluxbox-0.9.15.tar.bz2. Obvykle provádím následující kroky: Nejprve připravím pracovní adresář:

mkdir ~/src/fluxbox mkdir ~/src/fluxbox/0.9.15 cd ~/src/fluxbox/0.9.15 wget "http://<путь до файла>"(můžete si to samozřejmě jednoduše stáhnout přes prohlížeč, ale obvykle je to rychlejší)

Získáme soubor fluxbox-0.9.15.tar.bz2. Když se podíváme trochu dopředu, zpracujme soubor pomocí programu gzip.

bunzip2 fluxbox-0.9.15.tar.bz2 gzip fluxbox-0.9.15.tar

Pojďme získat fluxbox-0.9.15.tar.gz, přejmenujte jej:

mv fluxbox-0.9.15.tar.gz fluxbox_0.9.15.orig.tar.gz

(tj. název a verzi jsme oddělili podtržítkem a po verzi přidali slovo orig: fluxbox_0.9.15.orig.tar.gz) Nyní jej rozbalte (ale za žádných okolností jej nemažte!):

tar zxvf ./fluxbox_0.9.15.orig.tar.gz cd fluxbox-0.9.15

Pro správné sestavení musí kořenový adresář obsahovat nejen název, ale i verzi! Níže budeme považovat adresář ~/src/fluxbox/0.9.15/fluxbox-0.9.15 za kořenový adresář zdrojů. Dále provedeme „hrubou“ montáž. Tito. děláme jako obvykle

./configure --prefix=/usr && make

(ale neinstalujeme!) Pokud je nakonfigurován se všemi potřebnými možnostmi a zkompilován do binárního souboru, zbývá jej pouze debianizovat.

Pokud existuje pouze deb balíček

Rozbalte balíček do složky /tmp/program/

$ dpkg -x program*.deb /tmp/program

Chcete-li rozbalit informace o balíčku, musíte spustit:

mkdir /tmp/program/DEBIAN $ dpkg -e program*.deb /tmp/program/DEBIAN

Nyní můžete provádět změny. Chcete-li balíček znovu sestavit, postupujte takto:

$ dpkg - b /tmp/program program-new*.deb

Debianizace

Smyslem celé této procedury je vytvořit adresář debianu ve zdrojovém kořenovém adresáři s potřebné soubory konfigurace a skript(y). Chcete-li to provést, v kořenovém adresáři zdrojového kódu (~/src/fluxbox/0.9.15/fluxbox-0.9.15) proveďte:

dh_make Typ balíčku: jeden binární, více binární, knihovna, modul jádra nebo cdbs? s Jméno správce: Frank E-mailová adresa: [e-mail chráněný] Datum: Wen, 20 May 2011 12:40:33 +0200 Název balíčku: fluxbox Verze: 0.9.15 Licence: GPLv3 Typ balíčku: Single Hit potvrdit:

Zde mu řekneme, aby vygeneroval balíček pro jeden binární soubor. Pokud bychom archiv nepřejmenovali, dostali bychom následující zprávu:

Nelze najít fluxbox_0.9.15.orig.tar.gz Buď zadejte alternativní soubor pro použití s ​​-f, nebo přidejte --createorig a vytvořte jej.

V tomto případě vám doporučuji přerušit dh_make (Ctrl+C) a přejmenovat archiv, jak je popsáno výše. Ale vy i já jsme skvělí a vše proběhlo bez chyb - v kořenovém adresáři zdrojového kódu se objevil adresář debian, při pohledu na jeho obsah uvidíte hromadu souborů (přípona .ex) s příklady pro všechny příležitosti. Předpokládejme, že náš program je jednoduchý, obvykle žádný z těchto souborů nepotřebujeme. Prvním krokem je přidání popisu programu do souboru debian/ovládání:

Popis:

Namísto A (bez rohových uvozovek) je potřeba zadat popis o jaký program se jedná. To je přesně informace, kterou uživatel uvidí, když se podívá na popis balíčku v synaptic. Druhým bodem je opravit soubor debian/rules v sekci binary-arch: musíte jej odkomentovat (tj. odstranit # na začátku). z řady)

  • dh_install

bez toho dostaneme prázdný balíček. Obvykle tato nastavení postačují k sestavení balíčku s jedním programem, který neobsahuje sdílené knihovny, tzn. pouze binární v /usr/bin a data v /usr/share. Nyní sestavíme balíček:

dpkg-buildpackage -rfakeroot

v adresáři výše, tzn. v ~/src/fluxbox/0.9.15 získáme soubory:

cd .. ls -1 fluxbox_0.9.15-1.diff.gz fluxbox_0.9.15-1_i386.changes fluxbox_0.9.15-1_i386.deb fluxbox_0.9.15.orig.tar.gz

Instalace balíčku

Poté, co je balíček sestaven, zbývá jej pouze nainstalovat pomocí příkazu:

dpkg -i název_balíčku.deb

Nebo jej zahrňte jako součást svého vlastního úložiště. To jsou již základní věci v systému Debian, proto jsou popsány v jiných článcích na wiki.

Build s vytvořením čistých obrazů systému

Ve skutečnosti, aby se balíček sestavil správně, musí být postaven na minimálním systému, kde jsou nainstalovány pouze nezbytné prvky a závislosti tohoto balíčku. Pak zaprvé nebudou žádné problémy kvůli tomu, že máte v systému nějaké balíčky odnikud a neznámé verze (a v důsledku toho mohou závislosti binárního balíčku zahrnovat balíčky verzí, které nejsou v dané distribuci, pod kterým balíčkem chcete sestavit) a za druhé se vyhnete problémům (velmi vzácné, ale přesto), když nainstalovaný extra balíček nějakým způsobem (čti negativně a ne vždy zjevně) ovlivní sestavu.

Chroot s čistým prostředím je dobré řešení... Bojíte se? Všechno už bylo ukradeno před námi.

Vytvoření balíčku pomocí pbuilderu

Interaktivní program tento proces poměrně dobře zjednodušuje. pbuilder. Nainstalujte balíček pbuilder, poté otevřete /etc/pbuilderrc pro úpravy a zadejte adresu svého oblíbeného úložiště.

Spusťte příkazy:

# aktualizace pbuilderu # vytvoření pbuilderu --distribuce """sarge"""

systém je připraven k použití.

Místo jména seržant Nahraďte název vaší distribuce.

nyní pro sestavení balíčku pro vybranou distribuci zadejte příkaz:

# pbuilder build package-version.dsc

Všechny výše popsané kroky budou automaticky dokončeny, zatímco všechny balíčky potřebné pro sestavení se stahují a instalují do dočasného adresáře, takže systém není „zahlcen“ zbytečnými balíčky. Je pravda, že problém se závislostmi sestavení bude muset být ještě vyřešen, ale projít všechny závislosti postupně s tímto nástrojem není nijak zvlášť obtížné. Přečtěte si dokumentaci k tomuto nádhernému balíčku a zjistěte o jeho dalších schopnostech.

Sestavení balíčku pomocí cowbuilderu

сowbuilder je z balíku cowdancer - je to obdoba pbuilderu, pouze ukládá obraz montážního systému nikoli v tar.gz ale v rozšířené podobě a při montáži tento obraz kopíruje technikou copy-on-write, která urychluje montáž.

Příklad konfigurace /etc/pbuilderrc:

BUILDPLACE=/var/cache/pbuilder/build/ USEPROC=yes USEDEVPTS=yes USEDEVFS=no BUILDRESULT=/var/cache/pbuilder/result/ #Mám mezipaměť apt-cacher, takže jsem zakázal ukládání balíčků do mezipaměti v pbuilderu #APTCACHE= " /var/cache/pbuilder/aptcache/" APTCACHE="" REMOVEPACKAGES="" HOOKDIR="" export DEBIAN_FRONTEND="noninteractive" DEBEMAIL="Alexander GQ Gerasiov< [e-mail chráněný]>" BUILDSOURCEROOTCMD="fakeroot" PBUILDERROOTCMD="sudo" DEBBUILDOPTS="" APTCONFDIR="" BUILDUSERID=1000 BUILDUSERNAME=gq export LOGNAME=gq BINDMOUNTS="" unset DEBOOTSTRAPOPTS export PATH="/usr/sbin /sbin:/bin:/usr/X11R6/bin" export SHELL=/bin/bash DEBOOTSTRAP="cdebootstrap" PKGNAME_LOGFILE_EXTENTION="_$(dpkg --print-architecture).build"

Obraz systému můžete vytvořit bez použití konfigurace:

# cowbuilder --create --distribution sid --architecture i386

Nyní se přihlaste do čistého systému:

# cowbuilder --login --save # instalační devscripts aptitude

Ukončení prostředí je standardní, vyhledejte sestavené balíčky ve /var/cache/pbuilder.

exit nebo Ctrl+D

Vytvoření balíčku v čistém prostředí

Jak nyní sestavit balíček v požadovaném prostředí. První z našeho katalogu<имя пакета>-<версия апстрим>s upravenou verzí a opraveným sestavení-závisí shromažďujeme balíček surzo nová verze:

dpkg-buildpackade -rfakeroot -S

Přejděte do výše uvedeného adresáře, kde je soubor shromážděn<имя пакета>_<версия>.dsc (kde je verze, toto je naše verze s “~backport”) a my říkáme

pbuild --dist sarge<имя пакета>_<версия>.dsc

Pokud dojde k chybě (například kvůli problémům se závislostí), vraťte se ke kroku 1 a opravte chyby. Pokud vše proběhlo v pořádku, sestavené balíčky se objeví v adresáři /var/cache/pbuilder/results. To je vše.

K aktualizaci obrázků (zejména relevantních pro testování) používám příkaz

pbuild --dist etch --update

Příklad automatizačního skriptu: || ||

Příklad automatizačního skriptu pro více verzí: || ||

Odstranění závislostí sestavení

K tomu můžete použít deborphan:

$ deborphan nebo $ deborphan -guess-dev nebo smažte přímo: # deborphan -guess-dev | xargs apt-get remove -purge -y

nebo skript (testoval PavloRudyj):

# aptitude markauto $(apt-cache showsrc PACKAGE_NAME | grep Závisí na sestavení | perl -p -e "s/(?:[\[(].+?[\])]|Závisí na sestavení:|,|\| )//G")