GNU/Linux >> Tutoriales Linux >  >> Debian

¿Habilitación condicional de archivos Systemd a través del paquete Debian?

Creé un paquete deb que instala un servicio.

En nuestros dispositivos integrados, quiero que este paquete habilite automáticamente el servicio. En nuestras estaciones de trabajo de desarrolladores, quiero que los desarrolladores systemctl start foo manualmente (es un servicio pesado, por lo que solo consume recursos si se ejecuta todo el tiempo en un entorno de escritorio).

¿Cómo puedo solicitar al usuario su decisión durante el apt-get? ¿paso? ¿Es esa la mejor solución?

Tenga en cuenta que he creado el paquete usando dh_make y debhelper y lo habilitó con:

%:
    dh [email protected] --with=systemd

override_dh_systemd_enable:
    dh_systemd_enable --name=foo foo.service

Respuesta aceptada:

Puede usar ajustes preestablecidos de systemd para determinar si un servicio de systemd se habilitará o deshabilitará de forma predeterminada en el momento de la instalación.

Los ajustes preestablecidos de Debian habilitan de forma predeterminada todos los servicios a medida que se instalan, por lo que solo necesita enviar un ajuste preestablecido a las estaciones de trabajo de desarrollo (el comportamiento predeterminado coincide con lo que desea que suceda en producción), enviando un archivo como /etc/systemd/system-preset/80-foo.preset que contiene una línea que dice

disable foo.service

Si administra sus estaciones de trabajo de desarrollador mediante un sistema como Puppet, Chef, Ansible, etc., puede usarlos para enviar una configuración preestablecida de systemd, que debería facilitarle la aplicación de la política solo a las estaciones de trabajo de desarrollador y no a la producción. máquinas.

Su paquete .deb debe usar el systemctl preset comando para habilitar el servicio, ya que ese comando respetará la configuración preestablecida.

Como señalan @JdeBP y @sourcejedi, las macros de Debian en deb-helpers (como dh_systemd_enable ) ya lo hacen, invocan deb-systemd-helper que usará systemctl preset de forma predeterminada (con una pequeña advertencia de que si elimina (pero no purga) el paquete y luego lo vuelve a instalar, no habilitará el servicio, incluso si elimina el archivo preestablecido). Consulte este comentario en deb-systemd-helper 's enable operación:

    # We use 'systemctl preset' on the initial installation only.
    # On upgrade, we manually add the missing symlinks only if the
    # service already has some links installed. Using 'systemctl
    # preset' allows administrators and downstreams to alter the
    # enable policy using systemd-native tools.

Para obtener más información sobre la función systemd de los ajustes preestablecidos, consulte la página man de los ajustes preestablecidos de systemd y del comando systemctl preset que lo implementa.

Relacionado:Debian:¿el DNS no está configurado correctamente en Debian Linux?
Debian
  1. ¿Escribir archivos de servicio básicos de Systemd?

  2. Debian – ¿Servicio activo pero (salido)?

  3. ¿Permisos de seguridad de Debian /etc?

  4. ¿Cómo cambiar de usuario para un montón de archivos de servicio de Systemd?

  5. Cómo instalar Suricata en Debian 11

Cómo encontrar archivos en Debian 10

Cómo manipular archivos en Debian 11

5 formas de liberar espacio en disco en Debian 10

Cómo ver o monitorear archivos de registro en Debian 10

Cómo instalar Icinga 2 en Debian 8

Cómo encontrar archivos en Debian