powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
11 сообщений из 11, страница 1 из 1
FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
    #38702532
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

На сервере установлено несколько ФБ-2.5.3, в том числе свежак (26788, в каталоге /opt/fb25sc) и более старый билд (26737, в каталоге /opt/fb25bak_sc).
Все инстансы выключены, загружен только 26737.

Подключаюсь к этому 26737, ввожу:
Код: plaintext
1.
2.
3.
4.
5.
6.
SQL> show version;
ISQL Version: WI-V2.5.3.26730 Firebird 2.5
Server version:
Firebird/linux AMD64 (access method), version "LI-V2.5.3.26788 Firebird 2.5"
Firebird/linux AMD64 (remote server), version "LI-V2.5.3.26737 Firebird 2.5/tcp (oel64)/P12"
Firebird/x86/Windows NT (remote interface), version "WI-V2.5.3.26730 Firebird 2.5/tcp (csprog)/P12"
on disk structure version 11.2

Вижу, что на самом деле он при старте загрузил библу от свежего ФБ (access metod). Хотя слушает он меня чем-то "своим, родным" (remote server).

Вопрос. Не могу понять, почему он грузит новую библу.

Вот симв. ссылки и файлы в lib-каталоге старого инстанса ФБ:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
$ ls -l /opt/fb25bak_sc/lib/libfb*
lrwxrwxrwx 1 root root      16 Jul 21 16:44 /opt/fb25bak_sc/lib/libfbclient.so -> libfbclient.so.2
lrwxrwxrwx 1 root root      20 Jul 21 16:44 /opt/fb25bak_sc/lib/libfbclient.so.2 -> libfbclient.so.2.5.3
 -rwxr-xr-x 1 root root  853920 Jan 31 23:36 /opt/fb25bak_sc/lib/libfbclient.so.2.5.3 
lrwxrwxrwx 1 root root      17 Jul 21 16:44 /opt/fb25bak_sc/lib/libfbembed.so -> libfbembed.so.2.5
lrwxrwxrwx 1 root root      19 Jul 21 16:44 /opt/fb25bak_sc/lib/libfbembed.so.2.5 -> libfbembed.so.2.5.3
-rwxr-xr-x 1 root root 5204328 Jan 31 23:36 /opt/fb25bak_sc/lib/libfbembed.so.2.5.3

Вот path-каталоги, куда он может лазить в поисках библы:

Код: plaintext
1.
2.
3.
$ env | grep "PATH="
LD_LIBRARY_PATH=:/usr/lib:/usr/lib64:/usr/local/lib
PATH=/usr/lib64/qt-3.3/bin:/opt/fb30/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib:/usr/local/lib:/usr/share/aclocal:/usr/share/libtool:/root/bin

Но во всех этих "/usr/..." каталогах только одна библа, от трёшки:

Код: plaintext
1.
2.
$ locate libfbclient | grep "^/usr"
/usr/lib64/libfbclient.so.3.0.0

Запускалка этого старого ФБ-инстанса:
/etc/init.d/fbscbak_sc
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
. /etc/rc.d/init.d/functions
INSTANCE= fb25bak_sc 
FIREBIRD=/opt/ fb25bak_sc 
name=$(basename `readlink -f $0`)
FBRunUser=firebird
makeFbDir() {
        mDir=${1}
        mode=${2}
        if [ ! -d $mDir ]; then
                rm -rf $mDir
                mkdir $mDir
                if [ "$mode" ]; then
                        chmod $mode $mDir
                fi
        fi
        chown $FBRunUser:$FBRunUser $mDir
}
runDir=/var/run/$INSTANCE
makeFbDir $runDir
lockDir=/tmp/$INSTANCE
makeFbDir $lockDir 0770
pidfile="$runDir/$INSTANCE.pid"
FULLNAME="Firebird server [$INSTANCE]"
LD_LIBRARY_PATH=$FIREBIRD/lib:$LD_LIBRARY_PATH
export FIREBIRD LD_LIBRARY_PATH
ISC_USER=
ISC_PASSWORD=
export ISC_USER ISC_PASSWORD
GUARDIAN=$FIREBIRD/bin/fbguard
if [ ! -x $GUARDIAN ]; then
        GUARDIAN=/opt/fb25/bin/fbguard
