# Pacman

správce balíčků

# První krůčky

[Pacman wiki home page](https://wiki.archlinux.org/title/pacman)  
Správce balíků `pacman` je jednou z hlavních charakteristických vlastností **Arch Linuxu**. Kombinuje jednoduchý binární formát balíčku se snadno použitelným sestavovacím systémem (build system). Cílem pacmanu je umožnit snadnou správu balíčků, ať už jsou z oficiálních úložišť, nebo z vlastních sestavení uživatele.

Pacman udržuje systém aktuální synchronizací seznamů balíků s hlavním serverem. Tento model server/klient také umožňuje uživateli stahovat/instalovat balíčky jednoduchým příkazem, doplněný o všechny požadované závislosti.

<span style="vertical-align: inherit;">Pacman je postaven na knihovně `libalpm` (Arch Linux Package Management), která poskytuje jednoduché API pro správu metadat balíčků a také podporu balíčků ve formátu balíčků Pacman (`.pkg.tar.xz`). Pacman se na tuto knihovnu spoléhá při instalaci, odstraňování a správě balíčků v systému. </span>

<span style="vertical-align: inherit;">Pacman je navržen tak, aby byl jednoduchý a snadno použitelný, s přímočarým rozhraním příkazového řádku, které vyžaduje malý zásah uživatele. Využívá jeden konfigurační soubor (`/etc/pacman.conf`), který se používá k určení umístění úložišť balíčků, stejně jako různé další možnosti, jako jsou podpisové klíče balíčků a možnosti synchronizace databáze. </span>

<span style="vertical-align: inherit;">Pacman funguje tak, že stáhne soubory balíčků z určeného úložiště balíčků a poté je extrahuje a nainstaluje do příslušných umístění v systému souborů. Spravuje také lokální databázi nainstalovaných balíčků, kterou používá ke sledování závislostí a řešení konfliktů balíčků. </span>

<span style="vertical-align: inherit;">Pacman obsahuje automatický systém aktualizace balíčků, který lze použít k aktualizaci všech nainstalovaných balíčků na nejnovější dostupnou verzi. Zahrnuje také podporu virtuálních balíčků, což jsou metabalíčky, které představují sadu souvisejících balíčků, které lze nainstalovat společně, aby poskytovaly konkrétní funkce. </span>

Pacman je napsán v programovacím jazyce C a používá BSD tar formát pro balení.

Ukázka některých důležitých příkazů pro pacmana

```bash
sudo pacman -S awesome ## install package/meta-package
sudo pacman -Syu ## System update
sudo pacman -Syy ## sync database
pacman -Ss awesome ## search package with text 'gnome'
pacman -Qs awesome ## search installed packages
pacman -Si plasma-meta ## display extensive information
pacman -Qii awesome ## info + list of backup files
pacman -Qdt ## list packages no longer reqs (orphans)
sudo pacman -Sc ## clear packages in cached packages
sudo pacman -Scc ## all files in cache, strong aggresive, nothing leave in cache
sudo pacman -U /path/to/package/package_name-version.pkg.tar.zst #@ install local pckage, from AUR
sudo pacman -S --asdeps unzip ## install as dependency, can be removed as orphans
sudo pacman -Qe mc ## list version if it is explicitly installed
sudo pacman -D --asdeps unzip ## change the status to deps
sudo pacman -D --asexplicit unzip
sudo pacman -F pacman ## search files which are containing by package
sudo pacman --needed base-devel ## install if necessary
pactree awesome ## tree of depended packages

```

# Pacman Configuration /etc/pacman.conf

Moje nastavení s barvami, přehlednou tabulkou stažení balíčků, **opravodovým** pacmanem a paralelním stahováním.

```lua
Color
CheckSpace
VerbosePkgLists
ILoveCandy
ParallelDownloads = 7

```

Bezpečnost a gpg podepisování: `SigLevel = Required DatabaseOptional`  
Pacman podporuje podpisy balíčků, které do balíků přidávají další vrstvu zabezpečení. Výchozí konfigurace, `SigLevel = Required DatabaseOptional`, umožňuje ověření podpisu pro všechny balíčky na globální úrovni.

Nikdy nepoužívejte `SigLevel = Never` (jen zcela v případě velké nouze, nebo u člověka, kterého skutečně znáte a jeho závislost nelze obnovit kvůli nemoci například.)

##### Pacman Repositories multilib, extra, community a úroveň testing

Může se také stát, že úložiště obsahující balíček není ve vašem systému povoleno, např. Balíček může být v multilib úložišti, ale multilib není povolen ve vašem `pacman.conf`. Nutno povolit.

Můžete se stát i testerem pro Arch. Zapnout balíčky s `-testing`. Nutno pak ale updatovat celý systém, není jednoduchá změna! **Pozor**.