LINUX.ORG.RU

Помогите найти и установить некоторые либы

 


0

2

Судя по многочисленным обсуждениям, тема изъезжена вдоль и поперек, и вот опять :)

Программе websdr, портированная в Debian и Raspbian, которая использует библиотеки древние, как гавно мамонта, при запуске понадобилось некоторые либы.

Начал с Debian.
Первой этой программе понадобилась libpng12.so.0

В системе была только новая либа - libpng16.so.16, поэтому бросил линк -

ln -s -T /usr/lib/x86_64-linux-gnu/libpng16.so.16 /usr/lib/x86_64-linux-gnu/libpng12.so.0

Тогда программа затребовала вторую древнюю либу - libcrypto.so.1.0.0

В системе есть только новая libcrypto++.so.6.0.0, тоже кидаю на нее линк -

ln -s -T /usr/lib/x86_64-linux-gnu/libcrypto++.so.6.0.0 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0

И когда казалось все, победил! - эта гадкая прога при запуске выдала новый перл -

./websdr64: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0: no version information available (required by ./websdr64)
./websdr64: /usr/lib/x86_64-linux-gnu/libpng12.so.0: version `PNG12_0' not found (required by ./websdr64)


Тогда откопал не помню уже где эти старые либы, но они конфликтуют с новыми.
Яхуего знает, как вы боретесь с этими древними либами, они каждый раз ставят меня в тупик, второй день уже воюю с ними :((


Эти древние либы ищи в репозитории старых релизов Debian, скачивай отдельно эти deb пакеты, но их в систему не ставь. А только распаковывай и копируй файлы библиотек в систему.

Можно не в системные директории, а в отдельную директорию и подгружать их из неё через LD_PRELOAD_PATH во время запуска прграммы.

anonymous ()
Ответ на: комментарий от anonymous

Эти древние либы ищи в репозитории старых релизов Debian, скачивай отдельно эти deb пакеты, но их в систему не ставь.

А только распаковывай и копируй файлы библиотек в систему.

Получается, красивого решения нет, и нужно вот так извращаться?

Выходит, автор websdr заслужил того, чтобы его запинали, отстал от жизни как динозавр...

Red7 ()
Ответ на: комментарий от mandala

mandala: Вот спасибо!!! А расскажите-ка, плиз, как вы их так быстро находите? :)

Вот я бы ни за что не догадался, что libcrypto находится в libssl.
Какие-то непонятные тайны....

Red7 ()
Ответ на: комментарий от mandala

А подскажите-ка, плиз, можно ли в Дебиане искать нужную либу не поиском на его сайте, а какой-то его утилитой?

Например, в ЦентОСе это делается командой

yum provides /*packet_name

Red7 ()
Ответ на: комментарий от Red7

Первая или вторая ссылка при поиске возвращает это:

The apt-file command can do this for you from the command line. I use it frequently when building packages from source. For files provided by packages that are already installed on your system, apt-cache is another choice.

To install apt-file, do:

sudo apt-get install apt-file Then, you need to update it's database:

apt-file update And, finally, search the file:

$ apt-file find kwallet.h kdelibs5-dev: /usr/include/kwallet.h libkf5wallet-dev: /usr/include/KF5/KWallet/kwallet.h

anonymous ()
Ответ на: комментарий от Red7

Да, анонимус прав, есть apt-file и его надо доустановить обычно b и у него свой индекс, и он немного тормозной (к сожалению всю россыпь утилит apt-* так и не интегрировали в общий APT).

$ sudo apt install apt-file
$ apt-file update
$ apt-file search 'file_name'
mandala ★★★★ ()
Ответ на: комментарий от Red7

Не совсем понял, где ищет эту утилита - в репах или системе?

Потому что выдала такое, что больше похоже на систему -

~# apt-file search libfftw3-3
libfftw3-3: /usr/share/doc/libfftw3-3/NEWS.gz
libfftw3-3: /usr/share/doc/libfftw3-3/README
libfftw3-3: /usr/share/doc/libfftw3-3/README.Debian
libfftw3-3: /usr/share/doc/libfftw3-3/changelog.Debian.gz
libfftw3-3: /usr/share/doc/libfftw3-3/copyright
~# 


А мне-то надо поиск в репах!

Red7 ()
Ответ на: комментарий от mandala

Вот откуда, например, мне было заранее знать, что эта долбаная либа libcrypto.so.1.0.0 находится совсем в другом, не похожем по названию пакете - libssl1.0.0_1.0.1t-1+deb8u9_armhf.deb ?

Red7 ()
Ответ на: комментарий от Red7

Не, ищет по репе, вот пример:

mandala@server:~$ apt-file search pam_appl.h
libpam0g-dev: /usr/include/security/pam_appl.h

mandala@server:~$ apt search libpam0g-dev
Sorting... Done
Full Text Search... Done
libpam0g-dev/xenial-updates 1.1.8-3.2ubuntu2.1 amd64
  Development files for PAM

Пакет не установлен.

Вот откуда, например, мне было заранее знать,

Опыт ))). Ну и еще советую гугл и его расширенный поиск.

mandala ★★★★ ()
Ответ на: комментарий от mandala

1) Не, ищет по репе, вот пример:
2) Опыт ))). Ну и еще советую гугл и его расширенный поиск.

Не понимаю. В таком случае эти два утверждения явно противоречат друг другу.

И при количестве пакетов свыше 30000 никакой опыт не поможет, нужна поисковая утилита. А она не работает!

Вот пример ее поиска библиотеки libcrypto.so.1.0.0 -

# apt-file search libcrypto.so.1.0.0
matlab-rpi: /opt/matlab-rpi/bin/linux-arm-32/libcrypto.so.1.0.0
И что же она нашла? Да то, что эта либа находится в системе, которую до этого я сам и поставил.
А на самом деле нужно, чтобы она нашла в репах пакет, в котором она содержится, т.е. - libssl1.0.0_1.0.1t-1+deb8u9_armhf.deb

Но она ведь этого не сделала :(

Red7 ()
Ответ на: комментарий от Red7

И что же она нашла? Да то, что эта либа находится в системе, которую до этого я сам и поставил.

Так репа jessie у тебя не подключена, вот и не находит, всё верно (вот я и советовал сначала веб-морду сайта дебиана). jessie сейчас oldstable, можешь добавить его репы скопировав /etc/apt/sources.list и поменяв кодовое имя дистра, сломаться ни чего не должно, ты на свежей ветке (так не рекомендуется использовать тестинг и унстейбл, если сам на стейбл-ветке, наоборот проще)

sudo cp /etc/apt/sources.list /etc/apt/sources.list.d/jessie.list
sudo sed -i -e 's/stretch/jessie/g' /etc/apt/sources.list.d/jessie.list
sudo apt update
sudo apt-file update

И теперь можно искать:

apt-file search libcrypto.so.1.0.0

mandala ★★★★ ()
Ответ на: комментарий от mandala

Спасибо за Debian, все получилось! :)

Теперь напоролся на тот же libcrypto.so.1.0.0 в CentOS-6.

Не нашел этой либы нигде в Гугле, кроме как libcrypto.so в openssl-devel-1.0.1e-57.el6.x86_64

Поставил этот пакет (который потянул аж 7 зависимостей),
затем дал линк

ln -s -T /usr/lib64/libcrypto.so /usr/lib64/libcrypto.so/libcrypto.so.1.0.0
Но увы, версия не сложилась -
./websdr64: /usr/lib64/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by ./websdr64)
И как здесь быть с этим гребаным libcrypto.so.1.0.0 ? Куда ни ткнись, везде с ним проблемы :(

Red7 ()
Ответ на: комментарий от Red7

Увы, я сам с rpm и yum «на Вы». Я бы на твоем месте создал новую тему с тегами [rpm] [yum] [centos] — там бы описал проблему еще раз, написал бы что сделал, и дал бы линк до кучи на эту, уже решенную, тему. По тегам придут опытных центосшники, уверен, помогут.

mandala ★★★★ ()