fi
RETVAL=0
case "$1" in
  start)
        echo -n "Starting $FULLNAME "
        daemon --user=$FBRunUser "export FIREBIRD LD_LIBRARY_PATH; $GUARDIAN -pidfile $pidfile -daemon -forever"
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$name
        echo
        ;;
  stop)
. . .


PS. И еще вопрос.
access method = движок; реализован в виде libfbclient.so.2.5.3
remote server = сетевой сервер; реализован в виде... чего ?
remote interface = сетевой клиент (dll, с пом. которой лезу к серверу со своей клиекнтской машины)
...
Рейтинг: 0 / 0
FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
    #38702568
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
access method = libfbembed.so / libEngine12.so
remote server = fbserver / fb_smp_server / firebird

занафига ты прицепился к libfbclient.so непонятно, клиент у тебя вообще на винде и он грузится по виндовому PATH. Ищи почему твой fb_smp_server версии 26737 загрузил к себе в память libfbembed.so версии 26788. Похоже на проблемы с LD_LIBRARY_PATH.
...
Рейтинг: 0 / 0
FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
    #38702786
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitraccess method = libfbembed.so / libEngine12.so
<...>
Ищи почему твой fb_smp_server версии 26737 загрузил к себе в память libfbembed.so версии 26788. Похоже на проблемы с LD_LIBRARY_PATH.У мну
Код: plaintext
LD_LIBRARY_PATH=:/usr/lib:/usr/lib64:/usr/local/lib

Я правильно понимать, что при установке ФБ на 64-разр. *nix он будет искать библу НЕ в /usr/lib, а в /usr/lib 64 ?
Ибо вот что вижу сейчас там:
Код: plaintext
1.
2.
3.
4.
$ ls -l /usr/lib64/libfbembed.*
lrwxrwxrwx 1 root root 29 Jul 21 13:17  /usr/lib64/libfbembed.so -> /opt/fb25sc/lib/libfbembed.so 
lrwxrwxrwx 1 root root 33 Jul 21 13:17 /usr/lib64/libfbembed.so.2.5 -> /opt/fb25sc/lib/libfbembed.so.2.5
lrwxrwxrwx 1 root root 35 Jul 21 13:17 /usr/lib64/libfbembed.so.2.5.3 -> /opt/fb25sc/lib/libfbembed.so.2.5.3
И вот это: /opt/ fb25sc /lib/libfbembed.so - как раз и есть билд 26788.

Если причина именно в этом, то как запретить ему (26737) цепять библу, которая указана в /usr/lib64 - просто аннулировать этот симлинк или еще что-то ?
И еще вопрос: для чего в /usr/lib64, помимо libfbembed.so, нужны еще libfbembed.so.2.5 и libfbembed.so.2.5.3 ?
...
Рейтинг: 0 / 0
FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
    #38702825
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидУ мну
Код: plaintext
LD_LIBRARY_PATH=:/usr/lib:/usr/lib64:/usr/local/lib

ты в скрипте запуска сервера добавляешь к нему $FIREBIRD/lib. Для запуска сервера без инсталлятора это правильно, если же сервер установлен инсталлятором, то ХЗ (есть ли там в /lib что-нибудь? или все скопировано в системный /lib?).

ТаблоидЯ правильно понимать, что при установке ФБ на 64-разр. *nix он будет искать библу НЕ в /usr/lib, а в /usr/lib 64 ?
см. выше свой LD_LIBRARY_PATH где он ищет. Будет и там искать.

Таблоидкак запретить ему (26737) цепять библу, которая указана в /usr/lib64 - просто аннулировать этот симлинк или еще что-то ?
добавить к LD_LIBRARY_PATH путь к нужной версии либы в скрипте запуска сервера

