Cuprins

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