LINUX.ORG.RU

Кто мне портит ENV? (или что за бред с SLIM?)

 , ,


0

2

Имеется: FreeBSD 10 с установленными Xorg и MATE 1.8 После логина (с помощью tty) и запуска startx успешно запускается Xorg с mate-session. Но я захотел использовать Display manager, ибо 21-й век, и всё такое.

Кандидаты: XDM, SLIM, GDM, KDM, LXDM
Из них:
1) GDM тянет ненужные мне зависимости
2) KDM вообще отдельно не устанавливается, только в обнимку с KDE4
3) LXDM тупо отсутствует (хоть LXDE в портах имеется)

Что выбрать? Я уже успел испытать SLIM, однако суть в том, что с его использованием он тупо игнорирует (НЕ наследует, если быть точным) любые настройки из /etc/profile и ~/.profile, и из-за этого нет половины переменных окружения. Особенно печальная ситуация с $PATH. Он должен выглядеть так:

$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/home/user/bin
Но с использованием SLIM там нет /sbin, /usr/sbin, /usr/local/sbin и еще некоторых. Печаль, в общем.

В связи с этим у меня 3 вопроса:

1) Как отследить точный порядок загрузки (от скрипта/бинарника к скрипту/бинарнику) дабы определить ENV-вредителя?
2) Может ли быть виноватым (полностью или частично) SLIM?
3) Если на второй вопрос ответ утвердительный, стоит ли использовать другой DM?

И да, MDM не был портирован, ибо он оказался не MATE Display Manager, а Mint Display Manager. Лол :)

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

вопрос: а что у тебя в директиве default_path в файле slim.conf?

Тоже самое:

default_path        /bin:/usr/bin:/usr/local/bin

Так нифига не понятно зачем тебе нужно DE передавать дополнительные пути. Если речь идет о прогах, который потом в DE запускаются, то добавь пути своему юзеру а /etc/login.conf. Если речь идет о консоли в DE, то через ~/.cshrc или ~/.bashrc. Ну и уж для уверенности, заэкспорти PATH перед exec в ~/.xinitrc

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

man login.conf:

     path     A space or comma separated list of path names, following the
              usual csh conventions (leading tilde with and without username
              being expanded to home directories etc.)

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

Так нифига не понятно зачем тебе нужно DE передавать дополнительные пути.

В том то и дело, что НЕ надо - пусть наследует те, что дает система. В GDM+Gnome2 именно так и было, и никаких проблем с env не было.

/etc/login.conf

Там вроде и так по дефолту нужные пути

Если речь идет о консоли в DE, то через ~/.cshrc или ~/.bashrc

cshrc не использую. .bashrc, конечно, вариант, но попахивает «затычкой» или «велосипедизмом».

заэкспорти PATH перед exec в ~/.xinitrc

SLIME игнорирует любые env в .xinitrc не зависимо от slime.conf

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

у меня тоже bash
Вообще странно всё это. Написал разрабам mate-desktop. Они говорят, что GDM используют. Лол. Действующих контактов разработчиков SLIM не нашел.

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

пусть наследует те, что дает система.

Насколько я знаю, система по дефолту не дает /usr/local/bin.

В GDM+Gnome2 именно так и было

Думаю тут дело не в GDM или slim. Скорее всего пути не подтягиваются самим mate или где-то оверврайтятся.

Там вроде и так по дефолту нужные пути

Откуда такая уверенность? Class юзеру присвоил чтоб он унаследовал дефолтные?

но попахивает «затычкой» или «велосипедизмом»

Если окажется, что где-то на стороне mate теряются переменные, то чем велосипед не транспорт?

SLIME игнорирует любые env в .xinitrc не зависимо от slime.conf

Причем здесь slim? DE запускается непосредственно с .xinitrc и переменные передаются ему, а не slim-у. Еще раз повторюсь: сделать именно export (setenv) PATH а не просто указать PATH.

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

Насколько я знаю, система по дефолту не дает /usr/local/bin

почему? там достаточно много бинарников, и после логина в TTY система мне дает этот PATH. И для этого я ничего не указывал и не правил

