pacman (Čeština)
Správce balíčků pacman je jedním z hlavních rysů Arch Linuxu. Kombinuje jednoduchý binární formát balíčků se sestavovacím systémem jednoduchým na použití (viz makepkg a Arch Build System). Cílem pacmana je umožnit jednoduchou správu balíčků, ať už pocházejí z oficiálních repozitářů Archu nebo jsou sestaveny samotnými uživateli.
pacman udržuje systém aktuální pomocí synchronizace seznamů balíčků s hlavním serverem. Tento model server/klient též umožňuje stáhnutí/instalaci balíčků jedním jednoduchým příkazem, a to včetně všech vynucených závislostí.
Narozdíl od většiny ostatních správců balíčků je pacman napsán v programovacím jazyku C. Používá formát balíčků .tar.gz a v současnosti migruje k používání formátu .tar.xz (komprese LZMA2).
pacman -Qlq pacman | grep bin
Konfigurace
Konfigurace pacmana se nachází v souboru /etc/pacman.conf
. Ten je místem, kde si uživatel nakonfiguruje program tak, aby pracoval požadovaným způsobem. Zevrubné informace o konfiguračním souboru můžete nalézt v manuálové stránce pacman.conf (anglicky).
Hlavní volby
Hlavní volby jsou v sekci [options]
. Pro informace týkající se toho, co zde můžete udělat, si přečtěte si manuálovou stránku nebo si prohlédněte výchozí pacman.conf
.
Český překlad bohužel v současnosti neexistuje.
Zamezení upgradu balíčku
Abyste zamezili upgradu některého specifického balíčku, uveďte ho v souboru tímto způsobem:
IgnorePkg=kernel26
Pokud zde potřebujete uvést vícero balíčků, oddělte je mezerami.
Zamezení upgradu skupiny balíčků
Stejně jako u jednotlivých balíčků je možné zamezit i upgradu celé skupiny balíčků:
IgnoreGroup=gnome
Repozitáře
Tato sekce definuje, které repozitáře mají být použity. Mohou zde být uvedeny přímo nebo zahrnuty z jiného souboru.
Všechny oficiální repozitáře používají shodný soubor se seznamem zrcadel /etc/pacman.d/mirrorlist
, jenž pro umožnění udržování takovéhoto jednotného seznamu využívá proměnnou "$repo
". Ta se při každém zahrnutí seznamu zrcadel v určitém repozitáři nahradí za jméno onoho repozitáře.
Následuje příklad pro oficiální repozitáře, jenž využívá zrcadla ze zmíněného souboru.
[core] # Sem přidejte své upřednostňované servery, budou použity jako první Include=/etc/pacman.d/mirrorlist
[extra] # Sem přidejte své upřednostňované servery, budou použity jako první Include=/etc/pacman.d/mirrorlist
[community] # Sem přidejte své upřednostňované servery, budou použity jako první Include=/etc/pacman.d/mirrorlist
[testing]
byste si měli dávat pozor. Je v aktivním vývoji a aktualizace mohou způsobit nefunkčnost některých balíčků. Lidem užívající repozitář [testing]
je doporučeno se přihlásit na anglický mailing list arch-dev-public, aby měli k dispozici aktuální informace.Použití
Pro další ukázky schopností pacmana vizte anglickou manuálovou stránku pacmana. Ukázky uvedené níže jsou pouze malým vzorkem operací, jež mohou být provedeny.
Instalace balíčků
Abyste nainstalovali buď jeden balíček nebo seznam balíčků (včetně závislostí), použijte následující příkaz:
# pacman -S jméno_prvního_balíčku jméno_druhého_balíčku
Někdy je od jednoho balíčku vícero verzí v různých repozitářích (např. extra a testing). Můžete určit, který z nich má být nainstalován:
# pacman -S extra/jméno_balíčku # pacman -S testing/jméno_balíčku
pacman -Sy jméno_balíčku
); může to vést k problémům se závislostmi [1]. Namísto toho proveďte onen upgrade před instalací jakýchkoliv nových balíčků.Odstraňování balíčků
Pro odstranění konkrétního balíčku, ponechávaje všechny jeho závislosti i nadále nainstalované:
# pacman -R jméno_balíčku
Pro odstranění balíčku a všech jeho závislostí, jež nejsou vyžadovány žádným jiným nainstalovaným balíčkem:
# pacman -Rs jméno_balíčku
Při odstraňování jistých aplikací pacman ukládá důležité konfigurační soubory s koncovkou .pacsave
. Abyste smazali i tyto záložní soubory, použijte volbu -n:
# pacman -Rn jméno_balíčku # pacman -Rns jméno_balíčku
.tečkové
soubory v domovském adresáři).Upgrade balíčků
pacman dokáže zaktualizovat všechny nainstalované balíčky pomocí jednoho jediného příkazu. V závislosti na tom, jak je váš systém aktuální, to může chvíli trvat. Tento příkaz sesynchronizuje databáze repozitářů a zároveň zaktualizuje balíčky v systému:
# pacman -Syu
pacman je mocný nástroj pro správu balíčků, ale nepokouší se "udělat všechno možné". Pokud vás to mate, přečtěte si článek o principech Arch Linuxu. Místo toho by měli být uživatelé ostražití a za údržbu vlastního systému brát odpovědnost. Například, když vykonováte aktualizaci systému (pacman -Syu
), je nezbytné, abyste si přečetli veškerý výstup z pacmana a používali zdravý rozum.
Namísto okamžitého aktualizování, jakmile jsou balíčky dostupné, by měli uživatelé mít na paměti, že aktualizace kritického balíčku může mít nedozírné následky. To ku příkladu znamená, že není moudré aktualizovat xorg-server
, máte-li za chvíli předvádět důležitou prezentaci. Raději aktualizujte ve volném čase a buďte připraveni se popást s jakýmkoliv problémem, který kvůli aktualizaci může nastat.
Dále je zárukou navštívení domovské stránky Arch Linuxu. Když aktualizace vyžadují zásah uživatele, často se na https://archlinux.org objeví příslušné oznámení, které o tom pojednává. Krátce po tom, co se stanou aktualizace dostupné na zrcadlech, se na též fóru obvykle objeví příspěvky popisující ten samý problém a případně poskytující jeho řešení.
Když je prováděna samotná aktualizace, nezapomeňte si pročíst zprávy vypsané pacmanem. Balíčkovači často popisují změny a očekávané problémy, a vedou uživatele k příslušnému zdroji nebo stránce na této wiki. Vždy si pročtěte veškeré informace ve výstupu pacmana!
/var/log/pacman.log
.Dotazování databází balíčků
Je-li uvedena volba -Q, pacman se dotazuje lokální databáze balíčků, viz:
$ pacman -Q --help
Je-li uvedena volba -S, dotazuje se databáze synchronizované se servery, viz:
$ pacman -S --help
pacman může v databázi vyhledávat určité balíčky, a to jak podle jmen tak podle popisů balíčků:
$ pacman -Ss balíček
Pro prohledání již nainstalovaných balíčků:
$ pacman -Qs balíček
Pokud chcete širší informace o některém balíčku:
$ pacman -Si balíček
A opět pro lokálně nainstalované balíčky:
$ pacman -Qi balíček
Pro zobrazení seznamu souborů nainstalovaných některým balíčkem:
$ pacman -Ql balíček
Též se můžete dotázat databáze, zda-li neví, k jakému balíčku patří určitý soubor v souborovém systému.
$ pacman -Qo /cesta/k/souboru
Pro vypsání všech balíčků, které již nadále nejsou potřebné jako závislosti pro jiné balíčky (sirotci):
$ pacman -Qdt
Další příkazy
Stáhnout balíček, ale neinstalovat ho:
# pacman -Sw balíček
Instalace "lokálního" balíčku, který nepochází z repozitáře:
# pacman -U /cesta/k/balíčku/jméno_balíčku-verze.pkg.tar.gz
Instalace "vzdáleného" balíčku (taktéž nepocházejícího z repozitáře):
# pacman -U http://www.ukázkovýbalíček/repo/ukázkovýbal.tar.gz
Vyčištění cache balíčků od balíčků, jenž nejsou momentálně nainstalovány (/var/cache/pacman/pkg
):
# pacman -Sc
Smazání kompletně celé cache balíčků:
pacman -Scc
z cache odstraní skutečně všechny balíčky.# pacman -Scc
Řešení problémů
Aktualizace balíčku XYZ mi rozbila systém!
Arch Linux je distribuce s postupnými aktualizacemi a nejnovějším dostupným softwarem. Aktualizace balíčků jsou dostupné, jakmile jsou považovány za dostatečně stabilní pro obecné použití. Aktualizace nicméně někdy vyžadují zásah uživatele: konfigurační soubory mohou potřebovat aktualizovat, volitelné závislosti se mohou změnit atp.
Nejdůležitější rada pro zapamatování je neaktualizovat systém "naslepo". Vždy si přečtěte seznam balíčků, které mají být zaktualizovány. Všímejte si případů, kdy mají být aktualizovány "kritické" balíčky (linux
, xorg-server
, a tak dále). Pokud ano, je obvykle dobrý nápad podívat se na https://archlinux.org po jakýchkoliv novinkách a projít si poslední příspěvky na fóru, abyste předem věděli, zda lidé nemají v důsledku některé aktualizace problémy.
Pokud je očekáváno/známo, že aktualizace balíčku způsobí problémy, balíčkovači (lidé, kteří se starají o balíčky) nezapomenou přidat příslušnou zprávu, kterou pacman zobrazí při aktualizaci daného balíčku. Pokud po aktualizaci máte nějaké potíže, dvakrát si projděte výstup pacmana, jenž naleznete v logu (/var/log/pacman.log
).
V tomto momentě, pouze poté, co jste se ujistili, že pacman neposkytuje žádné informace, že nejsou žádné související novinky na https://archlinux.org, a že nejsou na fóru žádné příspěvky ohledně dané aktualizace, byste měli zvážit vyhledání pomoci na fóru, IRC nebo zkuste downgradovat problematický balíček.
Přečtěte si poslední odstavec znova.
Vím o tom, že byl vydán update balíčku ABC, ale pacman mi stále říká, že je můj systém aktuální!
Zrcadla pro pacmana nejsou sesynchronizována okamžitě. Může trvat i déle než 24 hodin, než bude aktualizace pro vás dostupná.
Jediné možnosti jsou zde být trpělivý nebo použít jiné zrcadlo.
Při aktualizaci dostávám chybu: "file exists in filesystem"!
Pozn. stranou: Převzato z https://bbs.archlinux.org/viewtopic.php?id=56373 od Misfit138.
error: could not prepare transaction error: failed to commit transaction (conflicting files) package: /cesta/k/souboru exists in filesystem Errors occurred, no packages were upgraded.
Proč se to stává: pacman zjistil konflikt souborů a shodně s jeho návrhem tyto soubory pro vás nepřepíše. Je to vlastnost návrhu, nikoliv nedostatek.
Je odpovědností uživatele udržovat svůj systém, ne správce balíčků. (Pro dotázání, který balíček, pokud vůbec nějaký, vlastní daný soubor, můžete zavolat pacman -Qo
.)
Tato záležitost má obvykle triviální řešení. Bezpečný způsob je nejdříve si ověřit, zda-li tento soubor nevlastní jiný balíček (pacman -Qo /cesta/k/souboru
). Pokud je soubor vlastněn jiným balíčkem, vyplňte zprávu o bugu. Pokud onen soubor není vlastněn jiným balíčkem, přejmenujte soubor, který "existuje v souborovém systému" a vyvolejte příkaz pro aktualizaci znovu. Pokud všechno půjde dobře, ten soubor budete moci odstranit.
Při instalaci balíčku dostávám chybu: "not found in sync db"
Nejdříve se ujistěte, že balíček skutečně existuje (a pozor na překlepy!). Pokud daný balíček existuje, buď může být váš seznam balíčků zastaralý nebo můžete mít špatně nakonfigurované repozitáře. Zkuste spustit pacman -Syy
pro vynucenou obnovu všech seznamů balíčků.
pacman opakovaně upgraduje ten samý balíček!
Toto nastává kvůli duplikovaným záznamům ve /var/lib/pacman/local/
, např. dvoum instancím kernel26
. pacman -Qi
vypíše správnou verzi, ale pacman -Qu
rozpozná tu starou verzi a proto se pokusí balíček upgradovat.
Řešení: smažte problematický záznam ve /var/lib/pacman/local/
.
pacman během upgradu sletěl!
V případě, že pacman během odstraňování balíčků spadne spolu s chybovou hláškou ohledně zápisu do databáze a další pokusy o reinstalaci nebo upgrade balíčků selhávají:
- Nabootujte pomocí Live CD Arch Linuxu
- Připojte svůj kořenový souborový systém (root)
- Aktualizujte databázi balíčků pomocí
pacman -Syy
- Nainstalujte poškozený balíček pomocí
pacman -r /cesta/k/rootu -S balíček
Nainstaloval jsem software pomocí make install
; tyto soubory nepatří žádnému balíčku!
Pokud předáte pacmanovi při instalaci přepínač -S --force
, přepíše ručně nainstalovaný software. Pokud byl software nainstalován do /usr/local
, můžete nechat vyhledat soubory, o kterých pacman má přehled:
# find /usr/local -exec bash -c 'file={}; pacman -Qo "$file" 2>/dev/null' \;
Pro vyhledání všech souborů, které nejsou sledovány pacmanem:
# find / -xdev -exec bash -c 'file={}; [[ "$file" =~ ^/root || \ > "$file" =~ ^/boot/(grub|kernel) || "$file" =~ ^/usr/(include|lib) ]] || \ > pacman -Qo "$file" &>/dev/null || echo "$file"' \;
Externí odkazy
Manuálové stránky (anglicky)