Автор Тема: проблем с еднакви имена на споделени библиотеки  (Прочетена 885 пъти)

iskren

  • Напреднали
  • *****
  • Публикации: 185
  • Distribution: Fedora Core 8
  • Window Manager: KDE3
    • Профил
    • WWW
Здравейте!

До сега по принцип ползвах файърфокс инсталиран от репотата на федората, бях си сложил даже 3ката (от development), но много crash-ваше затова си сложих и 2ката (свалена от официалния сайт). Сега обаче реших да си сложа и 3ката от официалния сайт... е да ама има библиотеки които се намират във папката на ff2 и се казват по същия начин като тези, намиращи се във папката на ff3. Сложил съм пътя до 2те в /etc/ld.so.conf.d и съм написал ldconfig, но както се сещате това не оправя нещата. Та въпроса ми е има ли начин да кажа всяка версия да си ползва нейните без да се налага постоянно едит във /etc/ld.so.conf.d и ldconfig. Мисля че ако преименувам някой споделен файл няма да го намери споделената версия (ако сложа примерно номера на подверсията - защото в момента проблема е че новия файърфокс използва споделен файл със същото име, но по нова версия във същност)
Активен

phantomlord

  • Напреднали
  • *****
  • Публикации: 1832
  • Distribution: Debian Sid
  • Window Manager: KDE 4
  • Fall to your knees and bow to the Phantom Lord
    • Профил
    • WWW
Имах подобен проблем с vmware, когато имаше две библиотеки с различни версии, но от един и същ тип. Реших го така:
Примерен код
LD_PRELOAD=/usr/lib/libdbus-1.so.3 vmware

Надявам се да те ориентира.



Активен

http://myfreesoft.net/phpBB2/index.php?c=7
Помогни си сам, за да ти помогне и Господ
Linux - connecting people...

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Мдам, един шел скрипт дето ти вдига firefox-a и сетва преди това LD_PRELOAD е добра идея. Има един друг (тъп) вариант, който е удобен, но не е за препоръчване:

1) Единият firefox го правиш suid-нат. Не е задължително собственикът на binary-то да е root, дори хич не е препоръчително, просто трябва да е някой съществуващ потребител със съществуваща home директория
2) В /etc/ld.so.preload слагаш пълните пътища до .so файловете, използвани от другият firefox.
3) Спокойно можеш да си стартираш първият firefox, защото suid ELF binary-тата когато се зареждат и изпълняват, игнорират LD_PRELOAD и това в /etc/ld.so.preload.

Така няма да се занимаваш със шел скриптове дето ти стартират други версии на браузъра. Лошото е че се създава излишен хаос и когато забравиш за тази манипулация и си ъпдейтнеш браузъра през пакетния мениджър ще си имаш драми '<img'>

Нооо така пък става '<img'>

Между другото доста old-school рууткитове ползваха /etc/ld.so.preload за да hook-ват glibc функции и да се крият и да правят пакости '<img'>
Активен

"Knowledge is power" - France is Bacon

iskren

  • Напреднали
  • *****
  • Публикации: 185
  • Distribution: Fedora Core 8
  • Window Manager: KDE3
    • Профил
    • WWW
Мерси много за отговорите!
Вчера пробвах със LC_PRELOAD, но не се получи:
Примерен код
$ LD_PRELOAD='/usr/local/firefox3/' ./firefox-bin
ERROR: ld.so: object '/usr/local/firefox3/' from LD_PRELOAD cannot be preloaded: ignored.
./firefox-bin: error while loading shared libraries: libjemalloc.so: cannot open shared object file: No such file or directory

$LD_LIBRARY_PATH='/usr/local/firefox3/' ./firefox-bin #<-- това сработи


Интересното е че като ползвам скрипта firefox (а не директно изпълнимия firefox-bin) той някак си оправя нещата ... но го прегледах и не разбирам как точно го прави '<img'>).

А пък за /etc/ld.so.preload ... там ако сложа един so файл ми излизат през 5 сек съобщения на конзолата че не може да го прелоудне - т.е това по скоро разбрах че опитва да зареди файлове в рамта, които евентуално ще се ползват за да се намали времето за стартиране.

За сега ще ползвам скриптовете (firefox) които преди не ползвах, защото като подам опция -p даваха грешка (после се оказа че за линукс трябва да е -profilemanager) и разреших проблема.



Активен