Bug 11814

Summary: /etc/profile.d/0lang.*sh: изменить приоритет
Product: Sisyphus Reporter: Vitaly Lipatov <lav>
Component: setupAssignee: Alexey Gladkov <legion>
Status: CLOSED WORKSFORME QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: 4alt, aen, dd1email, evg, glebfm, hiddenman, imz, kharpost, ldv, legion, mike, mithraen, placeholder, rider, shakirov, swi, vvk, zerg
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 23155    

Description Vitaly Lipatov 2007-05-19 21:50:25 MSD
При входе по ssh переназначения LANG и прочего не происходит в связи с тем, 
что настройки в /etc/sysconfig/i18n "перебивают" эти переменные.
Вообще приоритет, как я понимаю таков:
- берём переменные что по ssh переданы,
если нет
- берём указанное в .i18n,
если нет
- берём указанное в /etc/sysconfig/18n

Собственно, похоже предлагается в случае уже заданной LANG выходить из скрипта 
0lang сразу.
Comment 1 Dmitry V. Levin 2010-05-26 18:39:42 MSD
*** Bug 22182 has been marked as a duplicate of this bug. ***
Comment 2 Dmitry V. Levin 2010-05-26 21:33:23 MSD
Надо будет попробовать...
Comment 3 Repository Robot 2010-05-27 18:20:37 MSD
setup-2.2.13-alt1 -> sisyphus:

