Konfliktné súbory

“Failed to commit transaction (conflicting files)” error je chyba, ktorá sa objavuje pri dvoch konfliktných súboroch. Existujú tri spôsoby, ako problém vyriešiť. Prvým je premenovanie, druhým odstránenie prepojenia a tretím je prepísanie. To sa ale odporúča iba pri avizovaných manuálnych intervenciách.

Samotná chybová hláška nie je významná a nejako neovplyvňuje celkový systém. Ide len o kozmetickú chybu, ktorú odstrániť nezaberie veľa času a námahy. Riešenie si opíšeme pri nemožnosti aktualizácie ovládača pre grafickú kartu Nvidia.

Chybová hláška vyzerá asi takto:

error: failed to commit transaction (conflicting files)
libglvnd: /usr/lib/libGL.so.1 exists in filesystem
lib32-libglvnd: /usr/lib32/libGL.so.1 exists in filesystem
Errors occurred, no packages were upgraded.

 

Najskôr si zistíme, komu patria dané súbory:

pacman -Qo /usr/lib/libGL.so.1
pacman -Qo /usr/lib32/libGL.so.1

 

Vlastníkom je:

pacman -Qo /usr/lib/libGL.so.1
/usr/lib/libGL.so.1 owns nvidia-libgl 361.28-5

pacman -Qo /usr/lib32/libGL.so.1
/usr/lib32/libGL.so.1 owns lib32-nvidia-libgl 361.28-4

 

I keď pri nevydarenej aktualizácii sa zdá, že nikomu nepatria:

pacman -Qo /usr/lib/libGL.so.1
error: No package owns /usr/lib/libGL.so.1

pacman -Qo /usr/lib32/libGL.so.1
error: No package owns /usr/lib32/libGL.so.1

 

Prvý spôsob je premenovanie oboch súborov napríklad na libGL.so.1_old:

sudo mv /usr/lib/libGL.so.1 /usr/lib/libGL.so.1_old
sudo mv /usr/lib32/libGL.so.1 /usr/lib32/libGL.so.1_old

Po premenovaní môžme pokračovať v aktualizácii. Po nej sa premenovaný súbor môže odstrániť:

sudo rm /usr/lib/libGL.so.1 /usr/lib/libGL.so.1_old
sudo rm /usr/lib32/libGL.so.1 /usr/lib32/libGL.so.1_old

 

Druhým spôsobom je odstránenie prepojenia:

sudo rm /usr/lib/libGL.so.1
sudo rm /usr/lib32/libGL.so.1

sudo unlink /usr/lib/libGL.so.1
sudo unlink /usr/lib32/libGL.so.1

unlink je oklieštený alias pre rm. Nedokáže odstrániť zložky, iba súbory, nepodporuje rekurziu.

Po odstránení sa môže pokračovať v aktualizácii.

Z vlastnej skúsenosti odporúčam najskôr spustiť terminál a už ho nezatvoriť, pretože niektoré majú libGL.so.1 vo svojich závislostiach:

lxterminal: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

A ak sa vám to náhodou stane, tak xterm to istí. 🙂

 

Tretím spôsobom je prepísanie prepojenia:

Ak sme si už v úvode spomenuli, toto riešenie sa odporúča iba pri avizovaných manuálnych intervenciách. Tie sa dajú zistiť na hlavných stránkach distribúcie Arch Linux. Prepísanie sa vykonáva so samotnou aktualizáciou pomocou parametra:

--overwrite

sudo pacman -Suy --overwrite usr/lib/libGL.so.1

Štítky , , , .Záložka pro permanentní odkaz.

Autor: lombardo1981

Ja som proste ja. Baba zamilovaná do Archu, kyberpunku, metalu, spevu a Slovenských čuvačov.

Jedna reakce na Konfliktné súbory

  1. lombardo1981 říká:
    Firefox 63.0 GNU/Linux x64

    Článok som upravila. Pridala som možnosť s prepísaním.

Napsat komentář: lombardo1981 Zrušit odpověď na komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..