Discussion:
LD_LIBRARY_PATH & init.d $ glibc
(слишком старое сообщение для ответа)
Maxim Gribanov
2019-03-19 07:34:56 UTC
Permalink
Привет, All!

Друзья, подскажите как сделать: Мне нужно запустить прогу, она адекватно
работает под glibc 2.10 не старше, пересобирать не предлагать. Закрытое ПО.
Запускаю так: LD_LIBRARY_PATH=/opt/xxx/glibc(путь к libc2.10)
/opt/xxx/glibc/ld-linux.so.2 /opt/xxx(путь к проге)
- Все работает.

Hо как мне прописать сий сценарий в init.d скрипте?

LD_LIBRARY_PATH="/opt/xxx/glibc-2.10.1:$LD_LIBRARY_PATH"
LD_LIBRARY_PATH="/opt/xxx/glibc-2.10.1/ld-linux.so.2:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH

Hе помогает... ((


С наилучшими пожеланиями, Maxim.
Eugene Lamskoy
2019-03-20 10:26:16 UTC
Permalink
Hello Maxim!

19 мар 19 10:34, you wrote to all:

MG> Друзья, подскажите как сделать: Мне нужно запустить прогу, она
MG> адекватно работает под glibc 2.10 не старше, пересобирать не
MG> предлагать. Закрытое ПО. Запускаю так:
MG> LD_LIBRARY_PATH=/opt/xxx/glibc(путь к libc2.10)
MG> /opt/xxx/glibc/ld-linux.so.2 /opt/xxx(путь к проге) - Все работает.

MG> Hо как мне прописать сий сценарий в init.d скрипте?

MG> LD_LIBRARY_PATH="/opt/xxx/glibc-2.10.1:$LD_LIBRARY_PATH"
MG> LD_LIBRARY_PATH="/opt/xxx/glibc-2.10.1/ld-linux.so.2:$LD_LIBRARY_PATH"
MG> export LD_LIBRARY_PATH

MG> Hе помогает... ((

Попробуй LD_PRELOAD вместо LD_LIBRARY_PATH

LD_PRELOAD=/opt/some/lib.so /some/bin

Eugene
Maxim Gribanov
2019-03-20 12:18:02 UTC
Permalink
Привет, Eugene!

20 мар 19 13:26, Eugene Lamskoy -> Maxim Gribanov:


EL> Hello Maxim!

EL> 19 мар 19 10:34, you wrote to all:

MG>> Друзья, подскажите как сделать: Мне нужно запустить прогу, она
MG>> адекватно работает под glibc 2.10 не старше, пересобирать не
MG>> предлагать. Закрытое ПО. Запускаю так:
MG>> LD_LIBRARY_PATH=/opt/xxx/glibc(путь к libc2.10)
MG>> /opt/xxx/glibc/ld-linux.so.2 /opt/xxx(путь к проге) - Все
MG>> работает.

MG>> Hо как мне прописать сий сценарий в init.d скрипте?

MG>> LD_LIBRARY_PATH="/opt/xxx/glibc-2.10.1:$LD_LIBRARY_PATH"
MG>> LD_LIBRARY_PATH="/opt/xxx/glibc-2.10.1/ld-linux.so.2:$LD_LIBRARY_
MG>> PATH" export LD_LIBRARY_PATH

MG>> Hе помогает... ((

EL> Попробуй LD_PRELOAD вместо LD_LIBRARY_PATH

EL> LD_PRELOAD=/opt/some/lib.so /some/bin

Была бы какая то друга либо вопросов бы не было, но это glibc

Здесь сначала устанавливается переменная окружения
LD_LIBRARY_PATH=/opt/xxx/glibc-2.10.1, которая говорит, что библиотеки должны
искаться в папке /opt/xxx/glibc-2.10.1. Затем запускается динамический
загрузчик ld-linux.so.2(из этой же версии glibc) , который загружает программу
вместе с необходимыми ей библиотеками.

LD_LIBRARY_PATH=/opt/xxx/glibc-2.10.1 /opt/xxx/glibc/ld-linux.so.2
/opt/xxx/(путь к проге) Запукает нормально.
Также работает вариант /opt/xxx/glibc-2.10.1/ld-linux.so.2 --library-path
/opt/xxx/glibc-2.10.1 /opt/xxx/путь к проге, в этом варианте вызывается
динамический загрузчик ld-linux.so.2 (из glibc2.10.1) и ему укахывается путь к
либам (glibc2.10.1)

По сути одно и тоже. Примера для делаю скрипт с содержимым:

#! /bin/bash
LD_LIBRARY_PATH=/opt/xxx/glibc-2.10.1 /opt/xxx/glibc-2.10.1/ld-linux.so.2
/opt/xxx/bin/xxx

Запускаю все работает как надо, но в идеале хотелось бы написать полноценный
init.d скрипт с возможностью запуска, остановки и пр.

Если же делаю такой скрипт: (запускаю прогу отдельной строкой)
#! /bin/bash
LD_LIBRARY_PATH=/opt/xxx/glibc-2.10.1 /opt/xxx/glibc-2.10.1/ld-linux.so.2
/opt/xxx/bin/xxx

Терплю фиаско. Как мне поступть?

С наилучшими пожеланиями, Maxim.
Eugene Lamskoy
2019-03-20 14:50:08 UTC
Permalink
Hello Maxim!

20 мар 19 15:18, you wrote to me:

MG> #! /bin/bash
MG> LD_LIBRARY_PATH=/opt/xxx/glibc-2.10.1
MG> /opt/xxx/glibc-2.10.1/ld-linux.so.2 /opt/xxx/bin/xxx
MG> Терплю фиаско. Как мне поступть?
по идее надо export LD_LIBRARY_PATH= вместо LD_LIBRARY_PATH= в этом случае
но это не очень элегантное решение.

я бы враппер написал такой:
+x /usr/local/bin/soft.sh:
#!/bin/bash
LD_LIBRARY_PATH=/opt/xxx/glibc-2.10.1 /opt/xxx/glibc-2.10.1/ld-linux.so.2
/opt/bin/soft "$@"

а уже в инит скрипте вызывал бы враппер с нужными аргументами
/usr/local/bin/soft.sh arg1 arg2 arg100500

$@ передаст аргументы, с которыми вызван враппер, уже конечной софтине
PROFIT!

Eugene
Maxim Gribanov
2019-03-21 11:30:00 UTC
Permalink
Привет, Eugene!

20 мар 19 17:50, Eugene Lamskoy -> Maxim Gribanov:


EL> Hello Maxim!

EL> 20 мар 19 15:18, you wrote to me:

MG>> #! /bin/bash
MG>> LD_LIBRARY_PATH=/opt/xxx/glibc-2.10.1
MG>> /opt/xxx/glibc-2.10.1/ld-linux.so.2 /opt/xxx/bin/xxx
MG>> Терплю фиаско. Как мне поступть?
EL> по идее надо export LD_LIBRARY_PATH= вместо LD_LIBRARY_PATH= в этом
EL> случае но это не очень элегантное решение.

EL> я бы враппер написал такой:
EL> +x /usr/local/bin/soft.sh:
EL> #!/bin/bash
EL> LD_LIBRARY_PATH=/opt/xxx/glibc-2.10.1
EL> /opt/xxx/glibc-2.10.1/ld-linux.so.2 /opt/bin/soft "$@"

EL> а уже в инит скрипте вызывал бы враппер с нужными аргументами
EL> /usr/local/bin/soft.sh arg1 arg2 arg100500

EL> $@ передаст аргументы, с которыми вызван враппер, уже конечной софтине
EL> PROFIT!

Спасибо, но в такой реализации не будет процесса программы xxx, а будет
запущен процесс ld-linux.so.2
Программу запустить удасться, остановить тоже, а вот как отследить ее статаус?
Это сервер баз данных, и баз несколько, соответственно и процессов.

С наилучшими пожеланиями, Maxim.
Maxim Gribanov
2019-03-21 11:50:24 UTC
Permalink
Привет, Eugene!

20 мар 19 17:50, Eugene Lamskoy -> Maxim Gribanov:


EL> Hello Maxim!

EL> 20 мар 19 15:18, you wrote to me:

MG>> #! /bin/bash
MG>> LD_LIBRARY_PATH=/opt/xxx/glibc-2.10.1
MG>> /opt/xxx/glibc-2.10.1/ld-linux.so.2 /opt/xxx/bin/xxx
MG>> Терплю фиаско. Как мне поступть?
EL> по идее надо export LD_LIBRARY_PATH= вместо LD_LIBRARY_PATH= в этом
EL> случае но это не очень элегантное решение.

EL> я бы враппер написал такой:
EL> +x /usr/local/bin/soft.sh:
EL> #!/bin/bash
EL> LD_LIBRARY_PATH=/opt/xxx/glibc-2.10.1
EL> /opt/xxx/glibc-2.10.1/ld-linux.so.2 /opt/bin/soft "$@"

EL> а уже в инит скрипте вызывал бы враппер с нужными аргументами
EL> /usr/local/bin/soft.sh arg1 arg2 arg100500

EL> $@ передаст аргументы, с которыми вызван враппер, уже конечной софтине
EL> PROFIT!

Спасибо, доехал ))) Все работает!

С наилучшими пожеланиями, Maxim.

Loading...