ТаблоидИ еще вопрос: для чего в /usr/lib64, помимо libfbembed.so, нужны еще libfbembed.so.2.5 и libfbembed.so.2.5.3 ?
это симлинки, чтобы при необходимости привязать свой софт к конкретной версии ФБ
...
Рейтинг: 0 / 0
FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
    #38702851
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrТаблоидУ мну
Код: plaintext
LD_LIBRARY_PATH=:/usr/lib:/usr/lib64:/usr/local/lib
ты в скрипте запуска сервера добавляешь к нему $FIREBIRD/lib. Для запуска сервера без инсталлятора это правильноВот фрагмент файла-запускалки СТАРОГО билда, я намеренно заменил "сцепление" $FIREBIRD/lib и прежнего значения LD_LIB_PATH на указание только одного каталога:
Код: plaintext
1.
2.
3.
4.
INSTANCE=fb25bak_sc
FIREBIRD=/opt/fb25bak_sc
. . .
# LD_LIBRARY_PATH=$FIREBIRD/lib :$LD_LIBRARY_PATH 
 LD_LIBRARY_PATH=$FIREBIRD/lib 


Он, однако, при загрузке всё равно тащит библу от нового (26788-го) билда.
Лезу в каталог /opt/fb25bak_sc/lib, ввожу там:
Код: plaintext
1.
2.
3.
4.
$ ls -l /opt/fb25bak_sc/lib/libfbe*
lrwxrwxrwx 1 root root      17 Jul 21 16:44 /opt/fb25bak_sc/lib/libfbembed.so -> libfbembed.so.2.5
lrwxrwxrwx 1 root root      19 Jul 21 16:44 /opt/fb25bak_sc/lib/libfbembed.so.2.5 -> libfbembed.so.2.5.3
-rwxr-xr-x 1 root root 5204328 Jan 31 23:36 /opt/fb25bak_sc/lib/libfbembed.so.2.5.3

- т.е. никаких линков на каталог с новым билдом ("opt/fb25sc") тут нету.

dimitrесли же сервер установлен инсталлятором, то ХЗ ( есть ли там в /lib что-нибудь? или все скопировано в системный /lib? ).Вот что показывает locate:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
$ updatedb
$ locate libfbemb
/opt/fb25bak_sc/lib/libfbembed.so
/opt/fb25bak_sc/lib/libfbembed.so.2.5
/opt/fb25bak_sc/lib/libfbembed.so.2.5.3
/opt/fb25bak_sc/lib/.debug/libfbembed.so.2.5.3.debug
/opt/fb25bak_sc/usr/lib64/libfbembed.so
/opt/fb25bak_sc/usr/lib64/libfbembed.so.2.5
/opt/fb25bak_sc/usr/lib64/libfbembed.so.2.5.3
/opt/fb25cs/lib/libfbembed.so
/opt/fb25cs/lib/libfbembed.so.2.5
/opt/fb25cs/lib/libfbembed.so.2.5.3
/opt/fb25cs/lib/.debug/libfbembed.so.2.5.3.debug
/opt/fb25sc/lib/libfbembed.so
/opt/fb25sc/lib/libfbembed.so.2.5
/opt/fb25sc/lib/libfbembed.so.2.5.3
/opt/fb25sc/lib/.debug/libfbembed.so.2.5.3.debug
/root/downloads/fb25snap/builds/posix/Makefile.in.libfbembed
/root/downloads/fb25snap/gen/Makefile.libfbembed
/root/downloads/fb25snap/gen/FirebirdCS-debuginfo-2.5.3.26737-0.amd64/opt/fb25sc/lib/.debug/libfbembed.so.2.5.3.debug
/root/downloads/fb25snap/gen/FirebirdCS-debuginfo-2.5.3.26788-0.amd64/opt/fb25sc/lib/.debug/libfbembed.so.2.5.3.debug
/root/downloads/fb25snap/gen/buildroot/opt/fb25sc/lib/libfbembed.so
/root/downloads/fb25snap/gen/buildroot/opt/fb25sc/lib/libfbembed.so.2.5
/root/downloads/fb25snap/gen/buildroot/opt/fb25sc/lib/libfbembed.so.2.5.3
/root/downloads/fb25snap/gen/buildroot/usr/lib64/libfbembed.so
/root/downloads/fb25snap/gen/buildroot/usr/lib64/libfbembed.so.2.5
/root/downloads/fb25snap/gen/buildroot/usr/lib64/libfbembed.so.2.5.3
/root/downloads/fb25snap/gen/firebird/lib/libfbembed.so
/root/downloads/fb25snap/gen/firebird/lib/libfbembed.so.2.5
/root/downloads/fb25snap/gen/firebird/lib/libfbembed.so.2.5.3
/root/downloads/fb25snap.ss/builds/posix/Makefile.in.libfbembed
/root/downloads/fb25snap.ss/gen/Makefile.libfbembed

