Làm cách nào để giảm kích thước kho lưu trữ?


18

Tôi có nhu cầu giảm kích thước locale-archivetệp trên một số hệ thống RHEL6 của mình.

Đây là tập tin trên hệ thống của tôi:

[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

Vì vậy, tôi đã làm điều này ...

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

... Vì vậy, tôi nghĩ rằng tôi có thể thoát khỏi zh_CNnhư vậy ...

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

... và tôi có thể thấy zh_CNkhông được liệt kê nữa như vậy ...

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

... nhưng kích thước của locale-archivenó không nhỏ hơn ...

[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

... tôi còn cần phải làm gì nữa không?

Câu trả lời:


24

Trước tiên, bạn có thể xóa tất cả các địa điểm không cần thiết bằng cách thực hiện:

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

Nơi ^encó thể được thay thế bởi địa phương bạn muốn giữ

Sau đó

$build-locale-archive

Nếu điều này cung cấp cho bạn một lỗi tương tự như

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

Sau đó thử cái này

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

Nếu vẫn không thành công, hãy kiểm tra phiên bản của bạn. Theo trang này, các phiên bản mới hơn không có các tệp cần thiết để xây dựng lại kho lưu trữ để tiết kiệm dung lượng. Bạn sẽ cần phải chạy

yum reinstall glibc-common

Trong các bản phát hành sau của Red Hat Enterprise Linux, bạn có thể sử dụng dnf, một ứng dụng tương tự.


3
Mặc dù vậy, tôi nhận thấy rằng tôi mất kết nối ssh với máy chủ khi thực thi build-locale-archive... có cách nào ngăn chặn điều này không?
Dế đỏ

2
Tôi sẽ cẩn thận khi thử điều này. Đã phá vỡ máy chủ CentOS của tôi và mất 30 phút để tìm ra giải pháp. unix.stackexchange.com/questions/246705/ Ấn
PJ Brunet

dnf ở rrc ??? Chắc chắn bạn có nghĩa là yum ;-)
Dani_l

1

Trên Amazon Linux

  1. Xóa các tài liệu lưu trữ không sử dụng khỏi kho lưu trữ miền địa phương. Lệnh này xóa tất cả ngoại trừ những cái bắt đầu bằng en.

    localedef --delete-from-archive $(localedef --list-archive | grep -v -i ^en | xargs)
    
  2. Sao chép tệp lưu trữ cục bộ (với các ngôn ngữ đã xóa) thành tệp cục bộ-archive.tmpl mới

    cp /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
    
  3. Chạy build-locale-archive

    build-locale-archive
    

Lưu ý: Nếu bạn chạy build-locale-archive, nó sẽ xóa tệp .tmpl sau mỗi lần chạy và khi bạn chạy lại, bạn sẽ thấy lỗi:

build-locale-archive: cannot read archive header

Bạn có thể lấy một bản sao của tệp locale-archive.tmpl bằng cách sao chép tệp lưu trữ cục bộ hiện tại sang locale-archive.tmpl hoặc bằng cách tải xuống và giải nén glibc-common. Nếu bạn sử dụng tệp locale-archive.tmpl mặc định từ RPM chung của glibc và chạy build-locale-archivevới nó, nó sẽ tạo ra một kho lưu trữ cục bộ (~ 102 MB) đầy đủ. Bạn cần lặp lại các bước trên để có được kho lưu trữ kích thước nhỏ hơn.

Trong trường hợp trên, xóa tất cả các vị trí ngoại trừ các en_ * lưu trữ cục bộ của tôi đã giảm từ 102MB xuống còn 3,4 MB

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.