Въпреки че в хранилищата на съвременните дистрибуции има огромен брой готови двоични пакети от приложения за всеки вкус, със сигурност ще има такъв, който не може да бъде инсталиран в системата по друг начин освен чрез компилиране от източниците.
Често стартирането на такива програми завършва със срив и е придружено от съобщения за липсата на някои библиотеки, въпреки че всъщност такива библиотеки са в системата. Това обикновено се причинява от конфликтна версия на библиотеката.
Съдържание
Несъответствие във версията на библиотеката
Любимият от мнозина плейър Bomi, чието развитие напоследък изостава малко и не е в крак с актуализациите на използваните библиотеки, след инсталиране от източниците може да се оплаче от липсата на библиотеката libass.so.5:
1 | bomi: грешка при зареждане на споделени библиотеки: libass.so.5: не може да се отвори споделен обектен файл: Няма такъв файл или директория |
Първа мисъл: инсталирайте тази библиотека. Инсталираме и получаваме същото съобщение, защото версиите на библиотеките не съвпадат: имаме 9.0.1, но ни трябват 5.
В този случай можете да опитате да измамите Боми, като му дадете нашата версия на библиотеката под прикритието на тази, от която се нуждае. Можете да направите това с помощта на символна връзка:
12 | $ cd /usr/lib$ sudo ln -s libass.so.9.0.1 libass.so.5 |
Дори програмите, съдържащи се в официални хранилища, грешат, като губят библиотеки. Така че знанието как да го поправите също няма да навреди на спазващите закона потребители.
Конфликти на библиотеки
Обратната ситуациясе компилира, когато мениджърът на пакети не ругае липсата, а присъствието в системата на същата библиотека, която идва с инсталирания пакет.
Причината може да е, че е инсталирано друго приложение, което вече е предоставило тази библиотека. Това често се случва, когато пакет се инсталира с помощта на инструмент, различен от стандартния мениджър на пакети, като pip на Python.
Може също да има проблеми между пакетите, инсталирани от стандартния мениджър на пакети. Например инсталирането на nvidia-340xx-utils в Manjaro Linux, преди разработчиците да направят кръпки, може да завърши с цяла поредица от съобщения за присъствието на съдържащите се в него библиотеки в системата, поради недоразумение с пакета libglvnd, инсталиран на система:
12345678 | nvidia-340xx-utils: '/usr/lib/nvidia/libEGL.so' файлова системаnvidia-340xx-utils: '/usr/lib/nvidia/libEGL.so.1' файлова системаnvidia-340xx-utils: ' /usr /lib/nvidia/libGL.so' файлова системаnvidia-340xx-utils: '/usr/lib/nvidia/libGL.so.1' файлова системаnvidia-340xx-utils: '/usr/lib/nvidia/libGLESv1_CM.so ' файлова системаnvidia-340xx -utils: '/usr/lib/nvidia/libGLESv1_CM.so.1' файлова системаnvidia-340xx-utils: '/usr/lib/nvidia/libGLESv2.so' файлова системаnvidia-340xx-utils: '/ usr/lib/nvidia/libGLESv2 .so.2' файлова система |
В такива случаи първо ще трябва да деинсталирате пакета, причинил грешката, и след това да инсталирате необходимия.
Понякога, например, за същия pip или ако приложението изобщо е инсталирано с помощта на configure && направи && make install, трябва ръчно да премахнете библиотеките, които са причинили конфликта, без да деинсталирате самото приложение, което ги е генерирало.
Проблеми с достъпа до устройства
Жалко е да разберете как сте инсталирали приложението, което работи спериферни устройства, внезапно "зарадва" със съобщение, че няма права за достъп до тези устройства и стартира успешно само с администраторски права. Например, ако нещо подобно се случи с tvtime по отношение на видеокартата, потребителят ще срещне следното съобщение в конзолата:
1 | видеовход: Не може да се отвори устройство за заснемане /dev/video0: Разрешението е отказано |
Първо трябва да проверите групите за достъп до устройството:
1 | $ ls -l /dev/video0 |
Както се очаква, вие откривате root и video сред тях, но не откривате себе си (потребител) в последния, след като сте извършили проверката на командата
1 | $ групи |
Естествено решение е да добавите потребителя (потребителя) към групата (видео), като използвате някоя от наличните команди:
123 | $ sudo usermod -a -G видео потребител:$ sudo useradd -a -G видео потребител:$ sudo gpasswd -a потребителско видео |
След като изпълните командата, трябва да влезете отново.