V tomto průvodci krok za krokem se podíváme, jak sestavit balíčky debianu ze zdroje na Debianu, Ubuntu a dalších systémech založených na APT, jako je Linux Mint.
Debian a systémy založené na Debianu, jako je Ubuntu, používají Advanced Package Tool nebo APT zkrátka pro instalaci, aktualizaci, aktualizaci a odstranění softwaru z příkazového řádku.
Obvykle správce balíčků APT ukládá seznam repozitářů do souboru s názvem /etc/apt/sources.list
a v libovolném souboru s příponou .list
v adresáři /etc/apt/sources.list.d/
.
Když nainstalujeme balíček, apt
příkaz načte binární nebo předkompilovanou verzi daného balíčku z těchto úložišť.
Kromě instalace binárních balíčků vám APT také umožňuje stáhnout zdrojový kód balíčku. Poté můžete přidat některé funkce do zdrojového kódu, sestavit balíček ze zdrojového kódu a nakonec nainstalovat upravenou verzi balíčku.
Proč bychom měli sestavovat balíček ze zdroje?
Důvodů, proč sestavit balíček ze zdroje, může být mnoho. Zde je několik důvodů, které mě nyní napadají:
- Prohlédněte si zdrojový kód a najděte chybu.
- Přidejte do balíčků nové funkce, které již nejsou aktivně vyvíjeny.
- Nainstalujte nejnovější verzi balíčku ze zdroje. Obecně mohou být balíčky v oficiálních repozitářích trochu staré.
- A co je důležitější - naučte se sestavovat balíčky Debianu ze zdroje.
Nainstalujte potřebné nástroje pro sestavení
Abychom mohli sestavit binární balíček ze zdroje, musíme nejprve nainstalovat potřebné nástroje pro sestavení. V závislosti na nástroji příkazového řádku k sestavení binárního balíčku možná budete muset nainstalovat některý z následujících balíčků:
- dpkg-dev
- devscripts
Tyto balíčky poskytují četné nástroje pro vytváření binárních balíčků ze zdrojového kódu.
Chcete-li nainstalovat "dpkg-dev"
, spustit:
$ sudo apt install dpkg-dev
Příkaz k instalaci "devscripts"
balíček je:
$ sudo apt install devscripts
Povolit zdrojová úložiště
Ujistěte se, že jste povolili zdrojová úložiště.
Chcete-li tak učinit, otevřete /etc/apt/sources.list
soubor:
$ sudo vim /etc/apt/sources.list
Uvidíte v něm několik řádků jako níže:
# Viz http://help.ubuntu.com/community/UpgradeNotes, jak upgradovat na # novější verze distribuce.deb http://in.archive.ubuntu.com/ubuntu focal main limited# deb- src http://in.archive.ubuntu.com/ubuntu hlavní omezené[...]
Ve výše uvedeném souboru jsou všechny řádky začínající jedním nebo dvěma hashemi (#) pouze komentáře, pouze pro informaci. A řádky bez hashů jsou apt repozitáře .
V úložišti apt se řádky začínající na „deb“ vztahují k binárním balíčkům, které mohou uživatelé nainstalovat pomocí správce balíčků apt. A řádky začínající "deb-src" jsou relativní ke zdrojovým balíčkům. To je užitečné pro vývojáře. Ve výchozím nastavení je "deb-src" zakomentován v seznamu zdrojů.
Chcete-li stáhnout zdrojové balíčky, musíte odkomentovat řádek "deb-src". Odstraňte # symbol pro odkomentování řádku. Po odkomentování by řádky úložiště měly vypadat takto:
# Viz http://help.ubuntu.com/community/UpgradeNotes, jak upgradovat na # novější verze distribuce.deb http://in.archive.ubuntu.com/ubuntu focal main limited deb-src http://in.archive.ubuntu.com/ubuntu focal main omezený [...]
Uložte a zavřete soubor. Aktualizujte seznam úložiště pomocí příkazu:
Aktualizace $ sudo apt
Stáhněte si zdrojové balíčky
Stáhněte si zdrojový kód balíčku pomocí "apt source <package-name>"
příkaz. Například následující příkaz stáhne zdrojový kód "Hello World!"
program:
$ apt source ahoj
Ukázkový výstup:
Čtení seznamů balíčků... HotovoPotřebujete získat 734 kB zdrojových archivů.Získejte:1 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (dsc) [1847 B]Získejte:2 http://in.archive.ubuntu.com/ubuntu focal/main ahoj 2.10-2ubuntu2 (tar) [726 kB]Get:3 http://in.archive.ubuntu.com/ubuntu focal/main ahoj 2.10- 2ubuntu2 (diff) [6560 B]Načteno 734 kB za 2s (336 kB/s)dpkg-source:info:extrahování hello in hello-2.10 dpkg-source:info:unpacking hello_2.10.orig.tar.gz dpkg-source:info:rozbalení hello_2.10-2ubuntu2.debian.tar.xz
Jak můžete vidět, stáhl jsem si zdrojový kód programu Hello World.
$ ls hello-2.10 hello_2.10-2ubuntu2.debian.tar.xz hello_2.10-2ubuntu2.dsc hello_2.10.orig.tar.gz
Prohlédněte si skutečný obsah zdrojového kódu:
$ ls hello-2.10/ O-NLS ChangeLog INSTALACE NOVINKY README-release aclocal.m4 configure debian lib man testy AUTOŘI ChangeLog.O Makefile.am ČTĚTE DĚKUJI build-aux configure.ac doc m4 poKOPÍROVÁNÍ GNUmakefile Makefile.in README-dev TODO hello config.1 maint .mk src
Nainstalujte závislosti sestavení pro balíček
Dále musíme nainstalovat i závislosti pro tento balíček. Chcete-li to provést, spusťte:
$ sudo apt build-dep ahoj
Nyní jsme stáhli zdrojový kód balíčku a nainstalovali závislosti potřebné k sestavení tohoto balíčku. Dále proveďte změny ve zdrojovém kódu.
Upravit zdrojový kód balíčku debian
Cd do adresáře, který obsahuje zdroj balíčku. V našem případě je to ahoj-2.10 .
$ cd hello-2.10
Upravte kód dle přání. Kód je v souboru "hello.c"
pod "src"
adresář.
$ vi src/hello.c
Upravte kód a/nebo proveďte jakékoli změny. Po dokončení úprav kódu soubor uložte a zavřete.
Nyní je čas sestavit skutečný balíček .deb.
Sestavte balíčky Debianu ze zdroje
Stáhli jsme zdrojový kód a upravili kód. Pojďme sestavit balíček ze zdroje. Můžeme to udělat třemi způsoby:
- Pomocí
"dpkg-buildpackage"
příkaz - Pomocí
"debuild"
příkaz - Stáhněte si zdroj a vytvořte jej přímo
Metoda 1 – Použití dpkg-buildpackage:
Ujistěte se, že jste nainstalovali "dpkg-dev"
balíček.
A pak spusťte následující příkaz pro sestavení balíčku ze zdroje:
$ dpkg-buildpackage -rfakeroot -b -uc -us
Tady,
dpkg-buildpackage
- Příkaz pro sestavení binárních nebo zdrojových balíčků ze zdrojů.-rfakeroot
- Vytvořte prostředí fakeroot pro simulaci oprávnění root (pro zamezení problémům s vlastnictvím a oprávněními).-b
- Sestavte pouze binární balíček.-uc
- Nepodepisujte protokol změn kryptograficky. tj. nepodepisujte.buildinfo
a.changes
soubory-us
- Nepodepisujte zdrojový balíček.
Ujistěte se, že jste výše uvedený příkaz spustili v hlavním adresáři zdrojového stromu. Jinak to nebude fungovat.
Pokud je sestavení úspěšné, zobrazí se zpráva jako níže:
[...]dpkg-deb:sestavení balíčku 'hello' v '../hello_2.10-2ubuntu2_amd64.deb'. dpkg-deb:sestavení balíčku 'hello-dbgsym' v 'debian/.debhelper/scratch-space/build-hello/hello-dbgsym_2.10-2ubuntu2_amd64.deb'. Přejmenování hello-dbgsym_2.10-2ubuntu2_amd64.deb na hello-dbgsym_2.10-2ubuntu2_amd64.ddeb dpkg-genbuildinfo --build=binary dpkg-genchanges --build=binary>..gen-samdpuntu:6.1 info:nahrání pouze binárně (bez zdrojového kódu) dpkg-source --after-build .dpkg-buildpackage:info:pouze binární nahrání (bez zdroje)
Gratulujeme! Úspěšně jsme vytvořili balíček .deb ze zdroje. Nyní se vraťte do nadřazeného adresáře a uvidíte nově vytvořený soubor .deb:
$ cd ..
$ ls
Ukázkový výstup:
hello-2.10 hello_2.10-2ubuntu2.dsc hello_2.10-2ubuntu2_amd64.deb hello-dbgsym_2.10-2ubuntu2_amd64.ddeb hello_2.10-2ubuntu2_amd64.buildinfo hello_2.10.orig.tar.gzhello_2.10-2ubuntu2.debian.tar.xzchange hello_2.10-264pre.2Metoda 2 – Použití debuild
Ujistěte se, že jste nainstalovali
"devscripts"
balíček.Poté sestavte binární balíček spuštěním následujícího příkazu ze zdrojového stromu:
$ debuild -b -uc -usPo úspěšném sestavení bude výsledný
.deb
balíček bude uložen v nadřazeném adresáři.Metoda 3 – Stáhněte si a vytvořte přímo
Toto je nejjednodušší a přímočará metoda než výše uvedené dvě metody. Při této metodě stáhneme zdrojový kód balíčku a předáme
"--compile"
možnost sestavit binární soubor v jediném příkazovém řádku níže:$ sudo apt-get source --compile helloVýše uvedený příkaz stáhne zdrojový kód
"hello"
program a sestavte.deb
balíček a uložte jej do aktuálního adresáře.Nainstalujte soubor .deb
Přejděte do umístění, kde je
.deb
soubor se uloží a nainstalujte jej následovně:$ sudo dpkg -i hello_2.10-2ubuntu2_amd64.debPokud se zobrazí chybová zpráva o chybějících závislostech, spusťte:
$ sudo apt install -fJak můžete vidět, sestavení balíčku debianu ze zdrojového kódu v Linuxu je velmi snadné!
Související čtení:
- Jak sestavit balíčky ze zdroje pomocí CheckInstall
- Jak snadno vytvářet balíčky Linuxu pro více platforem
- Znovu vytvořte binární balíčky Debianu, které jsou již nainstalovány v systému
- Jak převést balíčky Linuxu pomocí aplikace Alien
- Jak převést balíčky DEB na balíčky Arch Linux
Doufám, že to pomůže.