Bagaimana cara mengurangi ukuran arsip lokal?

18

Saya perlu mengurangi ukuran locale-archivefile di beberapa sistem RHEL6 saya.

Ini file di sistem saya:

[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

Jadi saya melakukan ini ...

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

... jadi saya pikir saya bisa menyingkirkan zh_CNseperti ...

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

... dan saya bisa melihat zh_CNtidak masuk daftar lagi seperti begitu ...

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

... tetapi ukuran locale-archivetidak semakin kecil ...

[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

... adakah hal lain yang perlu saya lakukan?

Kriket Merah
sumber

Jawaban:

24

Pertama-tama Anda dapat menghapus semua lokal yang tidak dibutuhkan dengan melakukan:

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

Di mana ^endapat digantikan oleh lokal yang ingin Anda simpan

Kemudian

$build-locale-archive

Jika ini memberi Anda kesalahan mirip dengan

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

Lalu coba ini

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

Jika itu masih gagal, periksa versimu. Menurut halaman ini, versi yang lebih baru tidak memiliki file yang diperlukan untuk membangun kembali arsip untuk menghemat ruang. Anda harus berlari

yum reinstall glibc-common

Dalam rilis selanjutnya dari Red Hat Enterprise Linux, Anda dapat menggunakan dnf, aplikasi serupa.

Joel Taylor
sumber
3
Namun saya perhatikan bahwa saya kehilangan koneksi ssh ke host ketika saya menjalankan build-locale-archive... cara apa pun untuk mencegah ini?
Red Cricket
2
Saya akan berhati-hati mencoba ini. Pecahkan server CentOS saya dan butuh waktu 30 menit untuk mencari solusinya. unix.stackexchange.com/questions/246705/…
PJ Brunet
dnf in rhel ??? Tentunya maksud Anda yum ;-)
Dani_l
1

Di Amazon Linux

  1. Hapus arsip yang tidak digunakan dari arsip lokal. Perintah ini menghapus semua kecuali yang dimulai dengan en.

    localedef --delete-from-archive $(localedef --list-archive | grep -v -i ^en | xargs)
    
  2. Salin file arsip-lokal (dengan lokal yang dihapus) menjadi file locale-archive.tmpl yang baru

    cp /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
    
  3. Jalankan build-locale-arsip

    build-locale-archive
    

catatan: Jika Anda menjalankan build-locale-arsipkanlah nol file .tmpl setelah setiap kali dijalankan dan ketika Anda menjalankannya lagi Anda akan melihat kesalahan:

build-locale-archive: cannot read archive header

Anda bisa mendapatkan salinan file locale-archive.tmpl baik dengan menyalin arsip lokal saat ini ke locale-archive.tmpl atau dengan mengunduh dan membongkar glibc-common. Jika Anda menggunakan file locale-archive.tmpl default dari RPM glibc-common dan menjalankannya build-locale-archive, itu akan membuat arsip lokal-penuh (~ 102MB). Anda harus mengulangi langkah-langkah di atas untuk mendapatkan arsip ukuran yang lebih kecil.

Dalam kasus di atas menghapus semua lokal kecuali yang en_ * yang arsip lokal saya pergi dari 102MB ke 3.4MB

James McDonald
sumber