Rezolvarea conflictelor de fișiere între pachete Mesa (dpkg)

Rezolvarea conflictelor de fișiere între pachete Mesa (dpkg)

Acest articol descrie cum se rezolvă eroarea de conflict de fișiere apărută la actualizarea driverelor Mesa prin PPA-ul kisak-mesa pe Ubuntu/Linux Mint.


Descrierea problemei

La rularea sudo apt install -f sau sudo apt upgrade, dpkg poate refuza instalarea cu o eroare de forma:

dpkg: eroare la procesarea arhivei /var/cache/apt/archives/mesa-libgallium_26.0.0~kisak2~n_i386.deb (--unpack):
 se încearcă suprascrierea lui „/usr/lib/i386-linux-gnu/dri/nouveau_drv_video.so",
 care este și în pachetul mesa-va-drivers:i386 25.3.5~kisak1~n
E: Sub-process /usr/bin/dpkg returned an error code (1)

Cauza

La trecerea de la Mesa 25.x la 26.x, fișierele au fost reorganizate între pachete. Concret, fișierul nouveau_drv_video.so a fost mutat din pachetul mesa-va-drivers în mesa-libgallium. DPKG nu permite suprascrierea unui fișier care aparține unui pachet instalat, fără ca acel pachet să fie eliminat în prealabil.

Soluție

Pasul 1: Încearcă repararea automată

sudo apt install -f

Dacă APT poate rezolva singur conflictul (de exemplu dacă programează eliminarea mesa-va-drivers:i386 înainte de instalare), problema se rezolvă aici. Dacă eroarea persistă, continuă cu pașii următori.

Pasul 2: Elimină forțat pachetele conflictuale

Pachetul va-driver-all:i386 depinde de mesa-va-drivers:i386, deci ambele trebuie eliminate împreună:

sudo dpkg --remove --force-all mesa-va-drivers:i386 va-driver-all:i386
Atenție: Opțiunea --force-all ignoră dependențele. Este sigură în acest context deoarece APT va reinstala pachetele necesare în pasul următor.

Pasul 3: Lasă APT să reinstaleze corect

sudo apt install -f

APT va instala acum Mesa 26.x fără conflicte, iar va-driver-all va fi reinstalat automat dacă este necesar.

Pasul 4: Curăță pachetele orfane

sudo apt autoremove

Întrebare frecventă

De ce nu funcționează --force-remove-reinstreq singur?

sudo dpkg --remove --force-remove-reinstreq mesa-va-drivers:i386
# Eroare: va-driver-all:i386 depinde de mesa-va-drivers.

Opțiunea --force-remove-reinstreq ignoră doar starea internă de reinstalare necesară (flag-ul reinst-required din baza de date dpkg), dar nu ignoră dependențele altor pachete instalate. De aceea este nevoie fie de --force-all, fie de eliminarea prealabilă a pachetului dependent.

Verificare finală

sudo apt update && sudo apt upgrade

Nu ar trebui să mai existe pachete incomplete (9 instalat(e) sau eliminat(e) incomplet) sau erori de conflict.


Vezi și