Предупреждение 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.
Другие вопросы по тегам