Ни один из этих каталогов не прописан в PATH, а LD_LIB_PATH в скрипте задана, как показано выше, явно.
Какой из них я ставил инсталлятором - хз, не помню... вроде бы /opt/fb25 cs , но он стопудово не свежий, от декабря 2013. И для него (CS) в автозапуске нет xinet'a, я с ним не работаю.

dimitrТаблоидкак запретить ему (26737) цепять библу, которая указана в /usr/lib64 - просто аннулировать этот симлинк или еще что-то ?добавить к LD_LIBRARY_PATH путь к нужной версии либы в скрипте запуска сервераНе помогает :'(
...
Рейтинг: 0 / 0
FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
    #38702874
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cd /opt/fb25bak_sc/bin
ldd ./fb_smp_server
export LD_LIBRARY_PATH=/opt/fb25bak_sc/lib
ldd ./fb_smp_server

вывод в студию
...
Рейтинг: 0 / 0
FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
    #38702881
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
$ cd /opt/fb25bak_sc/bin
$ ldd ./fb_smp_server
        linux-vdso.so.1 =>  (0x00007fff87bcf000)
         libfbembed.so.2.5 => /opt/fb25sc/lib/libfbembed.so.2.5  (0x00007f4918e74000)
        librt.so.1 => /lib64/librt.so.1 (0x0000003510200000)
        libdl.so.2 => /lib64/libdl.so.2 (0x000000350ee00000)
        libncurses.so.5 => /lib64/libncurses.so.5 (0x0000003512a00000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4918b58000)
        libm.so.6 => /lib64/libm.so.6 (0x000000350fe00000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003511a00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x000000350f600000)
        libc.so.6 => /lib64/libc.so.6 (0x000000350f200000)
        /lib64/ld-linux-x86-64.so.2 (0x000000350ea00000)
        libicuuc.so.30 => /opt/fb25sc/lib/libicuuc.so.30 (0x00007f4918876000)
        libicudata.so.30 => /opt/fb25sc/lib/libicudata.so.30 (0x00007f49184f6000)
        libicui18n.so.30 => /opt/fb25sc/lib/libicui18n.so.30 (0x00007f491827b000)
        libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003514a00000)
$ export LD_LIBRARY_PATH=/opt/fb25bak_sc/lib
$ ldd ./fb_smp_server
        linux-vdso.so.1 =>  (0x00007fff2d22f000)
         libfbembed.so.2.5 => /opt/fb25sc/lib/libfbembed.so.2.5  (0x00007f7d976e1000)
        librt.so.1 => /lib64/librt.so.1 (0x0000003510200000)
        libdl.so.2 => /lib64/libdl.so.2 (0x000000350ee00000)
        libncurses.so.5 => /lib64/libncurses.so.5 (0x0000003512a00000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f7d973c5000)
        libm.so.6 => /lib64/libm.so.6 (0x000000350fe00000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003511a00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x000000350f600000)
        libc.so.6 => /lib64/libc.so.6 (0x000000350f200000)
        /lib64/ld-linux-x86-64.so.2 (0x000000350ea00000)
        libicuuc.so.30 => /opt/fb25sc/lib/libicuuc.so.30 (0x00007f7d970e3000)
        libicudata.so.30 => /opt/fb25sc/lib/libicudata.so.30 (0x00007f7d96d63000)
        libicui18n.so.30 => /opt/fb25sc/lib/libicui18n.so.30 (0x00007f7d96ae8000)
        libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003514a00000)
