Рішення проблеми установки і запуску додатків на Linux

reshenie problemy ustanovki i zapuska prilozhenijj na linux27 Рішення проблеми установки і запуску додатків на Linux

Хоча в репозиторіях сучасних дистрибутивів є величезна кількість готових бінарних пакетів додатків на будь-який смак, обов’язково знайдеться таке, встановити яке в систему інакше як зібравши з исходников не вдасться.

Нерідко запуск таких програм закінчується крахом і супроводжується повідомленнями про відсутність деяких бібліотек, хоча насправді такі бібліотеки є в системі. Зазвичай причина цього — розбіжність версії бібліотеки.

Зміст

  • Розбіжність версії бібліотеки
  • Конфлікти бібліотек
  • Проблеми доступу до пристроїв
  • Розбіжність версії бібліотеки

    Улюблений багатьма програвач Bomi, чия розробка останнім часом трохи забуксувала і не встигає за оновленнями використовуваних бібліотек, після встановлення з исходников може лаятися на відсутність бібліотеки libass.so.5:

    1 <span class=”pln”>bomi</span><span class=”каламбур”>:</span><span class=”pln”> error </span><span class=”kwd”>while</span><span class=”pln”> loading shared libraries</span><span class=”каламбур”>:</span><span class=”pln”> libass</span><span class=”каламбур”>.</span><span class=”pln”>so</span><span class=”каламбур”>.</span><span class=”lit”>5</span><span class=”каламбур”>:</span><span class=”pln”> cannot open shared </span><span class=”kwd”>object</span><span class=”pln”> file</span><span class=”каламбур”>:</span> <span class=”typ”>Ні</span><span class=”pln”> such file </span><span class=”kwd”>or</span><span class=”pln”> directory</span>

    Перша думка: встановити цю бібліотеку. Встановлюємо і отримуємо те ж повідомлення, тому що версії бібліотек не збігаються: у нас 9.0.1, а потрібна 5.

    В цьому випадку можна спробувати обдурити Bomi, підсунувши йому нашу версію бібліотеки під виглядом потрібної йому. Зробити це можна за допомогою символічного посилання:

    12 <span class=”pln”>$ cd </span><span class=”каламбур”>/</span><span class=”pln”>usr</span><span class=”каламбур”>/</span><span class=”pln”>lib$ sudo ln </span><span class=”каламбур”>-</span><span class=”pln”>s libass</span><span class=”каламбур”>.</span><span class=”pln”>so</span><span class=”каламбур”>.</span><span class=”lit”>9.0</span><span class=”каламбур”>.</span><span class=”lit”>1</span><span class=”pln”> libass</span><span class=”каламбур”>.</span><span class=”pln”>so</span><span class=”каламбур”>.</span><span class=”lit”>5</span>

    reshenie problemy ustanovki i zapuska prilozhenijj na linux28 Рішення проблеми установки і запуску додатків на LinuxПроблема установки і запуску додатків на Linux. Виправлення відсутності бібліотек в Bomi
    Виправлення відсутності бібліотек в Bomi

    Втратою бібліотек грішать навіть програми, які містяться в офіційних репозиторіях. Так що знати, як це виправити, не завадить і законослухняним користувачам.

    Конфлікти бібліотек

    Протилежна ситуація складається, коли пакетний менеджер не лається на відсутність, а на присутність у системі тієї ж бібліотеки, що поставляється з встановлюваним пакетом.

    Причиною може бути встановлене інше додаток, вже надала дану бібліотеку. Так часто трапляється, коли пакет встановлений за допомогою інструменту, відмінного від штатного пакетного менеджера, наприклад питоновского pip.

    Проблеми можуть бути і між пакунками, встановленими із стандартного менеджера пакетів. Наприклад, установка nvidia-340xx-utils в Manjaro Linux до внесення розробниками виправлень могла завершитися цілою низкою повідомлень про наявність містяться в ньому бібліотек у системі, через непорозуміння встановлених у систему пакетом libglvnd:

    12345678 <span class=”pln”>nvidia</span><span class=”каламбур”>-</span><span class=”lit”>340xx</span><span class=”каламбур”>-</span><span class=”pln”>utils</span><span class=”каламбур”>:</span> <span class=”str”>’/usr/lib/nvidia/libEGL.so'</span> <span class=”каламбур”></span> <span class=”каламбур”></span> <span class=”каламбур”>файлової</span> <span class=”каламбур”>системі</span><span class=”pln”>nvidia</span><span class=”каламбур”>-</span><span class=”lit”>340xx</span><span class=”каламбур”>-</span><span class=”pln”>utils</span><span class=”каламбур”>:</span> <span class=”str”>’/usr/lib/nvidia/libEGL.so.1′</span> <span class=”каламбур”></span> <span class=”каламбур”></span> <span class=”каламбур”>файлової</span> <span class=”каламбур”>системі</span><span class=”pln”>nvidia</span><span class=”каламбур”>-</span><span class=”lit”>340xx</span><span class=”каламбур”>-</span><span class=”pln”>utils</span><span class=”каламбур”>:</span> <span class=”str”>’/usr/lib/nvidia/libGL.so'</span> <span class=”каламбур”></span> <span class=”каламбур”></span> <span class=”каламбур”>файлової</span> <span class=”каламбур”>системі</span><span class=”pln”>nvidia</span><span class=”каламбур”>-</span><span class=”lit”>340xx</span><span class=”каламбур”>-</span><span class=”pln”>utils</span><span class=”каламбур”>:</span> <span class=”str”>’/usr/lib/nvidia/libGL.so.1′</span> <span class=”каламбур”></span> <span class=”каламбур”></span> <span class=”каламбур”>файлової</span> <span class=”каламбур”>системі</span><span class=”pln”>nvidia</span><span class=”каламбур”>-</span><span class=”lit”>340xx</span><span class=”каламбур”>-</span><span class=”pln”>utils</span><span class=”каламбур”>:</span> <span class=”str”>’/usr/lib/nvidia/libGLESv1_CM.so'</span> <span class=”каламбур”></span> <span class=”каламбур”></span> <span class=”каламбур”>файлової</span> <span class=”каламбур”>системі</span><span class=”pln”>nvidia</span><span class=”каламбур”>-</span><span class=”lit”>340xx</span><span class=”каламбур”>-</span><span class=”pln”>utils</span><span class=”каламбур”>:</span> <span class=”str”>’/usr/lib/nvidia/libGLESv1_CM.so.1′</span> <span class=”каламбур”></span> <span class=”каламбур”></span> <span class=”каламбур”>файлової</span> <span class=”каламбур”>системі</span><span class=”pln”>nvidia</span><span class=”каламбур”>-</span><span class=”lit”>340xx</span><span class=”каламбур”>-</span><span class=”pln”>utils</span><span class=”каламбур”>:</span> <span class=”str”>’/usr/lib/nvidia/libGLESv2.so'</span> <span class=”каламбур”></span> <span class=”каламбур”></span> <span class=”каламбур”>файлової</span> <span class=”каламбур”>системі</span><span class=”pln”>nvidia</span><span class=”каламбур”>-</span><span class=”lit”>340xx</span><span class=”каламбур”>-</span><span class=”pln”>utils</span><span class=”каламбур”>:</span> <span class=”str”>’/usr/lib/nvidia/libGLESv2.so.2′</span> <span class=”каламбур”></span> <span class=”каламбур”></span> <span class=”каламбур”>файлової</span> <span class=”каламбур”>системі</span>

    У подібних випадках спочатку доведеться деінсталювати пакет, що викликав помилку, а потім встановити необхідний.

    Іноді, наприклад, для того ж pip або якщо додаток взагалі було встановлено способом configure && make && make install, потрібно вручну видаляти бібліотеки, що викликали конфлікт, не деинсталлируя сам додаток, їх породило.

    Проблеми доступу до пристроїв

    Прикро виявити, як встановлене тобою додаток, що працює з периферійними пристроями, раптом «радує» повідомленням, що немає прав на доступ до цих пристроїв, і успішно запускається тільки з правами адміністратора. Наприклад, якби подібне сталося з tvtime щодо відеокарти, користувач зіткнувся б з таким повідомленням в консолі:

    1 <span class=”pln”>videoinput</span><span class=”каламбур”>:</span> <span class=”typ”>Cannot</span><span class=”pln”> open capture device </span><span class=”каламбур”>/</span><span class=”pln”>dev</span><span class=”каламбур”>/</span><span class=”pln”>video0</span><span class=”каламбур”>:</span> <span class=”typ”>Permission</span><span class=”pln”> denied</span>

    Насамперед слід перевірити групи доступу до пристрою:

    1 <span class=”pln”>$ ls </span><span class=”каламбур”>-</span><span class=”pln”>l </span><span class=”каламбур”>/</span><span class=”pln”>dev</span><span class=”каламбур”>/</span><span class=”pln”>video0</span>

    Очікувано ти виявляєш серед них root і video, але не виявляєш у останньої себе (user), виконавши перевірку командою

    1 <span class=”pln”>$ groups</span>

    Природне рішення — додати користувача (user) в групу (video) будь-яку з доступних команд:

    123 <span class=”pln”>$ sudo usermod </span><span class=”каламбур”>-</span><span class=”pln”>a </span><span class=”каламбур”>-</span><span class=”pln”>G video user:$ sudo useradd </span><span class=”каламбур”>-</span><span class=”pln”>a </span><span class=”каламбур”>-</span><span class=”pln”>G video user:$ sudo gpasswd </span><span class=”каламбур”>-</span><span class=”pln”>a user video</span>

    По завершенні команди потрібно перезайти в систему.

    Сподобалася стаття? Поділитися з друзями:
    Всезнайко - Корисні поради