Portál AbcLinuxu, 30. dubna 2025 21:59
V tomto díle si vysvětlíme práci s balíčkovacím managerem pacman (konfigurační soubory a přepínače) a ukážeme si, jak vytvořit lokální repozitář.
Pacman je to, co dělá z Arch Linuxu velmi snadno použitelnou distribuci. V extrémním případě ani nepotřebujete instalační ISO, stačí správně použít pacmana.
Tvůrcem pacmana je Judd Vinet. Celý je napsán v C, společně s jeho vznikem vznikl i Arch Linux. Pacman se rychle stal velmi populární a používají ho i jiné distribuce, například Frugalware Linux a Aegean Linux.
Konfigurace je snadná; máme jeden hlavní soubor /etc/pacman.conf
a z něj se odkazujeme na soubory se seznamem zrcadel repozitářů. Seznamy zrcadel se nacházejí v /etc/pacman.d/
.
Soubor je velmi dobře okomentován a syntaxe je velmi jednoduchá, umožňuje rychle nastavit vše potřebné. Uvedeme si krátký příklad (jsou vynechány komentáře):
[options] LogFile = /var/log/pacman.log NoUpgrade = etc/passwd etc/group etc/shadow etc/sudoers HoldPkg = pacman glibc IgnorePkg = qtcurve-kde3 #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u [current] Include = /etc/pacman.d/current
Příklad ani zdaleka neobsahuje všechna možná nastavení, proto si je probereme:
var/lib/pacman
. Cesta je relativní od kořenového adresáře který může být jiný než "/" (viz níže).DBPath
je relativní, výchozí je var/cache/pacman
.--sysupgrade
aktualizovány. To je užitečné, pokud chcete používat starší verzi nějakého balíčku..part
a za %u URL stahovaného souboru. Užitečné, pokud má pacman problémy se stahováním z FTP/HTTP.syslog()
, zprávy budou zapisovány do /var/log/messages
./var/log/pacman.log
.Opět uvedu příklad, jak takový soubor vypadá:
# # current: Arch Linux current repository # # United States Server = ftp://ftp.archlinux.org/current/os/x86_64 # Server = ftp://ftp.nethat.com/pub/linux/archlinux/current/os/x86_64
Soubor má syntax Server = URI
, kde URI může být FTP server, HTTP server, ale i lokální adresář - takový repozitář má URI file://cesta
.
Aby bylo URI repozitářem musí obsahovat soubor název_reposiráře.db.tar.gz
. Tento soubor obsahuje databázi balíčků v repozitáři – tedy to, co se nachází v adresáři /var/lib/pacman/repozitář
, jen zabalené v archivu. Každý adresář reprezentuje jeden balíček v databázi a obsahuje soubor se seznamem závislostí (depends
) a popisem balíčku (desc
).
Příklad toho, jak vypadá soubor depends
(balíček audacity-1.2.4-2):
%DEPENDS% libvorbis libmad libid3tag wxgtk-gtk1>=2.6.3.2
Všimněte si, jak jednoduše je hlídána verze balíčku u závislostí.
Příklad souboru desc
(balíček audacity-1.2.4-2):
%NAME% audacity %VERSION% 1.2.4-2 %DESC% Audacity is a program that lets you manipulate digital audio waveforms %CSIZE% 2096810 %MD5SUM% 5e308fa2d10f5ccb2f235d1f62a7fccd
CSIZE udává velikost balíčku a používá se pro zjištění velikosti stahovaných dat, MD5SUM je kontrolní součet balíčku.
Pokud chceme vytvořit repozitář obsahující balíčky z nějakého lokálního adresáře, použijeme skript repo-add
, který vygeneruje databázi balíčků:
repo-add /home/pkgs/custom.db.tar.gz /home/pkgs/*.pkg.tar.gz
Podobně postupujeme, pokud chceme přidat jednotlivé balíčky:
repo-add /home/pkgs/custom.db.tar.gz \ /home/pkgs/helloworld-0.4-1-i686.pkg.tar.gz
Příkaz pro odstranění balíčku z databáze:
repo-remove /home/pkgs/custom.db.tar.gz \ /home/pkgs/helloworld-0.4-1-i686.pkg.tar.gz
Popisovány jsou vlastnosti pacmana 3.0.x
, starší verze se mohou lišit.
Postupně probereme operace a jejich nejpoužívanějíší přepínače, pokud chcete vědět více, prohlédněte si manuálovou stránku.
Pacman se volá takto:
pacman <operace> [volby] [balíčky]
Podobné jako --upgrade
, ale aktualizuje jen balíčky, které jsou v systému.
Provádí „dotazy“ nad lokální databází (aktuálně nainstalovaných) balíčků. Důležité přepínače:
--upgrade
.Odinstaluje balíčky, konfigurační soubory jsou uloženy jako .pacsave
. Důležité přepínače:
Aktualizuje balíčky a stahuje je přímo ze zrcadel. Důležité přepínače:
pacman.conf
.Nainstaluje balíček. Pokud balíček už nainstalován je, tak odinstaluje aktuálně přítomný v systému a nainstaluje uvedený.
/usr/local
místo do /usr
.Kompletní aktualizaci systému jde zařídit příkazem:
# pacman -Syu
Nejprve se aktualizují databáze balíčků v repozitářích a poté se nainstalují nové balíčky. O archistech se tvrdí, že pouštějí tento příkaz několikrát denně. Jako optimální se ukazuje aktualizovat systém jednou za týden, nejlépe po víkendu.
Odinstalování balíčků, včetně balíčků, které na něm závisí, a závislostí, které už nebudou potřeba:
# pacman -Rcs balíček
Tímto způsobem zajistíte, že balíčky, které nejsou třeba, nebudou v systému. Příklad - pokus o odinstalování beryl-core:
# pacman -Rsc beryl-core checking dependencies... done Targets: emerald-themes beryl-settings-simple beryl-settings emerald beryl-settings-bindings beryl-plugins-unsupported beryl-plugins beryl-manager beryl-core Do you want to remove these packages? [Y/n]
Pokud by nebyl uveden přepínač c, pacman by skončil chybovou hláškou:
# pacman -Rs beryl-core checking dependencies... error: failed to prepare transaction (could not satisfy dependencies) beryl-core is required by beryl-manager beryl-core is required by beryl-plugins beryl-core is required by beryl-plugins-unsupported beryl-core is required by beryl-settings-bindings beryl-core is required by emerald
Instalace aktuální verze balíčku:
# pacman -Sy balíček
Pro každý konfigurační soubor (v balíčku je uveden v seznamu backup
) se při instalaci spočítá md5sum. Představme si situaci, kdy balíček upgradujeme. V tomto případě spočítáme md5sum aktuálního souboru (toho, který se nachází na disku), a také toho, který je v právě instalovaném balíčku. Označme si soubory následovně:
Může nastat pět situací:
.pacnew
a uživatel je na to upozorněn.V příštím díle probereme pravidla pro psaní PKGBULIDu, ukážeme si, jak pomocí makepkg
sestavit balíček, a podíváme se na AUR.
[current] # Add your preferred servers here, they will be used first Server = .... Include = /etc/pacman.d/current
[darm@HAL9000 ~]$ pacman -Ql | wc -l
198717
:) Tak to asi ne, Time :D
-Ql prohledává obsahy balíčků.
pacman -Q
vypíše zoznam nainštalovaných balíčkov.
-Qo
slúži len na zistenie balíčku pre nainštalované súbory. Z toho plynie, že si máte prečítať komentár, na ktorý reagujete ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.