ฉันจะลดขนาดของ locale-archive ได้อย่างไร


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... มีวิธีป้องกันอะไรบ้าง?
Red Cricket

2
ฉันจะพยายามอย่างระมัดระวัง ทำลายเซิร์ฟเวอร์ CentOS ของฉันและใช้เวลา 30 นาทีเพื่อหาทางออก unix.stackexchange.com/questions/246705/…
PJ Brunet

dnf ใน rhel ??? แน่นอนคุณหมายถึง yum ;-)
Dani_l

1

บน Amazon Linux

  1. ลบไฟล์เก็บถาวรที่ไม่ได้ใช้ออกจาก locale-archive คำสั่งนี้จะลบทั้งหมดยกเว้นคำสั่งที่ขึ้นต้นด้วย en

    localedef --delete-from-archive $(localedef --list-archive | grep -v -i ^en | xargs)
    
  2. คัดลอกไฟล์ locale-archive (ที่มี locales ที่ลบ) เพื่อเป็นไฟล์ 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 ปัจจุบันไปยัง locale-archive.tmpl หรือโดยการดาวน์โหลดและคลายไฟล์ glibc-common หากคุณใช้ไฟล์ locale-archive.tmpl เริ่มต้นจาก RPM ทั่วไปของ glibc และรันbuild-locale-archiveกับไฟล์มันจะสร้าง locale-archive แบบเต็ม (~ 102MB) คุณต้องทำซ้ำขั้นตอนข้างต้นเพื่อรับไฟล์เก็บถาวรขนาดที่เล็กลง

ในกรณีข้างต้นการลบสถานที่ทั้งหมดยกเว้น en_ * ที่สถานที่เก็บของฉันไปจาก 102MB ลงไป 3.4MB

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.