Siguiente: , Anterior: , Subir: Instalación   [Índice general][Índice]


2.6 Configuración de la aplicación

Cuando se usa Guix sobre una distribución GNU/Linux distinta al sistema Guix—una distribución distinta—unos pocos pasos adicionales son necesarios para tener todo preparado. Aquí están algunos de ellos.

2.6.1 Localizaciones

Los paquetes instalados a través de Guix no usarán los datos de localización del sistema anfitrión. En vez de eso, debe instalar primero uno de los paquetes de localización disponibles con Guix y después definir la variable de entorno GUIX_LOCPATH:

$ guix install glibc-locales
$ export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale

Fíjese que el paquete glibc-locales contiene datos para todas las localizaciones que ofrece GNU libc y pesa alrededor de 917 MiB. De manera alternativa, glibc-utf8-locales tiene menor tamaño pero está limitado a localizaciones UTF-8.

La variable GUIX_LOCPATH juega un rol similar a LOCPATH (véase LOCPATH en The GNU C Library Reference Manual). No obstante, hay dos diferencias importantes:

  1. GUIX_LOCPATH es respetada únicamente por la libc dentro de Guix, y no por la libc que proporcionan las distribuciones distintas. Por tanto, usar GUIX_LOCPATH le permite asegurarse de que los programas de la distribución distinta no cargarán datos de localización incompatibles.
  2. libc añade un sufijo a cada entrada de GUIX_LOCPATH con /X.Y, donde X.Y es la versión de libc—por ejemplo, 2.22. Esto significa que, en caso que su perfil Guix contenga una mezcla de programas enlazados contra diferentes versiones de libc, cada versión de libc únicamente intentará cargar datos de localización en el formato correcto.

Esto es importante porque el formato de datos de localización usado por diferentes versiones de libc puede ser incompatible.

2.6.2 Selector de servicios de nombres

Cuando se usa Guix en una distribución distinta, recomendamos encarecidamente que el sistema ejecute el daemon de caché del servicio de nombres de la biblioteca de C de GNU, ncsd, que debe escuchar en el socket /var/run/nscd/socket. En caso de no hacerlo, las aplicaciones instaladas con Guix pueden fallar al buscar nombres de máquinas o cuentas de usuaria, o incluso pueden terminar abruptamente. Los siguientes párrafos explican por qué.

La biblioteca de C de GNU implementa un selector de servicios de nombres (NSS), que es un mecanismo extensible para “búsquedas de nombres” en general: resolución de nombres de máquinas, cuentas de usuaria y más (véase Selector de servicios de nombres en The GNU C Library Reference Manual).

Al ser extensible, NSS permite el uso de módulos, los cuales proporcionan nuevas implementaciones de búsqueda de nombres: por ejemplo, el módulo nss-mdns permite la resolución de nombres de máquina .local, el módulo nis permite la búsqueda de cuentas de usuaria usando el servicio de información de red (NIS), etc. Estos “servicios de búsqueda” extra se configuran para todo el sistema en /etc/nsswitch.conf, y todos los programas en ejecución respetan esta configuración (véase NSS Configuration File en The GNU C Reference Manual).

Cuando se realiza una búsqueda de nombres—por ejemplo, llamando a la función getaddrinfo en C—las aplicaciones primero intentarán conectar con nscd; en caso satisfactorio, nscd realiza la búsqueda de nombres en delegación suya. Si nscd no está ejecutándose, entonces realizan la búsqueda por ellas mismas, cargando los servicios de búsqueda de nombres en su propio espacio de direcciones y ejecutándola. Estos servicios de búsqueda de nombres—los archivos libnss_*.so—son abiertos con dlopen, pero pueden venir de la biblioteca de C del sistema, en vez de la biblioteca de C contra la que la aplicación está enlazada (la biblioteca de C que viene en Guix).

Y aquí es donde está el problema: si su aplicación está enlazada contra la biblioteca de C de Guix (digamos, glibc 2.24) e intenta cargar módulos de otra biblioteca de C (digamos, libnss_mdns.so para glibc 2.22), probablemente terminará abruptamente o sus búsquedas de nombres fallarán inesperadamente.

Ejecutar nscd en el sistema, entre otras ventajas, elimina este problema de incompatibilidad binaria porque esos archivos libnss_*.so se cargan en el proceso nscd, no en la aplicación misma.

2.6.3 Tipografías X11

La mayoría de aplicaciones gráficas usan Fontconfig para encontrar y cargar tipografías y realizar la renderización del lado del cliente X11. El paquete fontconfig en Guix busca tipografías en $HOME/.guix-profile por defecto. Por tanto, para permitir a aplicaciones gráficas instaladas con Guix mostrar tipografías, tiene que instalar las tipografías también con Guix. Paquetes esenciales de tipografías incluyen gs-fonts, font-dejavu y font-gnu-freefont.

Una vez que haya instalado o borrado tipografías, o cuando se de cuenta de que una aplicación no encuentra las tipografías, puede que necesite instalar Fontconfig y forzar una actualización de su caché de tipografías ejecutando:

guix install fontconfig
fc-cache -rv

Para mostrar texto escrito en lenguas chinas, Japonés o Coreano en aplicaciones gráficas, considere instalar font-adobe-source-han-sans o font-wqy-zenhei. La anterior tiene múltiples salidas, una por familia de lengua (véase Paquetes con múltiples salidas). Por ejemplo, la siguiente orden instala tipografías para lenguas chinas:

guix install font-adobe-source-han-sans:cn

Programas más antiguos como xterm no usan Fontconfig sino que dependen en el lado del servidor para realizar el renderizado de tipografías. Dichos programas requieren especificar un nombre completo de tipografía usando XLFD (Descripción lógica de tipografías X), como esta:

-*-dejavu sans-medium-r-normal-*-*-100-*-*-*-*-*-1

Para ser capaz de usar estos nombres completos para las tipografías TrueType instaladas en su perfil Guix, necesita extender la ruta de fuentes del servidor X:

xset +fp $(dirname $(readlink -f ~/.guix-profile/share/fonts/truetype/fonts.dir))

Después de eso, puede ejecutar xlsfonts (del paquete xlsfonts) para asegurarse que sus tipografías TrueType se enumeran aquí.

2.6.4 Certificados X.509

El paquete nss-certs proporciona certificados X.509, que permiten a los programas verificar los servidores accedidos por HTTPS.

Cuando se usa Guix en una distribución distinta, puede instalar este paquete y definir las variables de entorno relevantes de modo que los paquetes sepan dónde buscar los certificados. Véase Certificados X.509, para información detallada.

2.6.5 Paquetes Emacs

Cuando instale paquetes de Emacs con Guix los archivos de Elisp se encuentran en el directorio share/emacs/site-lisp/ del perfil en el que se instalen. Las bibliotecas de Elisp se ponen a disposición de Emacs a través de la variable de entorno EMACSLOADPATH, a la cual se le asigna un valor cuando se instale el propio Emacs.

De manera adicional, las definiciones de carga automática se evaluan de manera automática en la inicialización de Emacs, mediante el procedimiento guix-emacs-autoload-packages específico de Guix. Si, por alguna razón, desea evitar la carga automática de paquetes Emacs instalados con Guix, puede hacerlo ejecutando Emacs con la opción --no-site-file (véase Init File en The GNU Emacs Manual).


Siguiente: , Anterior: , Subir: Instalación   [Índice general][Índice]