Чрез Patchelf при определени условия може да се промени пътят към споделени, (shared libraries) ,от които зависи изпълним bin файл в дадена Linux система.Те са белязани с разширение (.so), последвано от версия на библиотеката.Ако липсват определени такива, може да се поставят в папка, след което да се посочи път към тях. Понякога това е за предпочитене пред задаване, манипулиране на custom path във файла /home/*/.bash_profile или /home/*/.profile, както е именуван там. Променливите на средата environment variables се дефинират в профила на потребителската директория или /etc/environment.
Преди известно време ползвах програмата,за да събера работеща версия на vlc.appImage за CentOS 6.0 (след чиста инсталация). Послужих си с 📎️ bsdtar за разархивиране на appImage файла... или например, изпълнение в терминал от директория в която се намира той. След това проверка кои зависимости отсъстват при unpacking-а. Десен бутон върху директорията съдържаща изпълнимия vlc bin (open in terminal)
./vlc.appImage --appimage-extract
[nick@localhost bin]$ ldd vlc
linux-vdso.so.1 => (0x00007fffef3ff000)
libvlc.so.5 => not found
libvlccore.so.8 => not found
librt.so.1 => /lib64/librt.so.1 (0x00000030ecc00000)
libm.so.6 => /lib64/libm.so.6 (0x00000030ec800000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000030ec400000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000030ebc00000)
libc.so.6 => /lib64/libc.so.6 (0x00000030ec000000)
/lib64/ld-linux-x86-64.so.2 (0x00000030eb800000)
Вижда се, че ldd отпечатва информация за липсващите libvlc.so.5 и libvlccore.so.8. При опит за стартиране на софтуера в терминален емулатор би се появило съобщение с подобно предупреждение "...missing shared libraries"...Конкретно в този случай помага инструмент като patchelf, който чрез rpath "показва пътя" към тези библиотеки, като кодира нови стойности в хедъра на изпълнимия файл.На 64-битови Linux системи интерпретаторът трябва да бъде /lib64/ld-linux-x86-64.so.2. 📎️ ELF binaries. Синтаксиса не се различава от Linux логиката в терминала.
Където, /home/nick/app/usr/lib е път към липсващите библиотеки (папка lib), /home/nick/app/usr/bin/vlc е път към изпълнимия файл vlc, намиращ се в папка bin.
По подразбиране Linux не търси изпълними файлове в home. За да стартира програмата през терминал, преди името трябва да се използва префикса ./ Отдавна този media player зависи от Qt ,затова след всичко е нужна инсталацията на пакета qt-x11. Към него са закачени няколко зависимости. Излишните може да се премахнат безпроблемно след това. Реално са нужни qt toolkit и gstreamer phonon backend. Лесно се обработват чрез пакетния менажер на CentOS. EDIT:
Разбира се, за да се гледа H.265(HEVC) видео на CentOS 6.0, може да се инсталира mplayer от source code, както е описано тук:
📎️ "linuxfromscratch.org.multimedia/mplayer". При конфигурирането са нужни определени група пакети:
[nick@localhost bin]# yum groupinstall Development Tools
Няма коментари :
Публикуване на коментар
Забележка: Само членове на този блог могат да публикуват коментари.