# Pacman/Pacnew and Pacsave (Česky)

< Pacman

## Na začátek

Při upgradech nebo odstraňování balíčků vás Pacman čas od času informuje o souborech (obvykle konfiguračních v `/etc`), jenž jsou instalovány s příponou `.pacnew` nebo zálohovány s příponou `.pacsave`.

Soubor `.pacnew` může být vytvořen při upgradu balíčku (`pacman -Syu`, `pacman -Su` nebo `pacman -U`), aby se zamezilo přepsání již existujícího souboru, který byl předtím změněn uživatelem. Když tato situace nastane, ve výstupu pacmanu se objeví zpráva podobná následující:

    warning: /etc/pam.d/usermod installed as /etc/pam.d/usermod.pacnew

Soubor `.pacsave` může být vytvořen při odstraňování balíčku (`pacman -R`) nebo jeho upgradu (balíček musí být nejdříve odstraněn). Když má databáze pacmanu záznam o tom, že by měl být jistý soubor vlastněný balíčkem zálohován, vytvoří soubor `.pacsave`. Když tato situace nastane, pacman zobrazí zprávu podobnou následující:

    warning: /etc/pam.d/usermod saved as /etc/pam.d/usermod.pacsave

Tyto soubory vyžadují ruční zásah uživatele a je dobrým zvykem po každém upgradu nebo odstranění balíčku tuto situaci nějak vyřešit. V opačném případě mohou nesprávné konfigurace vyústit ve špatnou funkci softwaru nebo jeho neschopnost se vůbec spustit.

## `backup` soubory balíčků

Soubor `PKGBUILD` balíčkům určuje, které soubory mají být při upgradu nebo odstranění dotyčného balíčku zachovány nebo zálohovány. Například `PKGBUILD` pro `pulseaudio` obsahuje následující řádek:

    backup=('etc/pulse/client.conf' 'etc/pulse/daemon.conf' 'etc/pulse/default.pa')

## Popis druhů

Různé druhy *.pac* souborů.

### .pacnew

Pro každý `backup` soubor, který je v právě upgradovaném balíčku, pacman vzájemně porovnává tři kontrolní součty MD5 generované z obsahu daného souboru: jeden součet pro verzi nainstalovanou původním balíčkem, jeden pro verzi momentálně sídlící v souborovém systému a jeden pro verzi z nového balíčku. Pokud současná verze ze souborového systému byla v minulosti ručně upravena, pacman nedokáže sloučit tyto změny s novou verzí souboru. Proto při upgradu namísto přepisování změněného souboru pacman uloží novou verzi s příponou `.pacnew` a ponechá stávající změnenou verzi nedotčenou.

Pokud zajdeme více do detailů, toto trojcestné srovnání součtů MD5 může skončit s jedním z následujících výsledků:

původní = X, současný = X, nový = X
  Všechny tři verze souboru mají shodný obsah, přepsání tedy není problém. Přepsat současnou verzi novou verzí a neoznamovat nic uživateli. (I když je obsah souboru shodný, toto přepsání zaktualizuje v souborovém systému informace ohledně času instalace, změny a přístupu k souboru. Zajistí též jakoukoliv změnu přístupových práv souboru.)

původní = X, současný = X, nový = Y
  Obsah současné verze je shodný s původní, ale nová verze je rozdílná. Jelikož uživatel v minulosti neupravil současnou verzi a nová verze může obsahovat vylepšení nebo opravy, přepsat současnou verzi novou verzí a neoznamovat nic uživateli. Toto je jediné automatické slučování změn, které pacman dokáže vykonávat.

původní = X, současný = Y, nový = X
  Původní balíček a nový balíček oba obsahují shodnou verzi souboru, ale verze momentálně sídlící v souborovém systému byla změněna. Ponechat současnou verzi, jak je, a zahodit novou verzi bez oznámení uživateli.

