как мне удалить все языковые пакеты, которые мне не нужны

12

Я только что заметил, что у /usr/share/helpменя есть файлы справки Ubuntu на 70 разных языках. Я только говорю 2, и я действительно только вычисляю в одном. Я также заметил, что он полон неработающих символических ссылок на / usr / share / help-langpack.

Я просто хочу избавиться от всех языков, которые мне не нужны. Как я могу сделать это, не становясь все rm -rсчастливым? Я предпочитаю искать способ сделать это без установки каких-либо новых пакетов, так как моя главная цель - избавиться от лишних вещей на моей машине. Я хотел бы найти способ сделать это предпочтительно с помощью dpkg или apt.

blanket_cat
источник
1
Эти символические ссылки являются частью установки с целью избежать установки файлов справки на всех языках на всех компьютерах. Так что да, есть довольно много «битых» символических ссылок, но это лучше, чем файлы справки, верно? Мой совет: не беспокойся. Симлинки принадлежат различным пакетам, и если вы удалите их, они появятся снова при следующем обновлении соответствующего пакета.
Гуннар Хьялмарссон

Ответы:

11


Вы можете проверить, какие локали генерируются и настраиваются в вашей системе, используя команду locale:

  • locale ... перечислить текущую конфигурацию локали
  • locale -a ... перечисляет все локали, которые были сгенерированы в вашей системе
  • locale -a -v ... перечислить все локали и показать полезную дополнительную информацию (например, имена каталогов, которые содержат файлы данных с информацией о локалях)

Последняя команда из приведенного выше показывает, что все сгенерированные локали находятся в /usr/lib/locale/, и вы можете удалить любой из них, если он не нужен. Каждый пакет информации о локали представляет собой каталог, содержащий текстовые файлы и другие каталоги.

Все локали, которые вы хотите, чтобы ваша система поддерживала, перечислены в текстовых файлах в /var/lib/locales/supported.d/. Эти файлы имеют два столбца, языковой тег и карту символов.

Я хочу, чтобы моя система знала только американский-английский, поэтому у меня есть только один файл с именем en, который содержит только одну строку:

en_US UTF-8

Сообщения об ошибках
Если при выдаче команды локали отображаются сообщения об ошибках, например:

locale: Cannot set LC_ALL to default locale: No such file or directory

убедитесь, что файл /etc/default/localeсуществует и имеет правильное содержимое, например:

LANG="en_US"
LANGUAGE="en_US:en"

Избавьтесь от ненужных языковых данных - шаг за шагом

Теперь мы знаем все необходимые детали, чтобы начать очистку информации о локали нашей системы:

  1. Отредактируйте файл (ы) локали в /var/lib/locales/supported.d/и удалите все ненужные локали (по одной локали на строку)
  2. Создание и редактирование /etc/default/locale(см. Пример выше)
  3. Удалить все сгенерированные данные локали: rm -rfv /usr/lib/locale/*
  4. Повторно сгенерируйте новые локали: locale-gen

Это все! Перезагрузите компьютер, чтобы изменения вступили в силу. Затем выполните один или несколько приведенных выше примеров команды locale, чтобы убедиться, что результат соответствует ожидаемому.

~# locale
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
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=
~# 
~# locale -a -v
locale: en_US.utf8      directory: /usr/lib/locale/en_US.utf8
-------------------------------------------------------------------------------
    title | English locale for the USA
   source | Free Software Foundation, Inc.
  address | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
    email | bug-glibc-locales@gnu.org
 language | English
territory | USA
 revision | 1.0
     date | 2000-06-24
  codeset | UTF-8

Существует пакет для Debian / Ubuntu , который может позаботиться о удалении локалей и локалях связанных файлов (например , страницы человека): localepurge. Вы можете установить / запустить его, выпуская:

sudo apt-get install localepurge

После установки вы должны запустить это:

dpkg --configure localepurge

чтобы убедиться, что ваши языковые настройки установлены правильно.

чтобы запустить его вручную после установки (хотя на самом деле это не нужно, так как он должен запускаться после каждого dpkgзапуска автоматически), вы можете просто сделать:

sudo localepurge

Тем не менее, прочитайте man-страницу перед использованием. Если вы можете сделать свои вещи без этого, вероятно, безопаснее отпустить.

с этого форума

ссылка:
1. LocaleConf в официальной документации
2. Справочная страница по Linux
3. Локаль в википедии
4. Человек по локальной сети

αғsнιη
источник
Спасибо за предложение, если я не могу найти способ сделать это с тем, что уже установлено на моем компьютере, я обязательно воспользуюсь этим.
blanket_cat
1
@knotech Почему бы вам просто не установить его, запустить и удалить его. Не уверен, почему вы обеспокоены установкой пакета.
Брайан Грэм
1
@knotech см. официальную документацию help.ubuntu.com/community/LocaleConf .
αғsнιη
Извините, но я не думаю, что localpurge каким-либо образом решает вопросы OP.
Гуннар Хьялмарссон
1
ОП спросил о языковых пакетах ... Но, если он также заинтересован в удалении избыточных локалей, зачем устанавливать localpurge? Почему не просто locale-gen --purge?
Гуннар Хьялмарссон
3

Что касается собственно установленных языков, перейдите в Параметры системы -> Language Support и нажмите Install / Remove Languages ... кнопку. Затем снимите флажки с языков, которые вам не нужны.

Что касается символических ссылок /usr/share/help, смотрите мой комментарий к вашему вопросу.

Гуннар Хьялмарссон
источник