%3F.png)
Me solicitaron que hiciera una ISO de instalación para el servidor Debian tal que:
- Es necesario preinstalar ciertos paquetes.
- 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 *.deb
paquete 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 $file
entender por qué están presentes.
Nota: considere actualizar esta respuesta con instrucciones sobre cómo agregar un
*.deb
paquete a Simple-CDD
La forma nativa de configurar esto sería con dh_make
, pero me resulta cpack
más fácil para casos triviales como la implementación simple de archivos como este.
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
.Crea
./CMakeLists.txt
con 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,
cpack
había un error por el cual solo generaba md5sums para la instalación de un componente. Esto rompió algunas herramientas comodebsums
. Esa es la única razón por la que estoy usandoCOMPONENT
aquí. Este error se solucionó en Buster. Si está utilizando buster o posterior, puede eliminar cualquier línea queCOMPONENT
contenga.
- Construye tu paquete
$ mkdir build && cd build
$ cmake ..
$ cpack
Encontrarás un *.deb
archivo en tu directorio de compilación. Eso es lo que querrás incluir en tu Simple-CDD.
- 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 *.deb
luego 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 /target
usar 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.