Wie verkleinere ich das Gebietsschema-Archiv?

18

Ich muss die Größe der locale-archiveDatei auf einigen meiner RHEL6-Systeme reduzieren.

Hier ist die Datei auf meinem System:

[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

Also habe ich das gemacht ...

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

... also dachte ich, ich könnte so loswerden zh_CN...

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

... und ich kann sehen zh_CNdas nicht mehr so ​​gelistet wird ...

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

... aber die Größe der locale-archivewird nicht kleiner ...

[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

... muss ich noch etwas tun?

Rotes Kricket
quelle

Antworten:

24

Sie können zunächst alle nicht benötigten Gebietsschemas entfernen, indem Sie folgende Schritte ausführen:

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

Wo ^enkann durch das Gebietsschema ersetzt werden, das Sie behalten möchten

Dann

$build-locale-archive

Wenn dies zu einem ähnlichen Fehler führt wie

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

Dann probier das mal

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

Wenn das immer noch fehlschlägt, überprüfen Sie Ihre Version. Nach dieser Seite haben neuere Versionen nicht die notwendigen Dateien, um das Archiv neu zu erstellen, um Platz zu sparen. Du musst rennen

yum reinstall glibc-common

In späteren Versionen von Red Hat Enterprise Linux können Sie dnfeine ähnliche Anwendung verwenden.

Joel Taylor
quelle
3
Ich bemerkte jedoch, dass ich meine SSH-Verbindung zum Host verlor, als ich sie ausführte build-locale-archive... wie kann ich das verhindern?
Red Cricket
2
Ich wäre vorsichtig, wenn ich das versuchen würde. Ich habe meinen CentOS-Server kaputt gemacht und brauchte 30 Minuten, um eine Lösung zu finden. unix.stackexchange.com/questions/246705/…
PJ Brunet
dnf in rhel ??? Sicher meinst du yum ;-)
Dani_l
1

Auf Amazon Linux

  1. Löschen Sie die nicht verwendeten Archive aus dem Gebietsschema-Archiv. Dieser Befehl löscht alle bis auf diejenigen, die mit en beginnen.

    localedef --delete-from-archive $(localedef --list-archive | grep -v -i ^en | xargs)
    
  2. Kopieren Sie die Datei locale-archive (mit entfernten Gebietsschemas) als neue Datei locale-archive.tmpl

    cp /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
    
  3. Führen Sie build-locale-archive aus

    build-locale-archive
    

Hinweis: Wenn Sie build-locale-archive ausführen, wird die .tmpl-Datei nach jeder Ausführung auf Null gesetzt, und wenn Sie sie erneut ausführen, wird der Fehler angezeigt:

build-locale-archive: cannot read archive header

Sie können eine Kopie der Datei locale-archive.tmpl erhalten, indem Sie entweder das aktuelle locale-archive in locale-archive.tmpl kopieren oder glibc-common herunterladen und entpacken. Wenn Sie die Standarddatei locale-archive.tmpl aus dem glibc-common-RPM verwenden und build-locale-archivediese verwenden, wird ein vollständiges (~ 102 MB) Gebietsschema-Archiv erstellt. Sie müssen die obigen Schritte wiederholen, um ein Archiv mit kleinerer Größe zu erhalten.

In dem oben genannten Fall wurden alle Ländereinstellungen mit Ausnahme der en_ * -Einstellungen in meinem Gebietsschema-Archiv von 102 MB auf 3,4 MB gelöscht

James McDonald
quelle