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. Лол :)

★★★★★

Подпили сам slim. Где-то в etc было. Помню что-то добавлял в path из хомяка.

anonymous
()

Ты хоть бы содержимое slim.conf запостил.

У меня в slim.conf все дефолтно, кроме:

login_cmd           exec /bin/sh - ~/.xinitrc %session

Ну и в ~/.xinitrc юзера под которым логинюсь:

exec /usr/local/bin/ck-launch-session /usr/local/bin/startxfce4

Попробуй сделать так же, если у тебя как-то иначе.

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

Дуй отсюда, если по делу сказать нечего.

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

абсолютно аналогично. Всё 1 к 1 (кроме startxfce4, конечно)

reprimand ★★★★★
() автор топика

ребята из SLIM явно придурки:

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

при том, что

halt_cmd /sbin/shutdown -p now
reboot_cmd /sbin/shutdown -r now

хочу написать багрепорт, но не имею понятия куда и как...

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

А lightDM там есть?

много где упоминается, в т.ч. на list.freedesktop
Но в портах нет, пакетах тоже. Мистика.

reprimand ★★★★★
() автор топика

XDM, кстати, тоже не работает, зараза.

reprimand ★★★★★
() автор топика

Но с использованием SLIM там нет /sbin, /usr/sbin, /usr/local/sbin и еще некоторых. Печаль, в общем.

Все правильно. Программы в каталоге sbin почти всегда требуют рута и запускаться от регулярного пользователя им не нужно.

В дебиане также:

home ~ $ echo $PATH
/home/halo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
home ~ $ su
Пароль: 
root@home:/home/halo# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@home:/home/halo# 

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

Программы в каталоге sbin почти всегда требуют рута и запускаться от регулярного пользователя им не нужно

4.2 лютейшее
http://paste.ubuntu.com/7832125/

В дебиане также:

где у тебя dmesg находится, в дебиане твоем?

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

Помогай пилить lightdm

разраб порта mate-desktop намекал, что у него были попытки запуска lightdm, якобы даже тестовый порт x11/lightdm существовал
Но теперь я не вижу ни порта, ни следов разработки на его github-е
Так кому помогать-то? :)

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

ты не понял к чему я «ничего не значит». Забей.

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

тему не читай&сразу отвечай

reprimand ★★★★★
() автор топика
Ответ на: комментарий от 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 ★★★★★
() автор топика

Проблема высосана из пальца.

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

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

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

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

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

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

iron ★★★★★
()

Но с использованием SLIM там нет /sbin, /usr/sbin, /usr/local/sbin и еще некоторых.

Использую SLIM для прогрузки Xfce4.

В /usr/local/etc/slim.conf изменил только:

# Available sessions (first one is the default).
# The current chosen session name is replaced in the login_cmd
# above, so your login command can handle different sessions.
# see the xinitrc.sample file shipped with slim sources
sessions            xfce4
#,icewm,wmaker,blackbox
и в default_user прописал свой логин.

В ~/.xinitrc:

startxfce4

В ~/.login:

startx

В настройке командной оболочки (у меня tcsh, то есть в файле ~/.cshrc), собственно, прописаны сами пути:

set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin ~/bin/gradle-2.0/bin)

Результат:

> echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/igor/bin/gradle-2.0/bin
Что у меня не так?

iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 1)
9 декабря 2014 г.

Так проблема в чём?

P. S.

> cat ~/.profile
cat: /home/igor/.profile: No such file or directory

> cat /etc/profile
# $FreeBSD: stable/10/etc/profile 208116 2010-05-15 17:49:56Z jilles $
#
# System-wide .profile file for sh(1).
#
# Uncomment this to give you the default 4.2 behavior, where disk
# information is shown in K-Blocks
# BLOCKSIZE=K; export BLOCKSIZE
#
# For the setting of languages and character sets please see
# login.conf(5) and in particular the charset and lang options.
# For full locales list check /usr/share/locale/*
# You should also read the setlocale(3) man page for information
# on how to achieve more precise control of locale settings.
#
# Check system messages
# msgs -q
# Allow terminal messages
# mesg y
> echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/igor/bin/gradle/bin
iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.