
我正在運行 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
in/etc/pacman.conf
來節省硬碟空間,如 [Arch wiki] 中所述(https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#Installing_only_content_in_required_languages)
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
編輯
/etc/locale.gen
:取消註解該行:
locale en_US.UTF-8
跑步
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
或者更確切地說,在 Holly Arch Wiki 中: