¿Cómo reduzco el tamaño de locale-archive?

18

Necesito reducir el tamaño del locale-archivearchivo en algunos de mis sistemas RHEL6.

Aquí está ese archivo en mi sistema:

[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

Entonces hice esto ...

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

... así que pensé que podría deshacerme de zh_CNeso ...

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

... y puedo ver que zh_CNya no aparece así ...

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

... pero el tamaño de la locale-archiveno se hace más pequeño ...

[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

... ¿Hay algo más que deba hacer?

Grillo rojo
fuente

Respuestas:

24

Primero puede eliminar todas las configuraciones regionales innecesarias haciendo:

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

¿Dónde ^ense puede reemplazar por la configuración regional que desea mantener?

Luego

$build-locale-archive

Si esto te da un error similar a

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

Entonces prueba esto

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

Si eso todavía falla, verifique su versión. Según esta página, las versiones más recientes no tienen los archivos necesarios para reconstruir el archivo con el fin de ahorrar espacio. Tendrás que correr

yum reinstall glibc-common

En versiones posteriores de Red Hat Enterprise Linux, puede usar dnfuna aplicación similar.

Joel Taylor
fuente
3
Sin embargo, noté que perdí mi conexión ssh con el host cuando ejecuto build-locale-archive... ¿alguna forma de evitar esto?
Red Cricket
2
Tendría cuidado al intentar esto. Rompí mi servidor CentOS y me tomó 30 minutos para encontrar una solución. unix.stackexchange.com/questions/246705/…
PJ Brunet
dnf en rhel ??? Seguramente te refieres a mmm ;-)
Dani_l
1

En Amazon Linux

  1. Elimine los archivos no utilizados del locale-archive. Este comando elimina todos excepto los que comienzan con en.

    localedef --delete-from-archive $(localedef --list-archive | grep -v -i ^en | xargs)
    
  2. Copie el archivo locale-archive (con configuraciones regionales eliminadas) para que sea el nuevo archivo locale-archive.tmpl

    cp /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
    
  3. Ejecute build-locale-archive

    build-locale-archive
    

Nota: Si ejecuta build-locale-archive, pone a cero el archivo .tmpl después de cada ejecución y cuando lo ejecute nuevamente verá el error:

build-locale-archive: cannot read archive header

Puede obtener una copia del archivo locale-archive.tmpl copiando el archivo locale-archive actual en locale-archive.tmpl o descargando y desempacando glibc-common. Si usa el archivo predeterminado locale-archive.tmpl del glibc-common RPM y lo ejecuta build-locale-archive, creará un archivo de locale completo (~ 102MB). Debe repetir los pasos anteriores para obtener el archivo de menor tamaño.

En el caso anterior, eliminando todas las configuraciones regionales, excepto las en_ *, mi archivo de configuración regional pasó de 102 MB a 3,4 MB

James McDonald
fuente