Как исправить отсутствующие файлы локали в Manjaro?

Как исправить отсутствующие файлы локали в Manjaro?

Я использую Manjaro Gnome и установил некоторые обновления с помощью менеджера пакетов. С тех пор я получаю эти сообщения в консоли:

manpath: can't set the locale; make sure $LC_* and $LANG are correct
(anon):12: character not in range
manpath: can't set the locale; make sure $LC_* and $LANG are correct

Запуск 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=en_US.UTF-8
LC_CTYPE=
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

При запуске sudo locale-genя получаю сообщение об ошибке, что файлы или каталоги не существуют.

Generating locales...
  de_DE.UTF-8...failed to set locale!
[error] cannot open locale definition file `i18n_ctype': No such file or directory

de_DE.UTF-8 UTF-8когда я закомментирую /etc/locale.gen(тогда единственная незакомментированная строка — это en_US.UTF-8 UTF-8), я получаю:

Generating locales...
  en_US.UTF-8...failed to set locale!
[error] cannot open locale definition file `en_GB': No such file or directory

Это содержание /usr/share/i18n/locales:

de_DE                  translit_combining
en_US                  translit_compat
i18n                   translit_font
iso14651_t1            translit_fraction
iso14651_t1_common     translit_hangul
iso14651_t1_pinyin     translit_narrow
translit_circle        translit_neutral
translit_cjk_compat    translit_small
translit_cjk_variants  translit_wide

Итак, похоже, что файлы действительно en_GBотсутствуют i18n_ctype(хотя я не уверен, должны ли они быть в этой папке)

Также, если я пойду вНастройки->Регион и язык, я не могу изменитьЯзык(там написано Unspecified [ANSI_X3.4-1968]. Если я нажму на него, то в списке нечего будет выбратьВыберите языкнеожиданно возникнуть.

Я нашел в сети, что проблема может быть в glibc(и, согласно истории, glibcбыла переустановлена ​​во время обновления, которое я запустил [2020-08-11T18:49:33+0200] [ALPM] reinstalled glibc (2.31-5)). Однако я не знаю, как это исправить. В менеджере пакетов нет кнопки переустановки для glibc, и я не хочу проводить никаких экспериментов, которые могут закончиться еще большим беспорядком.

Есть ли способ переустановить/сбросить языковые файлы?

Обновлять

Я использую NoExtractего /etc/pacman.confдля экономии места на жестком диске, как описано в [Arch wiki] (https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#Установка_только_контента_на_необходимых_языках)

NoExtract = usr/share/help/* !usr/share/help/en*
NoExtract = usr/share/gtk-doc/html/*
NoExtract = usr/share/locale/* usr/share/X11/locale/* usr/share/i18n/* opt/google/chrome/locales/*
NoExtract = !*locale*/en*/* !usr/share/i18n/charmaps/UTF-8.gz !usr/share/*locale*/locale.*
NoExtract = !usr/share/*locales/en_US !usr/share/*locales/i18n !usr/share/*locales/iso*
NoExtract = !usr/share/*locales/trans*
NoExtract = !*locale*/de*/* !usr/share/i18n/charmaps/UTF-8.gz !usr/share/*locale*/locale.*
NoExtract = !usr/share/*locales/de_DE !usr/share/*locales/i18n !usr/share/*locales/iso*
NoExtract = !usr/share/*locales/trans*
NoExtract = usr/share/qt4/translations/*
NoExtract = usr/share/man/* !usr/share/man/man*
NoExtract = usr/share/vim/vim*/lang/*
NoExtract = usr/lib/libreoffice/help/en-US/*

Интересно, является ли это частью проблемы, возможно, при переустановке glibc некоторые файлы были пропущены.

решение1

  1. Редактировать /etc/locale.gen:

    Раскомментируйте строку с вашим:

    locale en_US.UTF-8
    
  2. бегатьsudo locale-gen

Кредит:https://nanxiao.me/en/fix-locale-configuration-issue-on-arch-linux/

решение2

Теперь я нашел решение. Я не думаю, что это лучший способ, но, похоже, он мне подходит.

Я скачалпакет glibcи вручную скопировал отсутствующие файлы ( en_GBи i18n_ctype) в /usr/share/i18n/locales/.

А потом бегиsudo locale-gen

решение3

Вы можете вернуть его, /etc/locale.genпереустановив glibcпакет. Это создаст новый файл при установке.

решение4

В моем случае проблема была вызвана тем KDE Plasma Settings Manager, что я настроил локаль на несуществующую конфигурацию.

Во время установки Manjaro я выбрал Finland/Englishтам, потому что он был доступен. Почему бы и нет? Он решает, fi_EN.UTF-8что оказывается по меньшей мере бессмыслицей, так как glibcне содержит такого комбо.

Вы можете составить список glibcязыков, проверяющих файлы пакетов, следующим образом:

pacman -Ql glibc | grep fi_

Что в моем случае показало эти два:

glibc /usr/share/i18n/locales/fi_FI
glibc /usr/share/i18n/locales/fi_FI@euro

fi_FIправильный, а не ни то, ни fi_ENдругое fi_US. Позор тебе, Плазма.

Замените grep fi_в команде выше, чтобы найти нужный язык, например, для польского: grep pl_, немецкого: grep de_и т. д.

Затем сравните его с результатом localeвызова команды. В моем случае мне нужно было исправить его, отредактировав /etc/locale.gen. Вы можете следовать устранению неполадок Manjaro:

https://wiki.manjaro.org/index.php/Locale

Или, скорее, в Википедии Холли Арч:

https://wiki.archlinux.org/title/locale

Связанный контент