Dub 18

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

1 comment

  1. Firefox 63.0 GNU/Linux x64

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

Napsat komentář

Your email address will not be published.

%d blogerům se to líbí: