В /etc/profile.d/lang.sh есть следующий фрагмент: # some ugly back compatibility... should be removed in the future if [ -z \"$RPM_INSTALL_LANG\" ]; then if [ -n \"$LANGUAGE\" ]; then if [ -n \"$LINGUAS\" ]; then RPM_INSTALL_LANG=\"$LANGUAGE:$LINGUAS\" else RPM_INSTALL_LANG=\"$LANGUAGE\" fi else if [ -n \"$LINGUAS\" ]; then RPM_INSTALL_LANG=\"$LINGUAS\" else Unset RPM_INSTALL_LANG fi fi fi В сочетании с /root/.i18n, в котором LANGUAGE=LANG=LC_ALL=LINGUAS=POSIX, это приводит к установке RPM_INSTALL_LANG=POSIX, в результате чего при установке пакетов не устанавливаются файлы локализации. Предлагается заменить этот кусок на: if [ -z \"$RPM_INSTALL_LANG\" ]; then eval `/bin/grep -s ^RPM_INSTALL_LANG /etc/sysconfig/i18n` fi Т.е. при отсутствии явной установки RPM_INSTALL_LANG в ~/.i18n брать его из общесистемной конфигурации, а не из других настроек локализации. --- ---
Я сейчас использую другой подход: в файле /root/.i18n изменена последняя строка на eval `/bin/egrep -s \'^(SYSFONT|RPM_INSTALL_LANG)\' /etc/sysconfig/i18n` ||: Думаю именно этот вариант поместить в очередную версию пакета rootfiles. Соображения?
Раз /root/.i18n входит в пакет rootfiles, в принципе можно и так. Однако это создаст проблемы в следующей ситуации: - Пользователь создал в домашнем каталоге файл .i18n, в котором не вписал RPM_INSTALL_LANG. В результате у него RPM_INSTALL_LANG установится по LANGUAGE. - Этот пользователь дает команду su без \'-\' (или su -c \'rpm -Uvh ....\', или sudo...). Вообще RPM_INSTALL_LANG по своему эффекту более общесистемная переменная, чем LANGUAGE/LC_*. Возможно, имеет смысл требовать ее перекрытия в ~/.i18n в явном виде, а при отсутствии использовать общесистемное значение.
Может быть, ее вообще не надо устанавливать, если она явно не выставлена в одном из i18n-файлов?
Может быть. В этом случае поставится все подряд, но это не так плохо, как неожиданное отсутствие файлов локализации. И, естественно, поменять /root/.i18n, чтобы там все-таки она ставилась.
Fixed in: rootfiles-alt-alt4 initscripts-5.49-ipl32mdk