GNU Shepherd, un administrador de servicios desarrollado por Guix

Después de dos años de la formación de la última versión importante, se dio a conocer al publicó el lanzamiento de la nueva versión del administrador de servicios GNU Shepherd 0.9 (anteriormente conocido como dmd), que está siendo desarrollado por los desarrolladores de la distribución GNU Guix como una alternativa a la inicialización SysV-init consciente de las dependencias del sistema.

Shepherd proporciona la funcionalidad del espacio de usuario de forma asincrónica como servicios, que en Shepherd son funciones genéricas y tipos de datos de objetos que se exportan para que Shepherd los utilice para ampliar el sistema operativo base de alguna manera definida. A diferencia de systemd, un proceso de supervisión del espacio de usuario se ejecuta como ese usuario.

Sobre Shepherd

El núcleo del modelo Shepherd de inicialización del espacio de usuario es el concepto de extensión, una forma de componibilidad en la que los servicios están diseñados para superponerse a otros servicios, aumentándolos con comportamientos más elaborados o especializados según se desee. Esto expresa las relaciones de dependencia basadas en la creación de instancias que se encuentran en muchos sistemas de inicio modernos, lo que hace que el sistema sea modular, pero también permite que los servicios interactúen de forma variable con otros servicios de manera arbitraria.

Shepherd también proporciona los llamados servicios virtuales que permiten el envío dinámico sobre una clase de objetos de servicio relacionados, como todos aquellos que crean instancias de un agente de transferencia de correo (MTA) para el sistema.

Un sistema gobernado a través del demonio Shepherd puede representar su espacio de usuario como un gráfico acíclico dirigido, con el «servicio del sistema» (responsable de las primeras fases de arranque e inicio) como root y todos los servicios inicializados posteriormente como extensiones de la funcionalidad del servicio del sistema, ya sea directamente o transitivamente sobre otros servicios.

Al estar escrito y configurado en Guile Scheme, GNU Shepherd está diseñado para ser altamente programable por el administrador del sistema, pero también puede usarse para administrar perfiles por usuario de demonios y servicios sin privilegios.

Sus servicios y configuración se almacenan de manera uniforme como código Scheme orientado a objetos y aunque se proporciona un conjunto central de servicios con el sistema Guix básico, se pueden declarar de manera flexible nuevos servicios arbitrarios y a través del sistema de objetos de Guile, GOOPS, los servicios existentes se pueden redefinir a discreción del usuario pidiéndole a Shepherd que reescriba dinámicamente los servicios de formas específicas en la creación de instancias.

GNU Shepherd se diseñó originalmente para trabajar con GNU Hurd y luego fue adoptado por Guix System

Principales novedades de GNU Shepherd 0.9

En esta nueva versión que se presenta se destaca que se implementa el concepto de servicios temporales (transitorios), los cuales se desconectan automáticamente después de la terminación debido a la terminación del proceso o la llamada al método «stop», que puede ser requerido para servicios sintetizados que no se pueden reiniciar después de la terminación.

Otro de los cambios que se destaca es para los servicios sin el parámetro «»#:log-file», se proporciona salida a syslog y para los servicios con el parámetro «#:log-file», el registro se escribe en un archivo separado que indica la hora de los registros en el proceso Pastor sin privilegios que se almacena en el directorio $XDG_DATA_DIR.

Ademas de ello se destaca que se agregó el procedimiento «make-inetd-constructor» para crear servicios similares a inetd y que se agregó el procedimiento «make-systemd-constructor» para crear servicios que se activan en la actividad de la red (estilo de activación de socket systemd).

De los demás cambios que se destacan de esta nueva versión:

  • Se agregó un procedimiento para iniciar el servicio en segundo plano:
  • Se agregaron los parámetros «:supplementary-groups», «#:create-session» y «#:resource-limits» al procedimiento «make-forkexec-constructor».
  • Funcionamiento garantizado sin bloqueos mientras se esperan los archivos PID.
  • Se eliminó el soporte para compilar con Guile 2.0. Problemas resueltos al usar las versiones de Guile 3.0.5-3.0.7.
  • Ahora se requiere la biblioteca de Fibers 1.1.0 o posterior para funcionar.
  • Documentación y ejemplos mejorados
  • Pastor ya no se puede construir con Guile 2.0
  • Solucion en el error del compilador Guile 3.0.[5-7]
  • Traducciones actualizadas

Finalmente si estás interesado en conocer más al respecto o quieres obtener esta nueva versión, puedes consultar los detalles, documentación y descarga desde el siguiente enlace.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.