I repository di Ubuntu offrono ormai da tempo una completa gamma di driver per schede video nVidia, sia open-source che proprietari. La comodità data dalla presenza di tali software è decisamente elevata in quanto limita lo sforzo dell’utente ad un semplice apt-get che installi tutto il necessario. Capita spesso però che dopo una rimozione dei driver in questione non sia più possibile la reinstallazione.
Si parla dei pacchetti nvidia-glx-legacy e nvidia-glx-new con relative dipendenze. Le indicazioni proposte in questa guida prendono in considerazione i primi driver, ma il procedimento per la risoluzione del problema è identico per entrambi. Il problema in questione è quello riscontrato da molti utenti che, durante la reinstallazione dei pacchetti, ritrovano un output simile al seguente nel loro terminale:
Reading package lists… DoneBuilding dependency tree      Reading state information… DoneSuggested packages: nvidia-legacy-kernel-source nvidia-settingsThe following NEW packages will be installed: nvidia-glx-legacy0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.Need to get 3068kB/3068kB of archives.
Unpacking nvidia-glx-legacy (from …/nvidia-glx-legacy_71.86.01+2.6.24.2-2.8_i386.deb) …dpkg-divert: `diversion of /usr/lib/libGL.so.1 to /usr/lib/nvidia/libGL.so.1.xlibmesa by nvidia-glx-legacy’ clashes with `diversion of /usr/lib/libGL.so.1 to /usr/lib/nvidia/libGL.so.1.xlibmesa by nvidia-glx-new’dpkg: error processing /var/cache/apt/archives/nvidia-glx-legacy_71.86.01+2.6.24.2-2.8_i386.deb (-unpack): subprocess pre-installation script returned error exit status 2Errors were encountered while processing: /var/cache/apt/archives/nvidia-glx-legacy_71.86.01+2.6.24.2-2.8_i386debE: Sub-process /usr/bin/dpkg returned an error code (1)
L’errore è da ricercare nelle stringhe:
dpkg-divert: `diversion of /usr/lib/libGL.so.1 to /usr/lib/nvidia/libGL.so.1.xlibmesa by nvidia-glx-legacy’ clashes with `diversion of /usr/lib/libGL.so.1 to /usr/lib/nvidia/libGL.so.1.xlibmesa by nvidia-glx-new’
In pratica il sistema rileva dei conflitti a causa di libGL, ma è tutto facilmente risolvibile editando il file diversions in /var/lib/dpkg.
Cosa evitare
Non bisogna agire d’istinto. �? probabile che l’utente medio possa tentare l’eliminazione di libGL per evitare il conflitto, ma non è questa la soluzione e decidere di prender questa strada porterebbe a conseguenze alquanto sconvenienti, verrebbero infatti disinstallati tutti i seguenti pacchetti:
- alacarte
- ubufox
- apturl
- gnome-compiz-manager
- compizcompiz-gnome
- compiz-plugins
- compiz-fusion-plugins-main
- compiz-fusion-plugins-extra
- compiz-core
- f-spot
- fast-user-switch-applet
- libglut3
- freeglut3
- gdebi
- gdm
- update-notifier
- update-manager
- gnome-app-install
- software-properties-gtk
- network-manager-gnome
- gnome-netstatus-applet
- gksu
- gnome-applets
- nautilus-cd-burner
- nautilus
- gnome-terminal
- gnome-session
- gnome-panel
- gnome-control-center
- gnome-screensaver
- hwdb-client-gnome
- libgksu1.2-1
- serpentine
- python-gnome2-extras
- libgksu2-0
- libgksuui1.0-1
- libglu1-mesa-dev
- libgl1-mesa-dev
- libgl1-mesa-dri
- rss-glx
- xscreensaver-gl
- ttf-thai-tlwg
Rimarreste senza nemmeno l’interfaccia grafica; in caso abbiate inconsciamente già tentato questa opzione, ecco il comando da lanciare per reinstallare il tutto:
sudo apt-get install alacarte ubufox apturl gnome-compiz-manager compizcompiz-gnome compiz-plugins compiz-fusion-plugins-main compiz-fusion-plugins-extra compiz-core f-spot fast-user-switch-applet libglut3 freeglut3 gdebi gdm update-notifier update-manager gnome-app-install software-properties-gtk network-manager-gnome gnome-netstatus-applet gksu gnome-applets nautilus-cd-burner nautilus gnome-terminal gnome-session gnome-panel gnome-control-center gnome-screensaver hwdb-client-gnome libgksu1.2-1 serpentine python-gnome2-extras libgksu2-0 libgksuui1.0-1 libglu1-mesa-dev libgl1-mesa-dev libgl1-mesa-dri rss-glx xscreensaver-gl ttf-thai-tlwg
Soluzione
Riuscire ad installare i driver nVidia una volta incontrato il problema sopra riportato è piu facile di quanto possa sembrare, si tratta semplicemente di editare il file diversions in /var/lib/dpkg/, aprite dunque il terminale e lanciate il comando che segue:
sudo nano /var/lib/dpkg/diversions
Ovviamente sostituendo eventualmente nano con il vostro editor di testo preferito. Il testo del file dovrebbe essere simile a questo:
/bin/sh /bin/sh.distrib dash /usr/share/man/man1/sh.1.gz /usr/share/man/man1/sh.distrib.1.gz dash /usr/lib/xorg/modules/libGLcore.so /usr/lib/nvidia/libGLcore.so.xlibmesa nvidia-glx-new /usr/lib/xorg/modules/libglx.so /usr/lib/nvidia/libglx.so.xlibmesa nvidia-glx-new /usr/lib/xorg/modules/libwfb.so /usr/lib/nvidia/libwfb.so.xserver-xorg-core nvidia-glx-new /usr/lib/libGL.so.1 /usr/lib/nvidia/libGL.so.1.xlibmesa nvidia-glx-legacy /usr/lib/libGL.so.1.2 /usr/lib/nvidia/libGL.so.1.2.xlibmesa nvidia-glx-legacy
A questo punto dovete eliminare tutte le stringhe relative ad nvidia, magari semplicemente facendole precedere da un cancelletto (#), nel nostro caso:
/bin/sh /bin/sh.distrib dash /usr/share/man/man1/sh.1.gz /usr/share/man/man1/sh.distrib.1.gz dash #/usr/lib/xorg/modules/libGLcore.so #/usr/lib/nvidia/libGLcore.so.xlibmesa #nvidia-glx-new #/usr/lib/xorg/modules/libglx.so #/usr/lib/nvidia/libglx.so.xlibmesa #nvidia-glx-new #/usr/lib/xorg/modules/libwfb.so #/usr/lib/nvidia/libwfb.so.xserver-xorg-core #nvidia-glx-new #/usr/lib/libGL.so.1 #/usr/lib/nvidia/libGL.so.1.xlibmesa #nvidia-glx-legacy #/usr/lib/libGL.so.1.2 #/usr/lib/nvidia/libGL.so.1.2.xlibmesa
Salvate e chiudete l’editor, quindi tornate a reinstallare i driver tramite apt-get o Synaptic. A questo punto non dovreste riscontrare gli stessi errori iniziali.
di Simone Cavalcanti - TuxJournal.net
GNU/Linux Experience