...
Рейтинг: 0 / 0
FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
    #38702885
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидя намеренно заменил "сцепление" $FIREBIRD/lib и прежнего значения
LD_LIB_PATH на указание только /одного /каталога:
Это совершенно пофиг. LD_LIBRARY_PATH используется для указания дополнительных
каталогов для поиска. Те, которые прописаны в конфиге лоадера будут просматриваться в
любом случае. Линукс не рассчитан на одних профессионалов, защита от полного разрушения
работоспособности всей системы экспортом одной переменной там таки предусмотрена.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
    #38702903
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так. Прояснилось. Получил ответ от nix-Источника Света.
Ввиду его важности цитирую сюда, может кому еще когда-нить пригодится:
Переписка Q & A Q: Распаковал вчера старый билд LI-V2.5.3.26737, прописал его в .etc/init.d, подправив, ес-сно, имя инстанса (задал такое: "fb25bak_sc") <. . .> Откудова старый ФБ может цеплять новый движок ?

A: Firebird/linux (до версии 3) корректно работает _только_ в той
директории которая была указана в --with-prefix при сборке. Всё
остальное - в конечном счёте именно по этой причине. На вопрос как
заставить его работать в другой директории ответ конкретный - НИКАК.

Q: Ладно, это не проблема - скачаю из svn'a январскую версию сырцов и соберу в отд. каталог с указанием правильного --with-prefix.
Но вопрос всё равно остался <. . .>
LD_LIBRARY_PATH должен заставить его искать libfbembed именно в СВОЕМ каталоге, и ТОЛЬКО в нём: /opt/fb25bak_sc/lib

Но в этом каталоге нет никаких намёков на путь к новому билду ("/opt/fb25sc", скрипт его запуска - тоже в аттаче, файл "fb25sc")
Ооткудова скрипт-запускалка старого билда вообще "знает" про каталог "/opt/fb25sc", он где-то еще прописан был ?

A:
Этот скрипт тут совершенно не при чём.
Он прописан во всех бинарниках при сборке с помощью ключа
-Wl,-rpath,/opt/firebird/lib (каталог ест-нно берётся из prefix ).
В общем, буду всё пересобирать заново нахрен :-)
...
Рейтинг: 0 / 0
FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
    #38702947
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидОоткудова скрипт-запускалка старого билда вообще "знает" про каталог
"/opt/fb25sc", он где-то еще прописан был ?
Ну, блин, тебе что, недостаточно твоего же
lrwxrwxrwx 1 root root 29 Jul 21 13:17 /usr/lib64/libfbembed.so ->
/opt/fb25sc/lib/libfbembed.so ??? Какое ещё место прописки ты ищешь? /usr/lib(64)
просматривается линковщиком в первую очередь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
    #38702958
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТаблоидОоткудова скрипт-запускалка старого билда вообще "знает" про каталог
"/opt/fb25sc", он где-то еще прописан был ?Ну, блин, тебе что, недостаточно твоего же
lrwxrwxrwx 1 root root 29 Jul 21 13:17 /usr/lib64/libfbembed.so ->
/opt/fb25sc/lib/libfbembed.so ??? Какое ещё место прописки ты ищешь?ну я же говорю: снёс оттуда все симлинки, относившиеся к 2.5, к ЧМ. Сейчас там во:

Код: plaintext
1.
2.
3.
4.
5.
$ ls -l /usr/lib/libfb*
ls: cannot access /usr/lib/libfb*: No such file or directory

$ ls -l /usr/lib64/libfb*
lrwxrwxrwx 1 root root 38 Jul 16 17:00 /usr/lib64/libfbclient.so.3.0.0 -> /opt/fb30trnk/lib/libfbclient.so.3.0.0

Dimitry SibiryakovLD_LIBRARY_PATH используется для указания дополнительных
каталогов для поиска. Те, которые прописаны в конфиге лоадера будут просматриваться в
любом случае
. Линукс не рассчитан на одних профессионалов, защита от полного разрушения
работоспособности всей системы экспортом одной переменной там таки предусмотрена.
. . .
/usr/lib(64)
просматривается линковщиком в первую очередь.Да, я понял. Спс.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB-зоопарк на сервере. Как понять, почему грузится "не родная" libfbclient ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]