Предупреждение apt-get: Нет поддержки локали: en_US.utf8
Я получаю эту ошибку каждый раз, когда обновляю систему, используя apt-get. Что означает эта ошибка? Есть идеи как это исправить? (Я использую Ubuntu 11.10)
5 ответов
Обычно эта ошибка означает, что вы могли переключаться между разными языками (локалями) и что-то приводило к ошибочной ошибке.
Вы можете попробовать восстановить свой список языков с помощью
sudo dpkg-reconfigure locales
Для меня результат был:
Generating locales...
en_AG.UTF-8... done
en_AU.UTF-8... done
en_BW.UTF-8... done
en_CA.UTF-8... done
en_DK.UTF-8... done
en_GB.UTF-8... done
en_HK.UTF-8... done
en_IE.UTF-8... done
en_IN.UTF-8... done
en_NG.UTF-8... done
en_NZ.UTF-8... done
en_PH.UTF-8... done
en_SG.UTF-8... done
en_US.UTF-8... up-to-date
en_ZA.UTF-8... done
en_ZM.UTF-8... done
en_ZW.UTF-8... done
Generation complete.
Затем сбросьте ваш местный язык с помощью:
sudo update-locale LANG=en_US.UTF-8
т.е. используйте одно из значений Locale в выводе выше
В моем случае проблема заключалась в том, что /usr/share/initramfs-tools/hooks/root_locale
ожидает увидеть отдельные каталоги локали в /usr/lib/locale
но locale-gen
настроен для создания архивного файла по умолчанию.
Я исправил это, запустив:
sudo locale-gen --purge --no-archive
Я вижу, вы используете ubuntu11.10 (oneric) @2011, хотя приведенные выше ответы могли решить эту проблему в этой версии, предупреждающее сообщение все еще существует, и предоставленные ответы не устранили проблему в моем случае:
После новой установки Ubuntu 14,04 (надежный [Mint 17.1 ISO]) и обновления до ubuntu 18.04 (bionic[Mint 19.3]) с применением всего 6 обновлений. Я проигнорировал постоянное предупреждающее сообщение, так как оно не повлияло на работу моей системы ни при каком обновлении, ни на какие-либо изменения, которые я внес в свое ядро.
Однако озадаченный, я обнаружил следующее:
При ближайшем рассмотрении я обнаружил файл, расположенный по адресу
/usr/share/initramfs-tools/hooks/root_locale
(дата 11 марта 2011 г.!), с которого, как я полагаю,
../hook-functions
(найти в
initramfs-tools
в вышеупомянутых выпусках Ubuntu, найденных здесь и в других!, источник предупреждений, в моем случае, находится здесь:
[ -r /etc/default/locale ] && . /etc/default/locale
[ -z "$ROOT_LOCALE" ] && ROOT_LOCALE=`echo $LANG | sed -e 's/UTF/utf/' -e 's/utf-8/utf8/'`
if [ -n "$ROOT_LOCALE" ] && [ -d /usr/lib/locale/$ROOT_LOCALE ]; then
[ "${verbose}" = "y" ] && echo "Adding locale: $ROOT_LOCALE"
mkdir -p "$DESTDIR/usr/lib/locale"
cp -r /usr/lib/locale/$ROOT_LOCALE "$DESTDIR/usr/lib/locale"
echo "ROOT_LOCALE=$ROOT_LOCALE" > $CONF
echo "export ROOT_LOCALE" >> $CONF
echo "export FSTYPE" >> $CONF
else
echo "Warning: No support for locale: $ROOT_LOCALE" >&2
fi
Обратите внимание, что этот сценарий явно ссылается на
/usr/lib/locale/en_US.utf8
, в моем случае анализируется безуспешно.
На момент публикации этого ответа ни одно из других решений, приведенных выше, не решало проблему с помощью
utf8
в нижнем регистре, а именно в ubuntu 14 > 20,
locale-gen
просто анализирует каждую строку в
/etc/locale.gen
к
localedef
см. справочные страницы Ubuntu locale-gen с 16.04 по 20.04 (и не имеет ни одной из опций, указанных выше), а также
locale.gen
иметь одну запись, используя
utf8
строчные.
Чтобы решить эту проблему:
Сначала проверьте язык, который вы используете в своем дистрибутиве на основе Ubuntu/Debian:
echo $LANG
Затем измените
en_US
ниже на ваш __lang__uage (например,
fr_FR
)
cd /usr/lib/locale
localedef -f UTF-8 -i en_US ./en_US.utf8
Это создает следующую структуру:
ls /usr/lib/locale/en_US.utf8/
LC_ADDRESS LC_IDENTIFICATION LC_MONETARY LC_PAPERLC_COLLATE LC_MEASUREMENT LC_NAME LC_TELEPHONELC_CTYPE LC_MESSAGES LC_NUMERIC LC_TIME
Примечание 1: оба
locale-gen
(сценарий оболочки) и
dpkg-reconfigure locales
(который вызывает
localedef
), просто проанализируйте
/etc/locale.gen
, в версиях Ubuntu 16.04 > 20.04 ваш дистрибутив может предоставлять другие функции.
Примечание 2: я понятия не имею, где
___/usr/share/initramfs-tools/hooks/root_locale___
исходит из, поскольку его нет ни в каких вышеупомянутых выпусках, и можно только предполагать, что он был частью / оставлен после Mint 17.1, ваш дистрибутив может быть другим.
Проблема может исходить из нижнего регистра в "utf8" вместо "UTF8"??
Warning: No support for locale: en_US.utf8
Этот код, похоже, решает проблему.
> sudo update-locale LANG=en_US.UTF-8
> echo $LANG
en_US.UTF-8
Теоретически также можно перейти на местные языки.
Затем "Применить общесистемные" также следует обновить локальный.
Переустановка сработала для меня
sudo apt reinstall locales
Перед запуском вышеуказанной команды я бы увидел это
$ 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
$ sudo dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
...
Generating locales (this might take a while)...
en_AG.UTF-8...[error] cannot open locale definition file `en_GB': No such file or directory
done
en_AU.UTF-8...[error] cannot open locale definition file `en_AU': No such file or directory
...
После переустановки
locales
, я вижу правильный вывод
$ locale -a
C
C.UTF-8
...
en_US.utf8
...
$ sudo dpkg-reconfigure locales
Generating locales (this might take a while)...
...
en_US.UTF-8... done
...
Generation complete.