LINUX.ORG.RU

Проблема с локализацией debian'а

 , ,


1

2

Есть сервер немецкого хостера. На нем стоит debian, причем изначально на немецком. Очень хочется перевести его хотя бы на английский (в идеале на русский), а то я даже сообщений об ошибках не понимаю.

dpkg-reconfigure locales пробовал, пробовал уже править системные файлы... В общем, всё, что нагуглил — всё попробовал. Но по прежнему на locale выдаёт немецкий язык:

LANG=de_DE.utf8

LANGUAGE=de_DE.utf8

LC_CTYPE=«de_DE.utf8»

LC_NUMERIC=«de_DE.utf8»

LC_TIME=«de_DE.utf8»

LC_COLLATE=«de_DE.utf8»

LC_MONETARY=«de_DE.utf8»

LC_MESSAGES=«de_DE.utf8»

LC_PAPER=«de_DE.utf8»

LC_NAME=«de_DE.utf8»

LC_ADDRESS=«de_DE.utf8»

LC_TELEPHONE=«de_DE.utf8»

LC_MEASUREMENT=«de_DE.utf8»

LC_IDENTIFICATION=«de_DE.utf8»

LC_ALL=de_DE.utf8

update: В общем, локаль стоит, как я понимаю, но почему-то не получается настроить её как по умолчанию. Сменил ручками в баше LANG=ru_RU.utf8, LANGUAGE=ru_RU.utf8 — стали отображаться русские сообщения. Но это до первой перезагрузки. Не понимаю, куда прописать, чтобы оно при запуске системы сразу такое было.



Последнее исправление: trikadin (всего исправлений: 4)
Ответ на: комментарий от trikadin

Хм. Вроде правильно. Должно выставить. Раз не выставляет, то, может быть, немчура где-то по пути дальше перекрывает локаль? Попробуй-ка полюбопытствовать в домашней директории своей в ~/.bash_profile, ~/.bashrc и ~/.profile. Нет ли там чего? Если там все нормально, то будет думать.

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

bash_profile не существует, в bashrc всё закомменчено, в profile тоже ничего интересного.

Возможно, нужно уточнить — сижу пока из-под рута (система совсем чистая, ещё ничего на ней не делалось). Вдруг важно.

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

Попробуй удалить вообще немецкую локаль при помощи dpkg-reconfigure locales, оставив русскую, и выстави там же ru_RU.UTF-8 как по умолчанию. Перезагрузись. Сервак полностью твой?

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 3)
Ответ на: комментарий от invokercd

в /etc/locale.gen раскомментить нужные локали

Вообще, все эти операции должна делать «dpkg-reconfigure locales». Я даже специально это проверил. Она и /etc/default/locale прописывает и /etc/locale.gen прописывает, locale-gen запускает. В общем, делает все необходимые действия. Надо только, чтобы топикстартер эти файлы проверил обязательно. А то действительно... может, он в них копался и как-то сильно вручную изменил до неузнаваемости. :)

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Альтернативный вариант: поставить locales-all. /etc/default/locale придётся руками создавать только.

Deleted
()
Ответ на: комментарий от invokercd

В /etc/locale уже всё раскомменчено давно, и программно, и руками перепроверено.

Вариант с дописыванием в bashrc помог. Хотя, конечно, странно, что это можно сделать только скриптом по запуску. Но помогло так помогло.

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

Кириллические шрифты и кодировка у меня стоит, спокойно могу писать на русском и смотреть русские файлы/папки. console-cyrillic, соответственно, стоит, в dpkg-reconfigure locales всё уже выставлял. Он даже помнит эти настройки, то есть, если зайти туда повторно, то всё будет стоят так, как я выставлял. В /etc/default/locale это:

LANG=ru_RU.utf8 LANGUAGE=ru_RU.utf8

В /etc/locale.gen вот это (отрывок, в котором видно, что всё раскомменчено):

# ro_RO.UTF-8 UTF-8 # ru_RU ISO-8859-5 ru_RU.CP1251 CP1251 ru_RU.KOI8-R KOI8-R ru_RU.UTF-8 UTF-8 # ru_UA KOI8-U # ru_UA.UTF-8 UTF-8 # rw_RW UTF-8

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

Вот что выдаёт:

root@server:~# locale -a
C
C.UTF-8
de_DE.utf8
POSIX
ru_RU.cp1251
ru_RU.koi8r
ru_RU.utf8
russian

Да, забыл — сервер полностью мой. Не знаю, правда, точно, как это у хостера реализуется, но думаю, что виртуальной машиной. Хостер — strato.de

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

В /etc/locale уже всё раскомменчено давно, и программно, и руками перепроверено.

А надо закомментить и оставить нужное только.

Вариант с дописыванием в bashrc помог. Хотя, конечно, странно, что это можно сделать только скриптом по запуску. Но помогло так помогло.

Должно работать без дописывания. 100%! Если у тебя действительно все правильно в системных файлах (а это мне пока не совсем ясно, так как много ручного ковыряния было), то проблема, скорее, в том, что немцы в процессе загрузки системы самостоятельно куда-то прописывают установку соей локали. Но прежде чем такое предполагать (так как странный несколько шаг бы был с их стороны), надо все проверить.

У меня такой же Debian. Чтобы поменять локаль, мне не надо никуда лезть. Почисть все свои файлы вручную и сделай dpkg-reconfigure locale. У меня:

1. В dpkg-reconfigure locale помечено звездочкой только ru_RU.UTF-8

2. В файле /etc/default/locale:

LANG=ru_RU.UTF-8

3. В файле /etc/loclale.gen только это (остальное закомментировано)

ru_RU.UTF-8 UTF-8

Все эти файлы прописываются при переконфигурировании dpkg-reconfigure locale и генерируется локаль.

Я специально проверил смену локали на ru_RU.KOI8-R - все меняется. Еще раз перепроверь все.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Поскольку редактировать сообщения я не могу (может, не умею, конечно), то напишу ещё один, поскольку в том всё записалось в строчку (моя вина, не проверил предпросмотром). Итак:

root@server:~# cat /etc/default/locale
LANG=ru_RU.utf8
LANGUAGE=ru_RU.utf8
root@server:~# cat /etc/locale.gen
de_DE.UTF-8 UTF-8
...
# ro_RO.UTF-8 UTF-8
# ru_RU ISO-8859-5
ru_RU.CP1251 CP1251
ru_RU.KOI8-R KOI8-R
ru_RU.UTF-8 UTF-8
# ru_UA KOI8-U
# ru_UA.UTF-8 UTF-8
...
trikadin
() автор топика
Ответ на: комментарий от Zubok

Вот, я честно говоря, сейчас думаю, что надо в /etc/locale.gen закомментировать немецкую локаль. Ща попробую.

Насчёт того, что немцы при установке что-то куда-то прописывают не системными способами — думал о таком, но вроде там чистая система ставится.

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

Вот, я честно говоря, сейчас думаю, что надо в /etc/locale.gen закомментировать немецкую локаль. Ща попробую.

Вообще, это надо (еще раз!) через dpkg-reconfigure делать. Там галочки пробелом снять с лишних, а потом по вводу он попросит выбрать умолчательную локаль.

Если ты сам ковыряешь /etc/locale.gen, то запусти потом locale-gen.

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

Вот сам посмотри! У тебя LANG=ru_RU.utf8 (в /etc/default/locale) не соответсвует ru_RU.UTF-8 из local.gen. Видишь же, что разные названия. ТЫ там сам, похоже, наковырял до беспамятства. Переконфигурируй нормально.

В штатной ситуации число активных локалей не важно. Важно, какая по умолчанию. У тебя по умолчанию прописана вообще какая-то левая (не utf8, надо UTF-8)

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от trikadin
~$ cat /etc/locale.gen | grep -v ^\#


en_US ISO-8859-1
en_US.UTF-8 UTF-8
ru_RU ISO-8859-5
ru_RU.CP1251 CP1251
ru_RU.UTF-8 UTF-8
conformist ★★★
()
Ответ на: комментарий от Zubok

Да я через dpkg-reconfigure и сделал. Потом проверил руками /etc/locale.gen и запустил locale-gen. Перезагрузился. Одна фигня. Правда, на этот раз он выдал мне при логине на сервер вот это:

Linux server.server.net 3.2.41-042stab092.3 #1 SMP Sun Jul 20 13:27:24 MSK 2014 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Oct  2 13:04:05 2014 from 37.204.250.253
-bash: warning: setlocale: LC_ALL: cannot change locale (de_DE.utf8)
root@server:~# linux

Я про строчку -bash: warning: setlocale: LC_ALL: cannot change locale (de_DE.utf8). Черт его знает, может, и прописывают немцы где свою локаль хитро?

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

Итак, я полностью удалил всё из /etc/default/locale (вообще ничего там не было), потом запустил dpkg-reconfigure locales, снял галочки со всего, проверил /etc/locale.gen — там всё закомментировано, запустил locale-gen (знаю, что не нужно после dpgk-reconfigure, но всё же), перезагрузился, ещё раз запустил dpkg-reconfigure locales, выбрал одну кодировку — ru_RU.UTF-8, выбрал её как дефолтную, схоронил, перезагрузился. Начал с нуля, короче. Сейчас всё выглядит так:

root@server:~# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=de_DE.utf8
LANGUAGE=de_DE.utf8
LC_CTYPE="de_DE.utf8"
LC_NUMERIC="de_DE.utf8"
LC_TIME="de_DE.utf8"
LC_COLLATE="de_DE.utf8"
LC_MONETARY="de_DE.utf8"
LC_MESSAGES="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"
LC_ALL=de_DE.utf8
root@server:~# locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
C
C.UTF-8
POSIX
ru_RU.utf8
root@server:~# cat /etc/default/locale

LANG=ru_RU.UTF-8
root@server:~# cat /etc/locale.gen | grep -v ^\#
ru_RU.UTF-8 UTF-8
root@server:~#

При этом сервер всё ещё на немецком, хотя, по идее, её даже в системе нет. Может, попробовать localepurge?

root@h2349533:~# linux
-bash: linux: Kommando nicht gefunden.

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

Сейчас вроде все правильно. Где-то немчура в /etc самовольно перекрывает локаль на какую-то свою. Надо бы найти.

Чтобы долго не копаться, прогрепай рекурсивно /etc на пердмет «de_DE.utf8». Есть чо?

Может, попробовать localepurge?

Попробуй. А то мало ли чего они туда напихали. Поведение какое-то неестественное.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Чтобы долго не копаться, прогрепай рекурсивно /etc на пердмет «de_DE.utf8». Есть чо?

Ага, есть. В /etc/profile в конце было дописано:

export LANG="de_DE.utf8"
export LANGUAGE="de_DE.utf8"
export LC_ALL="de_DE.utf8"

Закомментировал, перезагрузился — работает. Локаль русская, в locale тоже всё правильно... В общем, ура. Не знаю, нафиг они так сделали, но спасибо большое.

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

Попробую написать им в саппорт об этой штуке.

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

Не знаю, нафиг они так сделали, но спасибо большое.

У меня только какое-то предположение есть. Возможно, они используют какую-то своеобразную кодировку и настаивают на ее использовании немецкими пользователями. Может, их стандартная не устраивает по каким-то причинам. Но это так - предположения.

Zubok ★★★★★
()

Так всегда, понаставят из шаблонов, наковыряют и ищи что там.

Поэтому если там не контейнеры то лучше ставить систему из своего образа.

invokercd ★★★★
()
Последнее исправление: invokercd (всего исправлений: 1)
Ответ на: комментарий от invokercd

Там список операционных систем, которые можно поднять. И всё. Ещё настройки криво реализованы — я так и не смог найти, где добавить свою.

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

Если вменяемый сапорт - попросить их указать образ, это может быть даже ссылка с зеркала Debian (смотря как у них там все организовано)

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

По ходу, да. Придётся плотно общаться с саппортом. Я тут ещё /etc/apt/sources.list посмотрел. Там всё плохо:

deb ftp://ftp.stratoserver.net/pub/linux/debian/ wheezy main contrib non-free
deb ftp://ftp.stratoserver.net/pub/linux/debian-security/ wheezy/updates main contrib non-free
trikadin
() автор топика
Ответ на: комментарий от trikadin

Да обычное зеркало какое-то, главное что бы скорость была нормальная и синк делался вовремя. Хотя ftp не лучший выбор...

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