Как понизить версию ZFS в Linux на CentOS

Con GNU xargsen Linux:

xargs -r0a "/proc/$pid/environ" sh -c 'exec env -i -- "$@" locale' sh

Ejecutaría localeen una copia del entorno, el proceso de pid $pidpasó al comando que ejecutó por última vez.

Tenga en cuenta que localeal ser externo, solo se preocupa por las variables de entorno, no por las variables de shell si no se han exportado.

El propio shell puede verse afectado por su configuración de localización incluso si las variables LC_*, LANG, LANGUAGEno se exportan.

Algunas notas de precaución:

  • Los programas que utilizan la localización suelen hacer un setlocale(LC_ALL, "")para inicializar todas sus configuraciones de localización en función del entorno, pero no es necesario.
  • Pueden llamar setlocale()con diferentes parámetros (improbable ).
  • Pueden llamarlo antes o después de modificar su entorno (con API como putenv()/setenv()).
  • Esos putenv()/ setenv()tradicionalmente no modifican el área expuesta por /proc/$pid/environpero IIRC está cambiando en versiones recientes de Linux y GNU libc.
  • Independientemente de esos putenv()/ setenv(), el proceso puede terminar modificando su área de la pila expuesta por/proc/$pid/environ(poco probable ).

Otra opción sería adjuntar gdb al proceso y hacer:

call system("locale")

Sin embargo, eso es bastante intrusivo.

Ese usaría el entorno preparado por el propio proceso (asumiendo que usa environy/o putenv()/ setenv()que no todas las aplicaciones, especialmente los shells, por ejemplo, hacen ).

Con gdb, también podría consultar la configuración de localización directamente llamando a setlocale()para cada categoría de configuración regional con un segundo argumento NULL.

Para conocer el valor de una determinada categoría:

$ printf '#include <locale.h>\nLC_COLLATE\n' | gcc -E -x c - | tail -n 1
3

Para imprimir el nombre de la configuración regional engdb:

(gdb) p (char*)setlocale(3, 0)
$3 = 0xde8f40 "en_GB.UTF-8"

o:

(gdb) x/s setlocale(3, 0)
0xde8f40:       "en_GB.UTF-8"
1
10.12.2017, 17:26
1 ответ

Это просто было неясно, потому что, если я еще не установил zfs -выпуска (, даже если он новее, чем я хочу ), я не мог видеть никаких пакетов. Однако, как только это было установлено для EL7 _3, я мог запустить это:

yum search zfs* --show-duplicates

Который затем показывает все пакеты, поэтому я запустил это:

yum install zfs-0.6.5.11-1.el7.centos spl-0.6.5.11-1.el7.centos

С этого момента установка прошла нормально.

1
27.01.2020, 23:44

Теги

Похожие вопросы