Думаю тут дело не в GDM или slim. Скорее всего пути не подтягиваются самим mate или где-то оверврайтятся

Они оверврайтятся самим SLIM, в slim.conf есть для этого даже спец. строка:

default_path /bin:/usr/bin:/usr/local/bin

Откуда такая уверенность? Class юзеру присвоил чтоб он унаследовал дефолтные?

Как Class влияет на наследование дефолтных путей?

Если окажется, что где-то на стороне mate теряются переменные, то чем велосипед не транспорт?

посмотри шапку темы. Проблема не на стороне MATE, ибо с startx всё работает превосходно

Причем здесь slim? DE запускается непосредственно с .xinitrc и переменные передаются ему, а не slim-у. Еще раз повторюсь: сделать именно export (setenv) PATH а не просто указать PATH.

Именно это я и делал. Нулевой результат. Могу заснять на видео.

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

там достаточно много бинарников, и после логина в TTY

После логина в tty оно наследует переменные окружения залогиненого юзера. Речь же идет, как я понимаю, о запуске DE через slim который запускается при старте системы.

Они оверврайтятся самим SLIM, в slim.conf есть для этого даже спец. строка:

Оверврайтится только тогда, когда slim собран с USE PAM on. Смотрим исходники.

app.php:

#ifdef USE_PAM
        /* Setup the PAM environment */
        try{
                if(term) pam.setenv("TERM", term);
                pam.setenv("HOME", pw->pw_dir);
                pam.setenv("PWD", pw->pw_dir);
                pam.setenv("SHELL", pw->pw_shell);
                pam.setenv("USER", pw->pw_name);
                pam.setenv("LOGNAME", pw->pw_name);
                pam.setenv("PATH", cfg->getOption("default_path").c_str());
                pam.setenv("DISPLAY", DisplayName);
                pam.setenv("MAIL", maildir.c_str());
                pam.setenv("XAUTHORITY", xauthority.c_str());
        }
        catch(PAM::Exception& e){
                logStream << APPNAME << ": " << e << endl;
                exit(ERR_EXIT);
        }
#endif

Как Class влияет на наследование дефолтных путей?

Можно явно указать юзеру переменную, для уверенности.

Проблема не на стороне MATE, ибо с startx всё работает превосходно

Насколько я понимаю, startx выполняется в консоли залогиненого юзера, где он и получается все переменные. При логине через slim, процесс немного иной.

В какой групп(е|ах) юзер? (id <user>)

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

Заметил что у меня в /etc/profile завалялось:

export PATH=$PATH:/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
Может это и есть костылик, благодаря которому у меня все ок. Осталось с того времени, когда причесывал хоткеи, цветовую схему, inputrc и т.д. точно так же как и в Gentoo.

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

Оверврайтится только тогда, когда slim собран с USE PAM on. Смотрим исходники.

Спасибо, это вроде то что нужно!! Сейчас попробую пересобрать без PAM. Правда, я не знаю где ты нашел app.php, и вообще странно, что slim php использует... Бррр...

$ find / -name "app.php"
$

Насколько я понимаю, startx выполняется в консоли залогиненого юзера, где он и получается все переменные.

Да, именно так. Другими способами я бы не смог запустить startx. Кстати, стартует очень быстро :)

При логине через slim, процесс немного иной.

Да уж, за всё это мучительное время я это понял как никогда хорошо...

В какой групп(е|ах) юзер? (id <user>)

$ id user
uid=1000(user) gid=1000(user) groups=1000(user),5(operator)
reprimand ★★★★★
() автор топика
Ответ на: комментарий от iron

пересобрал без поддержки PAM. Такая же лажа :(

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

Правда, я не знаю где ты нашел app.php

Сорри, промахнулся. app.cpp

пересобрал без поддержки PAM. Такая же лажа :(

У меня c PAM=on. Но судя по всему, проблема в другом.

Продолжаем ковыряния. Добавь в .xinitrc вместо exec: echo $PATH > /tmp/path.txt ну и его в студию.

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