LINUX.ORG.RU

Установка переменной окружения 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

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

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

помоему лучший вариант pam_env

pam_env - PAM module to set/unset environment variables

j262 ★★ ()

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

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

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

corvinav ()
Ответ на: Re: Установка переменной окружения LD_PRELOAD от corvinav

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

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

INFOMAN ★★★★★ ()

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

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

anonymous2 ★★★★ ()
Ответ на: Re: Установка переменной окружения LD_PRELOAD от anonymous2

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

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

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

corvinav ()

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

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

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

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

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

corvinav ()
Ответ на: Re: Установка переменной окружения LD_PRELOAD от corvinav

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

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

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 ★★★★★ ()

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

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

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

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

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