¿Cómo tener ciertos archivos en ciertas rutas automáticamente después de la instalación de Debian (servidor)?

¿Cómo tener ciertos archivos en ciertas rutas automáticamente después de la instalación de Debian (servidor)?

Me solicitaron que hiciera una ISO de instalación para el servidor Debian tal que:

  1. Es necesario preinstalar ciertos paquetes.
  2. Ciertos archivos (principalmente módulos de Python) deben ubicarse automáticamente en ciertos directorios.

Los ISO se proporcionan a los clientes y estas condiciones existen para eliminar la necesidad de realizar otras acciones por su parte después de la instalación.

Actualmente, he logrado la primera condición usandoCDD simple; sin embargo, para el segundo, no sé cómo puedo lograrlo. (Una cosa que se menciona en la página HOWTO de Simple-CDD es que los archivos necesarios se pueden enumerar en perfiles/NOMBRE.extrapara que se agreguen a /simple-cdd en el archivo ISO, pero necesito esos archivos en el sistema de archivos de Debian después de instalarlo).

Respuesta1

Para la pregunta n.º 2, puede crear un *.debpaquete e incluirlo en Simple-CDD. Si prefiere esto a simplemente implementar archivos o generarlos con un script porque los archivos son "propiedad" de un paquete. Eso significa que puedes dpkg -S $fileentender por qué están presentes.

Nota: considere actualizar esta respuesta con instrucciones sobre cómo agregar un *.debpaquete a Simple-CDD

La forma nativa de configurar esto sería con dh_make, pero me resulta cpackmás fácil para casos triviales como la implementación simple de archivos como este.

  1. Recopile los archivos que desea implementar en un directorio. Sugiero preservar la estructura del directorio. Haré todo esto en relación con , .por lo que si desea implementarlo /etc/myconfig, cópielo en ./etc/myconfig.

  2. Crea ./CMakeLists.txtcon el siguiente contenido:

cmake_minimum_required(VERSION 3.7)
project(foo)

# Repeat this for each directory or file you want to install
install(DIRECTORY etc 
  DESTINATION /
  USE_SOURCE_PERMISSIONS
  COMPONENT default
)

set(CPACK_GENERATOR "DEB")
set(CPACK_PACKAGE_NAME foo)
set(CPACK_PACKAGE_DESCRIPTION "Long description of what this package is"
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Short description")
set(CPACK_PACKAGE_VENDOR "The ones who installed your OS")
set(CPACK_PACKAGE_CONTACT "[email protected]")
set(CPACK_PACKAGE_VERSION "1.0")

set(CPACK_COMPONENT_ALL default)
set(CPACK_DEB_COMPONENT_INSTALL "ON")

include(CPack)

Nota: En Debian Stretch y versiones anteriores, cpackhabía un error por el cual solo generaba md5sums para la instalación de un componente. Esto rompió algunas herramientas como debsums. Esa es la única razón por la que estoy usando COMPONENTaquí. Este error se solucionó en Buster. Si está utilizando buster o posterior, puede eliminar cualquier línea que COMPONENTcontenga.

  1. Construye tu paquete
$ mkdir build && cd build
$ cmake ..
$ cpack

Encontrarás un *.debarchivo en tu directorio de compilación. Eso es lo que querrás incluir en tu Simple-CDD.

  1. Verifica tu paquete

Ejecuta esto:

$ dpkg --contents *.deb

Deberías ver todos los archivos que deseas incluir. El tamaño también debería tener sentido. También puede considerar instalarlo y dpkg -i *.debluego buscar en las ubicaciones de destino para asegurarse de que todo se vea bien.

Respuesta2

Descubriste cómo enviar archivos adicionales en el CD con Simple-CDD; ahora puedes enviar un archivo de algún tipo (o incluso un paquete adecuado) y descomprimirlo para /targetusar unarchivo preestablecidocon unscript posterior a la instalaciónpara ponerlos en el lugar correcto.

No es necesario preestablecer todas las opciones, solo las que desea quitarle al usuario que realiza la instalación.

información relacionada