Як зменшити розмір локалі-архіву?


18

У мене є потреба зменшити розмір locale-archiveфайлу в деяких моїх системах RHEL6.

Ось цей файл у моїй системі:

[root@-dev-007 locale]# ls -l
total 96800
-rw-r--r--. 1 root root 99158704 Sep  9 15:22 locale-archive
-rw-r--r--. 1 root root        0 Jun 20  2012 locale-archive.tmpl

Тому я це зробив ...

[root@-dev-007 locale]# localedef --list | grep zh_CN
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

... тож я подумав, що можу так позбутися zh_CN...

[root@-dev-007 locale]# localedef --delete-from-archive zh_CN

... і я бачу, zh_CNбільше не перераховується так, як так ...

[root@-dev-007 locale]# localedef --list | grep zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

... але розмір locale-archiveне зменшується ...

[root@-dev-007 locale]# ls -l  
total 96800
-rw-r--r--. 1 root root 99158704 Sep  9 17:16 locale-archive
-rw-r--r--. 1 root root        0 Jun 20  2012 locale-archive.tmpl

... чи потрібно ще щось робити?

Відповіді:


24

Спочатку ви можете видалити всі непотрібні локалі, виконавши:

$localedef --list-archive | grep -v -i ^en | xargs localedef --delete-from-archive

Де ^enможна замінити місце, яке ви хочете зберегти

Потім

$build-locale-archive

Якщо це дає помилку, подібну до

$build-locale-archive
/usr/sbin/build-locale-archive: cannot read archive header

Потім спробуйте це

$mv /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
$build-locale-archive

Якщо це все-таки не вдається, перевірте свою версію. Відповідно до цієї сторінки, новіші версії не мають необхідних файлів для відновлення архіву з метою економії місця. Вам потрібно буде бігти

yum reinstall glibc-common

У пізніших випусках Red Hat Enterprise Linux ви можете скористатися dnfподібним додатком.


3
Я помітив, хоча, що я втрачаю своє ssh-з'єднання з хостом, коли виконую build-locale-archive... будь-який спосіб запобігти цьому?
Червоний крикет

2
Я б обережно намагався це зробити. Зламав мій сервер CentOS і провів у мене 30 хвилин, щоб знайти рішення. unix.stackexchange.com/questions/246705/…
PJ Brunet

dnf in rhel ??? Напевно, ви маєте на увазі yum ;-)
Dani_l

1

На Amazon Linux

  1. Видаліть невикористані архіви з локально-архіву. Ця команда видаляє всі, крім тих, що починаються з en.

    localedef --delete-from-archive $(localedef --list-archive | grep -v -i ^en | xargs)
    
  2. Скопіюйте файл locale-archive (із видаленими локалями) у новий файл locale-archive.tmpl

    cp /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
    
  3. Запустіть build-locale-archive

    build-locale-archive
    

Примітка: Якщо ви запускаєте build-locale-archive, він нулює файл .tmpl після кожного запуску, і коли ви запускаєте його знову, ви побачите помилку:

build-locale-archive: cannot read archive header

Ви можете отримати копію файлу locale-archive.tmpl або скопіювавши поточний локал-архів у locale-archive.tmpl, або завантаживши та розпакувавши glibc-common. Якщо ви використовуєте за замовчуванням файл locale-archive.tmpl з RPM glibc-спільного і запустите build-locale-archiveпроти нього, він створить повний (~ 102MB) локал-архів. Вам потрібно повторити вищезазначені дії, щоб отримати архів менших розмірів.

У наведеному вище випадку видалення всіх локалів, за винятком en_ *, мій мовний архів перейшов від 102MB до 3,4MB

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.