lørdag 15. oktober 2011

Reparere manglende programfiler i Debian/Ubuntu

Etter å ha testet ut skjermkortdriver fra ATI ønsket jeg å avinstallere denne å gå tilbake til den fri driveren som fungerer litt bedre på noen områder.
Dessverre gikk det ikke helt rett for seg og noen filer manglet etterpå slik at 3D grafikk sluttet å fungere.
Se hva som skjer når jeg forsøker å starte "glxgear".

$ glxgears
[..] libGL.so.1: cannot open shared object file [..]

Som vi ser her er glxgear programmet avhengig av en bibliotekfil som heter libGL.so.1.

$ ldd `which glxgears` | grep libGL
[..] libGL.so.1 => not found [..]

Kommandoen dpkg -S "filnavn" finner hvilken pakke bibliotekfilen ligger i.

$ dpkg -S libGL.so.1
libgl1-mesa-glx: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2
libgl1-mesa-glx: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1

Pakken vi ser etter heter libgl1-mesa-glx.

Hos meg var det ingen mappe som het "mesa" under /usr/lib/x86_64-linux-gnu/. Bibliotektfilen var blitt borte rett og slett. Likevel viser følgende kommando at pakken er installert.

$ dpkg -l libgl1-mesa-glx
[..] ii  libgl1-mesa-glx [..]

Løsningen på problemet var derfor å installere "libgl1-mesa-glx" på nytt, nå fungerer glxgears igjen.

$ sudo apt-get install --reinstall libgl1-mesa-glx

Det som er verdt å merke seg med kommandoen over er at man kan reinstallere ødelagte pakker enkeltvis uten å trekke inn alle avhengighetene. Det står mer informasjon om temaet på følgende lenke.

http://www.debian-administration.org/articles/176

Det var enklere å ordne opp i dette enn hva jeg trodde. :p