Difference between revisions of "Pacman (Česky)"

From ArchWiki
Jump to: navigation, search
m (Řešení problémů: "-f" will be removed in pacman 4.1)
(simplification and beautification of wikilinks, fixing whitespace, capitalization and section fragments (https://github.com/lahwaacz/wiki-scripts/blob/master/link-checker.py (interactive)))
 
(9 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 +
{{DISPLAYTITLE:pacman}}
 
[[Category:Package management (Česky)]]
 
[[Category:Package management (Česky)]]
[[Category:Utilities (Česky)]]
+
[[ar:Pacman]]
[[Category:HOWTOs (Česky)]]
+
 
[[da:Pacman]]
 
[[da:Pacman]]
 
[[de:Pacman]]
 
[[de:Pacman]]
Line 7: Line 7:
 
[[en:Pacman]]
 
[[en:Pacman]]
 
[[es:Pacman]]
 
[[es:Pacman]]
 +
[[fa:Pacman]]
 
[[fr:Pacman]]
 
[[fr:Pacman]]
 
[[id:Pacman]]
 
[[id:Pacman]]
Line 12: Line 13:
 
[[ja:Pacman]]
 
[[ja:Pacman]]
 
[[ko:Pacman]]
 
[[ko:Pacman]]
[[lt:Pacman]]
 
 
[[nl:Pacman]]
 
[[nl:Pacman]]
 
[[pl:Pacman]]
 
[[pl:Pacman]]
Line 22: Line 22:
 
[[tr:pacman]]
 
[[tr:pacman]]
 
[[uk:Pacman]]
 
[[uk:Pacman]]
[[zh-CN:Pacman]]
+
[[zh-cn:Pacman]]
[[zh-TW:Pacman]]
+
[[zh-tw:Pacman]]
{{DISPLAYTITLE:pacman}}
+
{{Related articles start (Česky)}}
 
+
{{Related|Downgrading Packages (Česky)}}
{{Article summary start|Shrnutí}}
+
{{Related|Pacnew and Pacsave Files (Česky)}}
{{Article summary text|Souhrnné informace o správci balíčků Arch Linuxu.}}
+
{{Related|pacman GUI Frontends (Česky)}}
{{Article summary heading|Přehled}}
+
{{Related articles end}}
{{Article summary text|{{Package management overview (Česky)}}}}
+
{{Article summary heading|Související}}
+
{{Article summary wiki|Downgrading Packages (Česky)}}
+
{{Article summary wiki|Improve Pacman Performance (Česky)}}
+
{{Article summary wiki|pacman GUI Frontends (Česky)}}
+
{{Article summary wiki|pacman Rosetta (Česky)}}
+
{{Article summary wiki|pacman Tips (Česky)}}
+
{{Article summary heading|Manuálové stránky (anglicky)}}
+
{{Article summary link|libalpm(3)|http://www.archlinux.org/pacman/libalpm.3.html}}
+
{{Article summary link|makepkg(8)|http://www.archlinux.org/pacman/makepkg.8.html}}
+
{{Article summary link|makepkg.conf(5)|http://www.archlinux.org/pacman/makepkg.conf.5.html}}
+
{{Article summary link|pacman(8)|http://www.archlinux.org/pacman/pacman.8.html}}
+
{{Article summary link|pacman.conf(5)|http://www.archlinux.org/pacman/pacman.conf.5.html}}
+
{{Article summary link|PKGBUILD(5)|http://www.archlinux.org/pacman/PKGBUILD.5.html}}
+
{{Article summary link|repo-add(8)|http://www.archlinux.org/pacman/repo-add.8.html}}
+
{{Article summary end}}
+
  
Správce balíčků '''[http://archlinux.org/pacman/ 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 (Česky)|makepkg]] a [[Arch Build System (Česky)|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.
+
Správce balíčků '''[https://archlinux.org/pacman/ 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 (Česky)|makepkg]] a [[Arch Build System (Česky)|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í.
 
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í.
Line 54: Line 38:
 
== Konfigurace ==
 
== Konfigurace ==
  
Konfigurace pacmana se nachází v souboru {{ic|/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 [http://www.archlinux.org/pacman/pacman.conf.5.html manuálové stránce pacman.conf (anglicky)].
+
Konfigurace pacmana se nachází v souboru {{ic|/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 [https://www.archlinux.org/pacman/pacman.conf.5.html manuálové stránce pacman.conf (anglicky)].
  
 
=== Hlavní volby ===
 
=== Hlavní volby ===
Line 82: Line 66:
 
Všechny oficiální repozitáře používají shodný soubor se seznamem zrcadel {{ic|/etc/pacman.d/mirrorlist}}, jenž pro umožnění udržování takovéhoto jednotného seznamu využívá proměnnou "{{Ic|$repo}}". Ta se při každém zahrnutí seznamu zrcadel v určitém repozitáři nahradí za jméno onoho repozitáře.
 
Všechny oficiální repozitáře používají shodný soubor se seznamem zrcadel {{ic|/etc/pacman.d/mirrorlist}}, jenž pro umožnění udržování takovéhoto jednotného seznamu využívá proměnnou "{{Ic|$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 [[Official Repositories (Česky)|oficiální repozitáře]], jenž využívá [[mirrors (Česky)|zrcadla]] ze zmíněného souboru.
+
Následuje příklad pro [[Official repositories (Česky)|oficiální repozitáře]], jenž využívá [[mirrors (Česky)|zrcadla]] ze zmíněného souboru.
  
 
  [core]
 
  [core]
Line 96: Line 80:
 
  Include=/etc/pacman.d/mirrorlist
 
  Include=/etc/pacman.d/mirrorlist
  
{{Note|Při využívání repozitáře {{Ic|[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ář {{Ic|[testing]}} je doporučeno se přihlásit na anglický mailing list [http://mailman.archlinux.org/mailman/listinfo/arch-dev-public arch-dev-public], aby měli k dispozici aktuální informace.}}
+
{{Note|Při využívání repozitáře {{Ic|[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ář {{Ic|[testing]}} je doporučeno se přihlásit na anglický mailing list [https://mailman.archlinux.org/mailman/listinfo/arch-dev-public arch-dev-public], aby měli k dispozici aktuální informace.}}
  
 
== Použití ==
 
== Použití ==
  
Pro další ukázky schopností pacmana vizte anglickou [http://archlinux.org/pacman/pacman.8.html manuálovou stránku pacmana]. Ukázky uvedené níže jsou pouze malým vzorkem operací, jež mohou být provedeny.
+
Pro další ukázky schopností pacmana vizte anglickou [https://archlinux.org/pacman/pacman.8.html manuálovou stránku pacmana]. Ukázky uvedené níže jsou pouze malým vzorkem operací, jež mohou být provedeny.
  
 
=== Instalace balíčků ===
 
=== Instalace balíčků ===
Line 113: Line 97:
 
  # pacman -S testing/jméno_balíčku
 
  # pacman -S testing/jméno_balíčku
  
{{Note|1='''Neměňte''' během instalace balíčků jejich seznam (např. pomocí {{Ic|pacman -Sy jméno_balíčku}}); může to vést k problémům se závislostmi [http://bbs.archlinux.org/viewtopic.php?id=89328]. Namísto toho proveďte onen [[#Upgrade balíčků|upgrade]] '''před''' instalací jakýchkoliv nových balíčků.}}
+
{{Note|1='''Neměňte''' během instalace balíčků jejich seznam (např. pomocí {{Ic|pacman -Sy jméno_balíčku}}); může to vést k problémům se závislostmi [https://bbs.archlinux.org/viewtopic.php?id=89328]. Namísto toho proveďte onen [[#Upgrade balíčků|upgrade]] '''před''' instalací jakýchkoliv nových balíčků.}}
  
 
=== Odstraňování balíčků ===
 
=== Odstraňování balíčků ===
Line 146: Line 130:
 
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 {{Ic|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.
 
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 {{Ic|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í [http://archlinux.org/ domovské stránky Arch Linuxu]. Když aktualizace vyžadují zásah uživatele, často se na http://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í.
+
Dále je zárukou navštívení [https://archlinux.org/ 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!'''
 
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!'''
Line 197: Line 181:
 
Smazání kompletně celé cache balíčků:
 
Smazání kompletně celé cache balíčků:
  
{{Warning|Toto provádějte pouze tehdy, jste-li si jistí, že nebude třeba [[Downgrading Packages (Česky)|downgrade některého balíčku]], protože {{Ic|pacman -Scc}} z cache odstraní skutečně ''všechny'' balíčky.}}
+
{{Warning|Toto provádějte pouze tehdy, jste-li si jistí, že nebude třeba [[Downgrading packages (Česky)|downgrade některého balíčku]], protože {{Ic|pacman -Scc}} z cache odstraní skutečně ''všechny'' balíčky.}}
 
  # pacman -Scc
 
  # pacman -Scc
  
 
== Řešení problémů ==
 
== Řešení problémů ==
  
{{FAQ
+
=== Aktualizace balíčku XYZ mi rozbila systém! ===
|question=Aktualizace balíčku XYZ mi rozbila systém!
+
 
|answer=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.
+
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 ({{Ic|linux}}, {{Ic|xorg-server}}, a tak dále). Pokud ano, je obvykle dobrý nápad podívat se na https://www.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.
 
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 ({{Ic|linux}}, {{Ic|xorg-server}}, a tak dále). Pokud ano, je obvykle dobrý nápad podívat se na https://www.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.
Line 210: Line 194:
 
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 ({{ic|/var/log/pacman.log}}).  
 
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 ({{ic|/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://www.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 Channel (Česky)|IRC]] nebo zkuste [[Downgrading Packages (Česky)|downgradovat problematický balíček]].
+
V tomto momentě, '''pouze poté, co jste se ujistili, že pacman neposkytuje žádné informace, že nejsou žádné související novinky na https://www.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 Channel (Česky)|IRC]] nebo zkuste [[Downgrading packages (Česky)|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í! ===
  
Přečtěte si poslední odstavec znova.}}
+
Zrcadla pro pacmana nejsou sesynchronizována okamžitě. Může trvat i déle než 24 hodin, než bude aktualizace pro vás dostupná.  
  
{{FAQ
+
Jediné možnosti jsou zde být trpělivý nebo použít jiné zrcadlo.
|question=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í!
+
|answer=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"! ===
  
{{FAQ
+
Pozn. stranou: ''Převzato z https://bbs.archlinux.org/viewtopic.php?id=56373 od Misfit138.''
|question=Při aktualizaci dostávám chybu: "file exists in filesystem"!
+
|answer=Pozn. stranou: ''Převzato z https://bbs.archlinux.org/viewtopic.php?id=56373 od Misfit138.''
+
  
 
  error: could not prepare transaction
 
  error: could not prepare transaction
Line 233: Line 217:
 
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 {{Ic|pacman -Qo}}.)
 
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 {{Ic|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 ({{Ic|pacman -Qo /cesta/k/souboru}}). Pokud je soubor vlastněn jiným balíčkem, [[Reporting Bug Guidelines (Česky)|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.}}
+
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 ({{Ic|pacman -Qo /cesta/k/souboru}}). Pokud je soubor vlastněn jiným balíčkem, [[Reporting Bug Guidelines (Česky)|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.
  
{{FAQ
+
=== Při instalaci balíčku dostávám chybu: "not found in sync db" ===
|question=Při instalaci balíčku dostávám chybu: "not found in sync db"
+
|answer=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 {{Ic|pacman -Syy}} pro vynucenou obnovu všech seznamů balíčků.}}
+
  
{{FAQ
+
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 {{Ic|pacman -Syy}} pro vynucenou obnovu všech seznamů balíčků.
|question=pacman opakovaně upgraduje ten samý balíček!
+
 
|answer=Toto nastává kvůli duplikovaným záznamům ve {{ic|/var/lib/pacman/local/}}, např. dvoum instancím {{Ic|kernel26}}. {{Ic|pacman -Qi}} vypíše správnou verzi, ale {{Ic|pacman -Qu}} rozpozná tu starou verzi a proto se pokusí balíček upgradovat.
+
=== pacman opakovaně upgraduje ten samý balíček! ===
 +
 
 +
Toto nastává kvůli duplikovaným záznamům ve {{ic|/var/lib/pacman/local/}}, např. dvoum instancím {{Ic|kernel26}}. {{Ic|pacman -Qi}} vypíše správnou verzi, ale {{Ic|pacman -Qu}} rozpozná tu starou verzi a proto se pokusí balíček upgradovat.
  
 
Řešení: smažte problematický záznam ve {{ic|/var/lib/pacman/local/}}.
 
Řešení: smažte problematický záznam ve {{ic|/var/lib/pacman/local/}}.
  
{{Note|pacman verze 3.4 by již měl v případě duplikovaných záznamů vyhlásit chybu. Tato poznámka by tedy měla být zastaralá.}}}}
+
{{Note|pacman verze 3.4 by již měl v případě duplikovaných záznamů vyhlásit chybu. Tato poznámka by tedy měla být zastaralá.}}
  
{{FAQ
+
=== pacman během upgradu sletěl! ===
|question=pacman během upgradu sletěl!
+
 
|answer=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í:
+
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
 
#Nabootujte pomocí Live CD Arch Linuxu
 
#Připojte svůj kořenový souborový systém (root)
 
#Připojte svůj kořenový souborový systém (root)
 
#Aktualizujte databázi balíčků pomocí {{Ic|pacman -Syy}}
 
#Aktualizujte databázi balíčků pomocí {{Ic|pacman -Syy}}
#Nainstalujte poškozený balíček pomocí {{Ic|pacman -r /cesta/k/rootu -S balíček}}}}
+
#Nainstalujte poškozený balíček pomocí {{Ic|pacman -r /cesta/k/rootu -S balíček}}
  
{{FAQ
+
=== Nainstaloval jsem software pomocí {{Ic|make install}}; tyto soubory nepatří žádnému balíčku! ===
|question=Nainstaloval jsem software pomocí {{Ic|make install}}; tyto soubory nepatří žádnému balíčku!
+
 
|answer=Pokud předáte pacmanovi při instalaci přepínač {{Ic|-S --force}}, přepíše ručně nainstalovaný software. Pokud byl software nainstalován do {{ic|/usr/local}}, můžete nechat vyhledat soubory, o kterých pacman ''má'' přehled:
+
Pokud předáte pacmanovi při instalaci přepínač {{Ic|-S --force}}, přepíše ručně nainstalovaný software. Pokud byl software nainstalován do {{ic|/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' \;
 
  # find /usr/local -exec bash -c 'file={}; pacman -Qo "$file" 2>/dev/null' \;
  
Line 266: Line 250:
 
> pacman -Qo "$file" &>/dev/null || echo "$file"' \;
 
> pacman -Qo "$file" &>/dev/null || echo "$file"' \;
 
</pre>
 
</pre>
}}
+
 
 +
== Externí odkazy ==
 +
 
 +
'''Manuálové stránky (anglicky)'''
 +
* [https://www.archlinux.org/pacman/libalpm.3.html libalpm(3)]
 +
* [https://www.archlinux.org/pacman/makepkg.8.html makepkg(8)]
 +
* [https://www.archlinux.org/pacman/makepkg.conf.5.html makepkg.conf(5)]
 +
* [https://www.archlinux.org/pacman/pacman.8.html pacman(8)]
 +
* [https://www.archlinux.org/pacman/pacman.conf.5.html pacman.conf(5)]
 +
* [https://www.archlinux.org/pacman/PKGBUILD.5.html PKGBUILD(5)]
 +
* [https://www.archlinux.org/pacman/repo-add.8.html repo-add(8)]

Latest revision as of 20:20, 24 April 2016

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).

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
Note: Při využívání repozitáře [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
Note: Neměňte během instalace balíčků jejich seznam (např. pomocí 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
Note: pacman neodstraňuje konfigurační soubory vytvořené samotnou aplikací (například .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
Note: Jsouc distribucí používající postupné aktualizace, nebude vždy aktualizace vašeho Arch Linux systému tak přímočará jako u distribucí s pevnými vydáními. Navíc pacman není balíčkovačem s principem "udělat a zapomenout". Údržba systému s Arch Linuxem má proto sklon mást nováčky (vycházeje ze stále se opakujících diskuzí na fóru). Před pokračováním si, prosím, pečlivě pročtěte následující sekci.

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!

Tip: Nezapomeňte, že výstup pacmana je logován do souboru /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ů:

Warning: Toto provádějte pouze tehdy, jste-li si jistí, že nebude třeba downgrade některého balíčku, protože 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://www.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://www.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/.

Note: pacman verze 3.4 by již měl v případě duplikovaných záznamů vyhlásit chybu. Tato poznámka by tedy měla být zastaralá.

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í:

  1. Nabootujte pomocí Live CD Arch Linuxu
  2. Připojte svůj kořenový souborový systém (root)
  3. Aktualizujte databázi balíčků pomocí pacman -Syy
  4. 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 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)