LINUX.ORG.RU
ФорумAdmin

Установка переменной окружения LD_PRELOAD


0

0

Доброго времени суток

Есть такая проблема: для запуска вебкамеры необходимо прописать переменную окружения LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so - при этом камера работает(какая камера и как устанавливается оставлю за кадром)

компьютер настроен на авторизацию в лдапе.

Если прописать команду

export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so

или

export LD_PRELOAD=$LD_PRELOAD:/usr/lib/libv4l/v4l1compat.so

в загрузочных скриптах системы - перестает работать авторизация в лдапе из под GDM при этом в логе пишет

pam_loginuid(gdm:session): error: login user-name 'mr260585iog' does not exist

при этом в консоли пользователь заходит нормально(в цепочке PAM нет модуля pam_loginuid при входе через консоль). Также нормально заходят локальные ползователи.

Если прописать переменную в скриптах ползователя, например в ~/.bashrc, то при запуске из mc в графической консоли - все работает, если сделать двойной щелчек по скрипту в гноме и выбрать запустить или запустить в терминале - данная переменная отсутствует, как следствие не грузится библиотека и не работает камера. Если прописать експорт прямо в файле запуска программы - работает. Но. Данный вариант несовсем подходит, так как камера используеться в различных программах и на разных компах и везде переписывать скрипты запуска программы или вообще писать заново, для того чтоб прописать переменную ... :((

Так вот собственно вопрос - где можно добавить переменные, которые добавятся в терминал запускаемый при двойном щелчке в гноме по скрипту ?

ОС - ASPLinux 11.2

Зарание благодарю .

Ответ на: комментарий от j262

Спасибо, завтра попробую этот вариант.

Может быть есть ещё варианты, если этот по какой либо причине не заработает .... ведь установка переменной при загрузке системы должна была отработать(и отработала) правильно, но при этом вылезла ошибка в модуле авторизации(кто бы мог подумать)

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

Посмотри, какие функции она экспортирует, возможно, они перекрывают какие-то системные, необходимые для этой самой авторизации.

INFOMAN ★★★★★
()

правильно будет определять ее локально для приложения:
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so start_my_program

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

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

Как задать переменные окружения для среды в которой гном запускает программы ?????

corvinav
() автор топика
Ответ на: комментарий от Slavaz

Тоже вариант, но примерно того же рода, что и просто указание в скрипте :) Гном запускает скрипты в среде, которая несколько отличается от графической консоли. В частности переменные прописанные в .bashrc в обычной консоли пользователя устанавливаются, а если гном запускает(двойной щелчек - запустить в терминале) то этот файл не катируется.

Как установить переменные для среды в которой гном запускает свои программы ?

Объясняю, почему именно такая постановка вопроса - все домашние папки пользователя хранятся на сервере и я скриптами могу с ними творить что угодно, например прописать в файл какую то строчку и изменить этот файл в эталооном каталоге для будущих пользователей - дальше проблем не возникает с любыми программами использующими камеру ....

Также бывает такая ситуация что головной офис рассылает какую то программу по почте конечным пользователям, если она использует камеру, а я буду заниматься созданием алиасов или прописью в скрипт запуска конкретной программы нужных переменных - то возникают сложности (закалебают) а нагрузка на наш отдел - примерно по 100 неразумных юзеров разбросанных по всему городу на 1 сотрудника отдела ....

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

Хоть убей - не понимаю, в чём проблема...
Скриптом чем плохо?

mv -f /usr/bin/start_my_program{,-bin}

cat >/usr/bin/start_my_program <<EOF
#!/bin/sh
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so;
exec /usr/bin/start_my_program-bin
EOF
chmod a+x /usr/bin/start_my_program

С точки зрения вызывающих программ абсолютно без разницы, чего вызывать - скрипт или бинарник. В данном случае просто переименовываем бинарник и создаём скрипт с таким же именем, с каким был бинарник.

Если нужно обновлять часто бинарник, то я не зря в виде скрипта решение нарисовал: реализовать install.sh, который и поставит бинарник, и переиначит как надо (после инсталлятора бинарника, например).



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

Все дело в объемах и нагузке на единицу персонала. если при установке камеры - сделать это непроблема - все равно физически ехать на точку и устанавливать - то в дальнейшем предложенный вариант создаст дополнительные трудности ..... это из практики взято исходя из условий на конкретном предприятии.

Обнаружил только что, что непроходит только определение переменной LD_PRELOAD переменные типа test1 и т.д. все проходит, а переменная LD_PRELOAD непроходит ...... ниче не понимаю ......

PS вариант со скриптами подходит конечно, но это не сильно хороший вариант .....

corvinav
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.