выскочка и LD_LIBRARY_PATH

Я новичок в выскочке и должен запустить процесс через него. Однако я получаю ошибку, описанную ниже.

содержимое моего сценария

description "Server"
author "Neeraj"

expect fork

respawn
respawn limit 5 10

console log

pre-start script
    echo "`/bin/date -u`: start myappname"
end script

script
    env LD_LIBRARY_PATH=/var/packages/myapp/target/bin
    export LD_LIBRARY_PATH
    exec /var/packages/myapp/target/bin/myappname --local-path=/var/lib/myapp
end script

post-stop script
    echo "`/bin/date -u`: stop myappname"
end script

Ошибка после выполнения сценария

bash-4.3# cat /var/log/upstart/pkg-myappname.log
2016-12-07T15:15:11+0800 Wed Dec  7 07:15:11 UTC 2016: start myappname
2016-12-07T15:15:11+0800 TERM=vt102
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
PWD=/
SHLVL=1
UPSTART_INSTANCE=
UPSTART_JOB=pkg-myappname
_=/bin/env
LD_LIBRARY_PATH=/var/packages/myapp/target/bin
LD_LIBRARY_PATH
2016-12-07T15:15:11+0800 /var/packages/myapp/target/bin/myappname: error while loading shared libraries: libhttp.so: cannot open shared object file: No such file or directory
bash-4.3# vi /etc/init/pkg-myappname.conf
bash-4.3# cat /var/log/upstart/pkg-myappname.log
2016-12-07T15:15:11+0800 Wed Dec  7 07:15:11 UTC 2016: start myappname
2016-12-07T15:15:11+0800 TERM=vt102
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
PWD=/
SHLVL=1
UPSTART_INSTANCE=
UPSTART_JOB=pkg-myappname
_=/bin/env
LD_LIBRARY_PATH=/var/packages/myapp/target/bin
LD_LIBRARY_PATH
2016-12-07T15:15:11+0800 /var/packages/myapp/target/bin/myappname: error while loading shared libraries: libhttp.so: cannot open shared object file: No such file or directory

Проблема в том, что мой исполняемый файл зависит от некоторых разделяемых библиотек, для которых я установил LD_LIBRARY_PATH в правильное расположение. Но как только происходит вызов exec, он не видит местоположение LD_LIBRARY_PATH и сообщает об ошибке.

Есть идеи, что я здесь делаю не так?

0
задан 7 December 2016 в 09:31
1 ответ

Решение моей собственной проблемы. Я не уверен, это обходной путь или правильный способ написать сценарий выскочки. Но так я решаю свою проблему. Теперь он может правильно находить разделяемые библиотеки.

  1. Удален сценарий, завершен сценарий.
  2. Удален оператор экспорта.

Ниже приведен рабочий сценарий.

description "Server"
author "Neeraj"

expect fork

respawn
respawn limit 5 10

console log

pre-start script
    echo "`/bin/date -u`: start myappname"
end script

env LD_LIBRARY_PATH=/var/packages/myapp/target/bin
exec /var/packages/myapp/target/bin/myappname --local-path=/var/lib/myapp

post-stop script
    echo "`/bin/date -u`: stop myappname"
end script
0
ответ дан 5 December 2019 в 09:06

Теги

Похожие вопросы