svicer
А есть в хоморазделе ~/.pam_environment? И что в нем?
Нету, я весь skel переделываю в установленной системе под свои нужды.
nafanja
а не лучше ли было все что ты дописал туда в /etc/bash.bashrc засунуть?
да, скорее всего лучше.
vasek
Насколько я понимаю имеется два случая установки/переустановки локали в системе
Если я правильно понял вопрос, то нет, я все делаю в рабочей системе уже. Вся моя установка сводится к нескольким командам типа
cfdisk, mkfs, mount, pacstrap, genfstab, arch-chroot, grub-install, grub-mkconfig, exit, reboot :)
Всю остальную настройку я произвожу уже в установленной системе. Т.е. генерация локали, и выбор LANG через systemd
nafanja
покажи
cat /etc/profile.d/locale.sh
cat /etc/profile

locale.sh
/etc/profile
Я бы советовал использовать ext4 на lvm. Плюсы очевидны - удобная манипуляция с размером томов, горячая миграция, снапшетинг, стабильность работы.
По свапу, могу посоветовать вот что: создать либо файлом, либо разделом максимум мегабайт на 100. Некоторый софт, судя по советам RH просто начинает глючить если не видит (просто наличие) ни одного активного свопа. Лично я с таким на серверах никогда не сталкивался, поэтому можно придерживаться данного совета только из каких-либо эстетических целей. А по самой архитектуре скажу вот что: если сервер начинает свопится - это уже извини меня :), как говорится, явный просчет в архитектуре, косяк админа в том что это своевременно не мониторится, нет политик ограничения на агрессивные приложения, сами приложения не настроены. В любом случае, как показывает практика, если сервер начинает свопится сам сервис адекватно не работает, деградирует и свап в этом деле мало чем может помочь.
В итоге я бы сделал малютку-своп чтобы было; сделал раздел под boot, высесенный из lvm. далее сделал бы группу томов и том для корня, в общем остального. А далее настроил бы правильно работу сервисов и служб и в этом я очень рекомендую присмотреться к runit, который прост и умеет много чего, включая ограничение на процессорное время, лимиты по памяти, который будет сам следить за этим, посылать нужный тебе sig*, чтобы либо перезапустить сервис мягко, либо прибить и запустить, в общем этот супервизор очень сильно поможет избежать различных критических ситуаций, которые могут привести к тому что сервер просто перестанет быть доступным удаленно, из-за того что у него закончилась память.
lampslave
Просто не используйте команды systemd (для локали, времени, хоста и т.п.), они то ли сами кривые, то ли пока ещё плохо поддерживаются. А ещё после настройки желательно перезагружаться, чтобы всё применилось как полагается.

а какая разница, если даже вручную прописанный файл /etc/locale.conf не читается системой? locale выдавал совершенно левые настройки, не соответствующие /etc/locale.conf, и только экспорт в переменные окружения помогли всей остальной системе и приложениям увидеть локаль.
http://archlinux.org.ru/forum/topic/16251/?page=1#post-171443
Небольшая заметка, надеюсь кому-нибудь поможет.

На днях обсуждалась тема по поводу проблем с локализацией XFCE. Вроде и прописано все как надо, а язык интерфейса не меняется.

Сегодня ставил на ноут Arch и столкнулся со следующим не стандартным поведением.

Пересказывать вики в подробностях я не буду, можно почитать.

Переменные окружения LC_* получают свое значение через setlocale по следующему принципу:
1. Проверяют задана ли LC_ALL, которая переопределяет все другие переменные
2. Проверяется, заданы ли значения явно, если заданы, присваивается соответствующее значение.
3. Если явно не заданы, Проверяется LANG и если LANG задана, то присваивают себе ее значение.
4. Если ничего не подходит, получают стандартное значение.

Об этом можно почитать в man 7 locale или на вики:
LANG: default locale
The locale set for this variable will be used for all the LC_* variables that are not explicitly set.
LANG задает локаль по умолчанию, значение заданное в этой переменной используется во всех LC_*, если они явно не заданы.

Теперь смотрим что делал я.
1. Расcкомментировал нужные строчки в /etc/locale.gen
$ egrep "^[^#]" /etc/locale.gen
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
2. Сгенерировал локали:
$ locale-gen
Generating locales...
  en_US.UTF-8... done
  ru_RU.UTF-8... done
