Portál AbcLinuxu, 10. května 2025 22:56
Couldn't open libGL.so.1: cannot open shared object file: No such file or directory.Syslog taky píše:
wdm: Server for display :0 can't be started, session disabled.Při pokusu spustit grafický server ručně dostanu oznámení
xinit: unable to connect to X server: Connection refusedDotyčný soubor libGL.so.1 v souborovém systému mám (jednou reálně, čtyřikrát jako symbolický odkaz na jiné soubory), nicméně nějaká část grafického systému (nevím která) jej hledá na umístění, kde se nenachází. S tímto si už dál nevím rady, tak prosím o pomoc. Bude mi stačit jakékoli zprovoznění X serveru, i bez 3D grafiky. Děkuji. P.S. Pro jistotu, i když nevím, zda to na něco má vliv: mám kombinovanou laptopovou grafiku Intel-Nvidia.
Daj;
find -name "*GL" /lib
Zlinkuj presne na taky nazov, aky hlada chybajucu kniznifu na realnu.
Chyba je v logoch X servera.Jasně, už jsem to psal v otázce. Nicméně pravda je, že pokud budu vyčerpávající, je tam přesně
Failed to load /usr/lib/xorg/modules/extensions/libglx.so: libGL.so.1: cannot open shared object file: No such file or directoryTak jsem tedy zkusil
ldd /usr/lib/xorg/modules/extensions/libglx.soVýsledek byl:
linux-vdso.so.1 (0x00007fffff5d3000) libGL.so.1 => not found libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f505c8da000) libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007f505c6b1000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f505c3ad000) libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f505c198000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f505bf79000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f505bbdc000) /lib64/ld-linux-x86-64.so.2 (0x000055a5b42c0000) libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007f505b9d7000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f505b7cf000)Což mi nijak nepomohlo, jelikož že soubor libGL.so.1 chybí, vím už z logu X serveru i syslogu.
Ten problem som presne riesil.A ako si ho vyriešil?
Když jsem daný balík stáhl ručně a podíval se do jeho obsahu, uvedené soubory v něm nebyly ja ich tam vidim http://ftp.cz.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_13.0.6-1+b2_amd64.debTo je balíček pro stable. V balíčku pro testing a unstable (verze 17.2.4-1) ty soubory nejsou (ačkoli online databáze Debianu je tam stále uvádí - https://packages.debian.org/buster/amd64/libgl1-mesa-glx/filelist). Mají v tom zřejmě nepořádek.
libGL.so
. libGL.so
je knihovna, která slouží jen jako lepidlo mezi aplikací, která chce použít OpenGL a grafickým ovladačem. Vždycky ale musí v systému existovat, jinak by OpenGL vůbec nefungovalo. Tohle lepidlo je vždycky specifické pro konkrétní ovladač, mix libGL.so
z ovladače A s OpenGL implementací ovladače B se velmi pravděpodobně rozbije. To je problém, protože libGL.so
může být v systému jen jedna(*). Ovladače Intel na Linuxu používají OpenGL implementaci z Mesy, nVidia má svou vlastní a když ty ovladače nainstaluješ oboje, srazí se to. Komunitní hacky, které zpojízdňují Optimus na Linuxu to obchází tak, že nVidií ovladače nainstalují úplně jinam a pomocí LD_LIBRARY_PATH (myslím) podstrčí offloadované aplikaci nVidií verzi libGL.so
Tvoje řešení má značný potenciál se rozsypat zase při další aktualizaci ovladačů nVidie.
$ equery b libGL.so.1
* Searching for libGL.so.1 ...
media-libs/mesa-17.0.6 (/usr/lib32/libGL.so.1 -> libGL.so.1.2.0)
media-libs/mesa-17.0.6 (/usr/lib64/libGL.so.1 -> libGL.so.1.2.0)
You can use dpkg command to find out which package owns a file:
From man dpkg:
-S, --search filename-search-pattern...
Search for a filename from installed packages.
Example:
$ dpkg -S /bin/ls
coreutils: /bin/ls
You can either search with a full path or with just the filename.
If you wish to search for files not yet installed on your computer, you can use the Ubuntu Packages Search ...
Ako si instaloval ovladace?
Podla tohto? https://wiki.debian.org/NvidiaGraphicsDrivers
libgl1-mesa-glx
a libglx-mesa0
. Debian moc neznám takže nevím, zda to bude takhle stačit.
Jestli tomu rozumím, do stroje s Intel+NV grafikou jsi nainstaloval ovladače od nVidie instalačním skriptem, co jsi stáhl z webu nVidie?Ne, ovladače Nvidie jsou distribuční, což jsem ostatně napsal v otázce. Jak jsem také uvedl v reakci na odpověď výše, co v systému najdu ohledně libGL.so.1, souvisí s Nvidií. Přitom bych však ovladače Nvidia nemusel mít nainstalované a grafika by měla běžet i bez nich, aspoň myslím. Takže kdyby se nepodařilo najít jiné řešení, mohl bych zkusit odinstalovat ovladače Nvidia. Nicméně mě napadá ještě jedna otázka: na stránce Debianu je uvedeno, že balík libgl1-mesa-glx je "transitional dummy package, it can be safely removed", což by mělo znamenat, že slouží jen k zajištění instalace jiného balíčku, nicméně tamtéž je uveden seznam souborů, které instaluje do systému souborů, a mezi nimi jsou i /usr/lib/x86_64-linux-gnu/libGL.so.1 a /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0, které já nemám, ačkoli balík mám nainstalovaný. Tak nevím. Mimochodem, jak správně odinstaluju ovladače Nvidia, aby xserver běžel bez nich?
sudo apt-get --reinstall install libgl1-mesa-glx libgl1 libglx-mesa0
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.