Jak zmniejszyć rozmiar archiwum regionalnego?

18

Muszę zmniejszyć rozmiar locale-archivepliku w niektórych moich systemach RHEL6.

Oto ten plik w moim systemie:

[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

Więc zrobiłem to ...

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

... więc pomyślałem, że mogę się zh_CNtak pozbyć ...

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

... i widzę, zh_CNże nie ma już takiej listy ...

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

... ale rozmiar locale-archivenie zmniejsza się ...

[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

... czy jest coś jeszcze, co muszę zrobić?

Red Cricket
źródło

Odpowiedzi:

24

Możesz najpierw usunąć wszystkie niepotrzebne ustawienia narodowe, wykonując:

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

Gdzie ^enmożna zastąpić lokalizacją, którą chcesz zachować

Następnie

$build-locale-archive

Jeśli daje to błąd podobny do

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

Następnie spróbuj tego

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

Jeśli to nadal nie powiedzie się, sprawdź swoją wersję. Według tej strony nowsze wersje nie mają plików niezbędnych do przebudowania archiwum w celu zaoszczędzenia miejsca. Musisz biec

yum reinstall glibc-common

W późniejszych wersjach systemu Red Hat Enterprise Linux możesz używać dnfpodobnej aplikacji.

Joel Taylor
źródło
3
Zauważyłem jednak, że tracę połączenie ssh z hostem, kiedy wykonuję build-locale-archive... jakikolwiek sposób, aby temu zapobiec?
Red Cricket,
2
Starałbym się tego spróbować. Zepsułem mój serwer CentOS i zajęło mi 30 minut, aby znaleźć rozwiązanie. unix.stackexchange.com/questions/246705/…
PJ Brunet
dnf in rhel ??? Na pewno masz na myśli mniam ;-)
Dani_l
1

Na Amazon Linux

  1. Usuń nieużywane archiwa z archiwum ustawień regionalnych. To polecenie usuwa wszystkie oprócz tych rozpoczynających się od en.

    localedef --delete-from-archive $(localedef --list-archive | grep -v -i ^en | xargs)
    
  2. Skopiuj plik locale-archive (z usuniętymi locale), aby był nowym plikiem locale-archive.tmpl

    cp /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
    
  3. Uruchom kompilację-locale-archiwum

    build-locale-archive
    

Uwaga: Jeśli uruchomisz build-locale-archive, zeruje on plik .tmpl po każdym uruchomieniu, a po ponownym uruchomieniu zobaczysz błąd:

build-locale-archive: cannot read archive header

Możesz uzyskać kopię pliku locale-archive.tmpl, kopiując bieżące archiwum locale do locale-archive.tmpl lub pobierając i rozpakowując glibc-common. Jeśli użyjesz domyślnego pliku locale-archive.tmpl z typowego RPM glibc i uruchomisz build-locale-archivego, utworzy ono pełne (~ 102 MB) archiwum regionalne. Powtórz powyższe kroki, aby uzyskać archiwum o mniejszym rozmiarze.

W powyższym przypadku usunięcie wszystkich ustawień narodowych oprócz en_ * tych, które moje archiwum ustawień narodowych zwiększyło się ze 102 MB do 3,4 MB

James McDonald
źródło