3. Выбрал нужную локаль
localectl set-locale LANG=ru_RU.UTF-8
Все это стандартные действия, выполняемые мной на момент первого запуска установленного арча.
Когда я поставил i3wm и часть приложений они запустились с англоязычным интерфейсом. Сразу посмотрель что у меня с LANG

 $ echo $LANG
 en_US.utf8

Проверил вручную что там задал systemd

$ cat /etc/locale.conf
LANG=ru_RU.UTF-8

$ localectl status
System Locale: LANG=ru_RU.UTF-8
		LC_CTYPE=en_US.utf8
		LC_NUMERIC=en_US.utf8
		LC_COLLATE=C
		LC_MONETARY=en_US.utf8
		LC_MESSAGES=en_US.utf8
		LC_PAPER=en_US.utf8
		LC_NAME=en_US.utf8
		LC_ADDRESS=en_US.utf8
		LC_TELEPHONE=en_US.utf8
		LC_MEASUREMENT=en_US.utf8
		LC_IDENTIFICATION=en_US.utf8

Но как интерпретировать эти данные? Ведь LANG задана, а вручную я LC_* не задавал. А в выводе явно отображаются LC_*

Смотрю порсто locale

$ locale
	LANG=en_US.utf8
	LC_CTYPE=
	LC_NUMERIC=
	LC_TIME=
	LC_COLLATE=C
	LC_MONETARY=
	LC_MESSAGES=
	LC_PAPER=
	LC_NAME=
	LC_ADDRESS=
	LC_TELEPHONE=
	LC_MEASUREMENT=
	LC_IDENTIFICATION=
	LC_ALL=

Уже интересней? systemd показывает одни настройки локали, locale - другие.
Решаю выставить принудительно все настройки и перезагружаюсь.

$ locale > /etc/locale.conf
$ vim $_
$ cat $_
	LANG=ru_RU.UTF-8
	LC_CTYPE=
	LC_NUMERIC=
	LC_TIME=
	LC_COLLATE=C
	LC_MONETARY=
	LC_MESSAGES=
	LC_PAPER=
	LC_NAME=
	LC_ADDRESS=
	LC_TELEPHONE=
	LC_MEASUREMENT=
	LC_IDENTIFICATION=
	LC_ALL=

Проверяю:
$ echo $LANG
  en_US.utf8

$ localectl status
   System Locale: LANG=ru_RU.UTF-8
                     LC_COLLATE=C

Теперь с localectl все нормально. Смотрю вывод locale
$ locale
  LANG=en_US.utf8
	LC_CTYPE="en_US.utf8"
	LC_NUMERIC="en_US.utf8"
	LC_TIME="en_US.utf8"
	LC_COLLATE=C
	LC_MONETARY="en_US.utf8"
	LC_MESSAGES="en_US.utf8"
	LC_PAPER="en_US.utf8"
	LC_NAME="en_US.utf8"
	LC_ADDRESS="en_US.utf8"
	LC_TELEPHONE="en_US.utf8"
	LC_MEASUREMENT="en_US.utf8"
	LC_IDENTIFICATION="en_US.utf8"
	LC_ALL=

WTF? Что происходит - непонятно.
Пробовал задавать пользовательские настройки локали в ~/.config/locale.conf - не помогло, такое ощущение что файл просто не читался.

Решил проблему следующим образом:
 $ cat << EOF | sudo tee --append /etc/profile
export LANG=ru_RU.UTF-8
export LC_CTYPE=
export LC_NUMERIC=
export LC_TIME=
export LC_COLLATE=C
export LC_MONETARY=
export LC_MESSAGES=
export LC_PAPER=
export LC_NAME=
export LC_ADDRESS=
export LC_TELEPHONE=
export LC_MEASUREMENT=
export LC_IDENTIFICATION=
export LC_ALL=
EOF

На сим был таков. Все заработало, но это неприятный костыль, причины которого до сих пор не понятны. Кто знает как это решить "правильно" сообщите. На двух системах, где тоже установлен archlinux при стандартном localectrl set-locale LANG=ru_RU.UTF-8 все работает и всегда работало с момента перехода на systemd на множестве инсталляций archlinux. Мракобесие, однако.
удали профиль xfce полностью, если /home/user чистый, вообще снеси ~/.config, есть такая проблема, проявляющаяся в том, что если локаль не задана до первого запуска XFCE, то потом он иногда локаль сам не меняет. Причем от чего конкретно зависит подхватит он ее или нет - неизвестно.
vasek
Если это в мой адрес, то зря ........
нет, это к Aivar)