* Thu May 27 2010 Dmitry V. Levin <ldv@altlinux> 2.2.13-alt1
- /etc/profile.d/lang.*sh: do not source i18n files if
  non-empty LANG is already set (closes: #11814).
- /etc/services: updated SANE entries (closes: #13071).
- /etc/inputrc: added bindings for xterm ctrl-arrows (closes: #15628).
- /etc/profile.d/tmpdir.*sh: do not create ~/tmp directory (closes: #19014).
- /etc/filesystems: replaced obsolete content with a comment hinting
  on the purpose of this file (closes: #21082).
- /etc/inputrc: added bindings for history search (closes: #22570).
- /etc/securetty: added xvc0 for xen virtual console (closes: #23532).
Comment 4 Vladimir V. Kamarzin 2010-09-17 18:54:00 MSD
+if [ -n "${LANG-}" ]; then
+       sourced=1

Теперь имеем

vvk@home ~ % echo $LANG
ru_RU.UTF-8
vvk@home ~ % su -
Password:
root@home ~ # echo $LANG
ru_RU.UTF-8

В /root/.i18n
LANG=en_US.utf8

По-моему такой фикс совсем не OK.
Comment 5 Dmitry V. Levin 2010-09-17 19:08:28 MSD
(In reply to comment #4)
> +if [ -n "${LANG-}" ]; then
> +       sourced=1
> 
> Теперь имеем
> 
> vvk@home ~ % echo $LANG
> ru_RU.UTF-8
> vvk@home ~ % su -
> Password:
> root@home ~ # echo $LANG
> ru_RU.UTF-8
> 
> В /root/.i18n
> LANG=en_US.utf8
> 
> По-моему такой фикс совсем не OK.

1. Я не использую "su -".
2. Как вы предлагаете удовлетворить несоместимые желания одновременно?  Сделать поведение конфигурируемым?
Comment 6 Vladimir V. Kamarzin 2010-09-20 09:42:24 MSD
(В ответ на комментарий №5)
> 2. Как вы предлагаете удовлетворить несоместимые желания одновременно?  Сделать
> поведение конфигурируемым?

Возможно, переключатель через control не помешает.
Comment 7 Vladimir V. Kamarzin 2010-09-20 09:52:33 MSD
(В ответ на комментарий №5)
> 2. Как вы предлагаете удовлетворить несоместимые желания одновременно?  Сделать
> поведение конфигурируемым?

Возможно, переключатель через control не помешает. Но если делать системную ручку, всё равно надо решить, какое поведение должно быть по умолчанию.

Раз за несколько месяцев никто не поинтересовался этим изменением, значит всех устраивает текущий вариант. А кому нужно переопределение, могут и ~/.bashrc поправить.
Comment 8 Vitaly Lipatov 2010-09-23 17:39:38 MSD
Как-то за прошедшие 2 года я понял, что более предпочительным является обратное предложенному поведение:
- имена локалей могут быть несовместимы между машинами (но это уже вопрос к AcceptEnv в конфиге ssh)
- становиться рутом с нерутовой локалью как-то непривычно и может давать побочные эффекты
Comment 9 Sir Raorn 2010-09-23 17:57:37 MSD
(In reply to comment #8)
> Как-то за прошедшие 2 года я понял, что более предпочительным является обратное
> предложенному поведение:

Поздно, все уже привыкли и активно пользуются.
Comment 10 Andrew Kornilov 2010-10-04 22:11:40 MSD
Не успел еще ощутить все "прелести" такого поведения удаленно, только обновил dekstop, но вот то, что теперь переменную LC_MESSAGES=C в ~/.i18n все дружно игнориуют - удручает. Это что теперь, как раньше редактировать свои .bashrc/.zhrc?

P.S. У меня еще в .i18n прописан LANG, может в этом дело, надо проверить.
Comment 11 Dmitry V. Levin 2010-10-04 22:19:31 MSD
(In reply to comment #10)
> теперь переменную LC_MESSAGES=C в ~/.i18n все дружно игнориуют

Прежде чем делать свои выводы, прочитайте, пожалуйста, сперва всё, что здесь написано.
Comment 12 Andrew Kornilov 2010-10-05 13:02:01 MSD
(В ответ на комментарий №11)
> (In reply to comment #10)
> > теперь переменную LC_MESSAGES=C в ~/.i18n все дружно игнориуют
> 
> Прежде чем делать свои выводы, прочитайте, пожалуйста, сперва всё, что здесь
> написано.
Я все прочитал, но проблема была. С помощью #altlinux, "зубила и такой-то матери" выяснилось, что в случае использования GDM эти настройки в ~/.1i8n игнорируются, не знаю, почему (раньше не игнорировались). Переключился на xdm и заработало. 

Оставляю комментарий для тех, кто тоже столкнется с этой проблемой.
Comment 13 Sir Raorn 2010-10-05 13:05:56 MSD
А точнее, gdm сам выставил локаль, минуя {/etc/sysconfig/,.}i18n
Comment 14 Sir Raorn 2010-10-15 15:33:55 MSD
*** Bug 24314 has been marked as a duplicate of this bug. ***
Comment 15 Anton Farygin 2010-10-15 15:48:16 MSD
поиск есть, но найти не удалось, спасибо хорошему заголовку у этой ошибки.

Дим, надо что-то с этим делать. сейчас приходится на всех серверах править profile.d/lang.sh убирая оттуда игнорирование ~/.i18n
Comment 16 Dmitry V. Levin 2010-10-20 01:07:22 MSD
Сперва тема была "/etc/profile.d/0lang.*sh: изменить приоритет в пользу переменных среды".
Потом, через полгода после того, как изменение было реализовано внедрено,
тему поменяли на "/etc/profile.d/0lang.*sh: изменить приоритет в пользу конфигурационных файлов .i18n".

Когда одни хотят одного, а другие -- другого, то мне, как лично незатронутому этим вопросом, проще ничего не делать.
Так что просьба заинтересованным искать консенсус.
Comment 17 Anton Farygin 2010-10-20 09:05:09 MSD
Дим, уже же нашли консенсунс.

в конфигурационном файле прописать переменную USE_I18N и если она есть, то использовать ~/.i18n, если нет - не использовать.
Comment 18 Anton Farygin 2010-10-20 09:07:59 MSD
Странно что автор предложения по игнорированию локальных настроек отмалчивается.
Comment 19 Dmitry V. Levin 2010-10-20 12:46:07 MSD
(In reply to comment #17)
> в конфигурационном файле прописать переменную USE_I18N и если она есть, то
> использовать ~/.i18n, если нет - не использовать.

В каком конфигурационном файле?
Comment 20 Anton Farygin 2010-10-20 13:11:28 MSD
Можно в том же /etc/sysconfig/i18n, но тогда придётся делать какую-то обвязку, сохраняющую старые значения переменных.
Comment 21 swi 2011-03-16 22:23:14 MSK
приехали, здрасти.
уже месяца 3 сижу на gdm и сегодня после d-u опаньки.
В самом gdm усе русское, но гном уже locale = C
При запуске через login && startx все в положеной utf-8.

Какая зараза где что оторвала?
~/.i18n не имел с принятия в комсомо^Wгода с 2006го.
Comment 22 Dmitry V. Levin 2011-03-17 12:47:15 MSK
Вы предлагаете делать ручки по управлению ручками контроля над ручками?
Я против чрезмерной косвенности.
Comment 23 Lenar Shakirov 2011-09-27 09:43:23 MSK
(В ответ на комментарий №5)
> 1. Я не использую "su -".
> 2. Как вы предлагаете удовлетворить несоместимые желания одновременно?  Сделать
> поведение конфигурируемым?

А это нормально:

login as root
# locale | grep LANG
LANG=POSIX
# su - <username>
$ locale | grep LANG
LANG=POSIX

but if login as <username>
$ locale | grep LANG
LANG=ru_RU.utf8

?
Comment 24 Lenar Shakirov 2011-10-06 16:18:30 MSK
*** Bug 26423 has been marked as a duplicate of this bug. ***
Comment 25 Lenar Shakirov 2011-10-06 16:19:34 MSK
Дмитрий, ответьте, пожалуйста...
Comment 26 Dmitry V. Levin 2011-10-06 16:24:15 MSK
(In reply to comment #23)
> (В ответ на комментарий №5)
> > 1. Я не использую "su -".
> > 2. Как вы предлагаете удовлетворить несоместимые желания одновременно?  Сделать
> > поведение конфигурируемым?
> 
> А это нормально:
> 
> login as root
> # locale | grep LANG
> LANG=POSIX
> # su - <username>
> $ locale | grep LANG
> LANG=POSIX
> 
> but if login as <username>
> $ locale | grep LANG
> LANG=ru_RU.utf8
> 
> ?

Да, я полагаю что это вполне допустимое поведение (если закрыть глаза на то, что su - <username> не вполне безопасная операция).
Comment 27 Dank Bagryantsev 2011-10-07 10:37:57 MSK
(В ответ на комментарий №26)
> Да, я полагаю что это вполне допустимое поведение (если закрыть глаза на то,
> что su - <username> не вполне безопасная операция).

Согласно man su :
"giving the argument flag -, su is instructed to invoke the shell as a login shell". Т.е. по логике, результат su - должен быть аналогичен, как если бы вошли под username с консоли сервера. А сейчас мы имеем другое поведение.
Comment 28 Dmitry V. Levin 2011-10-09 21:11:08 MSK
(In reply to comment #27)
> (В ответ на комментарий №26)
> > Да, я полагаю что это вполне допустимое поведение (если закрыть глаза на то,
> > что su - <username> не вполне безопасная операция).
> 
> Согласно man su :
> "giving the argument flag -, su is instructed to invoke the shell as a login
> shell". Т.е. по логике, результат su - должен быть аналогичен, как если бы
> вошли под username с консоли сервера. А сейчас мы имеем другое поведение.

С другой стороны, результат "su -" аналогичен логину с консоли в той части, которая касается "login shell".  Остальное - это вопрос вариантов трактовки, которых по данному вопросу две.