Comment puis-je réduire la taille de l'archive locale?

18

J'ai besoin de réduire la taille du locale-archivefichier sur certains de mes systèmes RHEL6.

Voici ce fichier sur mon système:

[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

Alors j'ai fait ça ...

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

... alors j'ai pensé que je pouvais me débarrasser zh_CNcomme ça ...

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

... et je peux voir zh_CNque la liste n'est plus comme ça ...

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

... mais la taille du locale-archivene diminue pas ...

[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

... y a-t-il autre chose que je dois faire?

Cricket rouge
la source

Réponses:

24

Vous pouvez d'abord supprimer tous les paramètres régionaux inutiles en procédant comme suit:

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

^enpeut être remplacé par les paramètres régionaux que vous souhaitez conserver

alors

$build-locale-archive

Si cela vous donne une erreur similaire à

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

Alors essayez ceci

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

Si cela échoue toujours, vérifiez votre version. Selon cette page, les versions plus récentes ne disposent pas des fichiers nécessaires pour reconstruire l'archive afin d'économiser de l'espace. Vous devrez exécuter

yum reinstall glibc-common

Dans les versions ultérieures de Red Hat Enterprise Linux, vous pouvez utiliser dnfune application similaire.

Joel Taylor
la source
3
J'ai cependant remarqué que je perdais ma connexion ssh à l'hôte lorsque j'exécutais build-locale-archive... un moyen d'empêcher cela?
Red Cricket
2
Je serais prudent en essayant cela. J'ai cassé mon serveur CentOS et il m'a fallu 30 minutes pour trouver une solution. unix.stackexchange.com/questions/246705/…
PJ Brunet
dnf en rhel ??? Vous voulez sûrement dire miam ;-)
Dani_l
1

Sur Amazon Linux

  1. Supprimez les archives inutilisées de l'archive locale. Cette commande supprime tout sauf ceux commençant par en.

    localedef --delete-from-archive $(localedef --list-archive | grep -v -i ^en | xargs)
    
  2. Copiez le fichier locale-archive (avec les locales supprimées) pour être le nouveau fichier locale-archive.tmpl

    cp /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
    
  3. Exécutez build-locale-archive

    build-locale-archive
    

Remarque: Si vous exécutez build-locale-archive, il remet à zéro le fichier .tmpl après chaque exécution et lorsque vous l'exécutez à nouveau, vous verrez l'erreur:

build-locale-archive: cannot read archive header

Vous pouvez obtenir une copie du fichier locale-archive.tmpl soit en copiant l'archive locale actuelle dans locale-archive.tmpl, soit en téléchargeant et en décompressant glibc-common. Si vous utilisez le fichier locale-archive.tmpl par défaut du RPM glibc-common et que vous l'exécutez build-locale-archive, il créera une archive locale complète (~ 102 Mo). Vous devez répéter les étapes ci-dessus pour obtenir l'archive de plus petite taille.

Dans le cas ci-dessus, la suppression de tous les paramètres régionaux, à l'exception de ceux en_ *, mon archive locale est passée de 102 Mo à 3,4 Mo.

James McDonald
la source