%3F.png)
Fui solicitado a fazer um ISO de instalação para o servidor Debian tal que:
- Certos pacotes precisam ser pré-instalados nele.
- Certos arquivos (principalmente módulos Python) precisam ser localizados em determinados diretórios automaticamente.
As ISOs são fornecidas aos clientes e essas condições existem para eliminar a necessidade de quaisquer outras ações por parte deles após a instalação.
Atualmente, alcancei a primeira condição usandoCDD Simples; porém, para o segundo, não sei como posso conseguir isso. (Uma coisa mencionada na página Simple-CDD HOWTO é que os arquivos necessários podem ser listados em profiles/NAME.extrapara que eles sejam adicionados ao /simple-cdd no arquivo ISO, mas preciso desses arquivos no sistema de arquivos do próprio Debian depois de instalado).
Responder1
Para a pergunta nº 2, você poderia criar um *.deb
pacote e incluí-lo no Simple-CDD. Se preferir isso em vez de simplesmente implantar arquivos ou gerá-los com um script porque os arquivos são "de propriedade" de um pacote. Isso significa que você pode dpkg -S $file
e entende por que eles estão presentes.
Nota: Considere atualizar esta resposta com instruções sobre como adicionar um
*.deb
pacote ao Simple-CDD
A maneira nativa de configurar isso seria com dh_make
, mas acho cpack
mais fácil para casos triviais, como implantação simples de arquivos como este.
Colete os arquivos que você deseja implantar em um diretório. Sugiro preservar a estrutura de diretórios. Farei tudo isso em relação a
.
isso, se você quiser implantar/etc/myconfig
, copie-o para./etc/myconfig
.Crie
./CMakeLists.txt
com o seguinte conteúdo:
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: No Debian stretch e anteriores,
cpack
havia um bug onde apenas gerava md5sums para a instalação de um componente. Isso quebrou algumas ferramentas comodebsums
. Essa é a única razão pela qual estou usandoCOMPONENT
aqui. Este bug foi corrigido no Buster. Se você estiver usando o buster ou posterior, poderá excluir qualquer linha neleCOMPONENT
.
- Construa seu pacote
$ mkdir build && cd build
$ cmake ..
$ cpack
Você encontrará um *.deb
arquivo em seu diretório de construção. É isso que você deseja incluir no seu Simple-CDD.
- Verifique seu pacote
Rode isto:
$ dpkg --contents *.deb
Você deverá ver todos os arquivos que deseja incluir. O tamanho também deve fazer sentido. Você também pode considerar a instalação disso e, dpkg -i *.deb
em seguida, examinar os locais de destino para garantir que tudo esteja bem.
Responder2
Você sabe como enviar arquivos extras no CD com Simple-CDD; agora você pode enviar algum tipo de arquivo (ou até mesmo um pacote adequado) e descompactá-lo /target
usando umarquivo de pré-configuraçãocom umscript pós-instalaçãopara colocá-los no lugar certo.
Você não precisa pré-configurar todas as opções, apenas aquelas que deseja retirar do usuário que está fazendo a instalação.