původní = X, současný = Y, nový = Y
  Nová verze je shodná se současnou. Přepsat současnou verzi novou verzí a neoznamovat nic uživateli. (I když je obsah souboru shodný, toto přepsání zaktualizuje v souborovém systému informace ohledně času instalace, změny a přístupu k souboru. Zajistí též jakoukoliv změnu přístupových práv souboru.)

původní = X, současný = Y, nový = Z
  Všechny tři verze jsou rozdílné. Ponechat současnou verzi, nainstalovat novou verzi s příponou `.pacnew` a varovat uživatele ohledně nové verze. Od uživatele se očekává, že ručně sloučí jakékoliv nutné změny z nové verze do té současné.

### .pacsave

Pokud uživatel změnil některý ze souborů jmenovaných v `backup`, pak bude k tomuto souboru přidána přípona `.pacsave` a zůstane v souborovém systému i poté, co bude odstraněn zbytek balíčku.

Note: Použití volby `-n` spolu s `pacman -R` způsobí kompletní odstranění všech souborů v zadaném balíčku. Žádné `.pacsave` soubory tedy vytvořeny nebudou.

### .pacorig

Když je při instalaci balíčku spatřen soubor (obvykle nějaká konfigurace v `/etc`), který nepatří žádnému nainstalovanému balíčku, ale je vypsán v poli `backup` pro momentálně zpracovávaný balíček, bude uložen s příponou `.pacorig` a nahrazen verzí z balíčku. To se obvykle stává, když je konfigurační soubor přesunut z jednoho balíčku do jiného. Pokud takový soubor není součástí pole `backup`, pacman oznámí konflikt souborů a ukončí svoji činnost.

Note: Jelikož `.pacorig` soubory vznikávají za zvláštních okolností, není pro jejich zpracování žádný jednotný postup. Pokud se o tomto případu ví, obvykle naleznete řešení tohoto konfliktu na Arch News.

## Lokalizace *.pac* souborů

Arch Linux pro `.pacnew` soubory neposkytuje žádné oficiální nástroje. Budete je muset řešit sami; několik pomocných nástrojů je předvedeno v následující sekci. Pro ruční řešení budete nejprve muset tyto soubory nalézt. Při upgradu nebo odstraňování velkého počtu balíčků mohou být *.pac* soubory snadno přehlédnuty. Abyste zjistili, zda byly jakékoliv *.pac* vytvořeny:

Pro jednoduché hledání v místě, kde je uložena většina globálních konfigurací:

    find /etc -name "*.pac*"

nebo na celém disku:

    find / -name "*.pac*"

Případně pro jejich vyhledání použijte logy z pacmana:

    egrep "pac(new|orig|save)" /var/log/pacman.log

Poznámka: z logu přímo nezjistíte, které z těchto souborů jsou momentálně ještě v souborovém systému a které již byly smazány.

## Nástroje pro soubory .pacnew

Jakmile máte všechny existující `.pacnew` soubory lokalizovány, můžete je vyřešit ručně pomocí běžných nástrojů pro slučování, např. vimdiff (anglicky)[broken link: invalid section], ediff (součást emacs (anglicky)), meld (grafický nástroj pro Gnome) nebo Kompare (grafický nástroj pro KDE). Poté `.pacnew` soubory smažte.

V repozitáři community a uživatelském repozitáři (AUR) je dostupných několik utilit, které poskytují různou úroveň automatizace těchto úkolů:

- Dotpac - Základní interaktivní skript s textovým rozhraním založeným na ncurses a užitečnou nápovědou. Žádné pomůcky pro ruční ani automatické slučování.
- `pacdiff` - Velmi minimální a nezdokumentovaný konzolový skript. Je součástí balíčku pacman v repozitáři community.
- pacdiffviewer - Plnohodnotný interaktivní konzolový skript se schopností automatického slučování. Je součástí balíčku yaourt.
- diffpacAUR[broken link: archived in aur-mirror] - Samostatná náhražka za pacdiffviewer.

## Zdroje

- Fóra Arch Linuxu: Dealing With .pacnew Files (anglicky)

Category:

- Package management (Česky)

Hidden categories:

- Pages with broken section links
- Pages with broken package links