%20bestimmte%20Dateien%20automatisch%20in%20bestimmten%20Pfaden%20haben%3F.png)
Ich wurde gebeten, ein Installations-ISO für den Debian-Server zu erstellen, das Folgendes enthält:
- Bestimmte Pakete müssen darauf vorinstalliert sein.
- Bestimmte Dateien (meistens Python-Module) müssen automatisch in bestimmten Verzeichnissen lokalisiert werden.
Kunden erhalten ISOs und diese Bedingungen dienen dazu, ihnen nach der Installation jegliche weiteren Maßnahmen zu ersparen.
Derzeit habe ich die erste Bedingung erreicht, indem ichEinfaches CDD; beim zweiten weiß ich jedoch nicht, wie ich das erreichen kann. (Eine Sache, die auf der Simple-CDD HOWTO-Seite erwähnt wird, ist, dass die benötigten Dateien in den Profilen/NAME.extra aufgelistet werden könnten.damit sie in der ISO-Datei zu /simple-cdd hinzugefügt werden, aber ich brauche diese Dateien im Dateisystem von Debian selbst, nachdem es installiert ist).
Antwort1
Für Frage Nr. 2 könnten Sie ein *.deb
Paket erstellen und dieses in Simple-CDD einbinden. Wenn Sie dies dem einfachen Bereitstellen von Dateien oder deren Generierung mit einem Skript vorziehen, da die Dateien einem Paket „gehören“. Das bedeutet, dass Sie dpkg -S $file
verstehen können, warum sie vorhanden sind.
Hinweis: Erwägen Sie, diese Antwort mit Anweisungen zum Hinzufügen eines
*.deb
Pakets zu Simple-CDD zu aktualisieren
Die native Möglichkeit, dies einzurichten, wäre mit dh_make
, aber ich finde cpack
es für triviale Fälle wie die einfache Dateibereitstellung wie diese einfacher.
Sammeln Sie die Dateien, die Sie bereitstellen möchten, in einem Verzeichnis. Ich schlage vor, die Verzeichnisstruktur beizubehalten. Ich mache das alles relativ zu ,
.
wenn Sie also bereitstellen möchten/etc/myconfig
, kopieren Sie es nach./etc/myconfig
.Erstellen Sie
./CMakeLists.txt
mit folgendem Inhalt:
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)
Hinweis: In Debian Stretch und früheren Versionen
cpack
gab es einen Fehler, bei dem nur MD5-Summen für die Installation einer Komponente generiert wurden. Dadurch wurden einige Tools wie beschädigtdebsums
. Das ist der einzige Grund, warum ich esCOMPONENT
hier verwende. Dieser Fehler wurde in Buster behoben. Wenn Sie Buster oder höher verwenden, können Sie jede Zeile mitCOMPONENT
darin löschen.
- Stellen Sie Ihr Paket zusammen
$ mkdir build && cd build
$ cmake ..
$ cpack
Sie finden eine *.deb
Datei in Ihrem Build-Verzeichnis. Diese sollten Sie in Ihr Simple-CDD aufnehmen.
- Überprüfen Sie Ihr Paket
Führen Sie Folgendes aus:
$ dpkg --contents *.deb
Sie sollten alle Dateien sehen, die Sie einschließen möchten. Die Größe sollte auch sinnvoll sein. Sie können auch erwägen, diese zu installieren und dpkg -i *.deb
dann in Ihren Zielspeicherorten nachzuschauen, um sicherzustellen, dass alles in Ordnung ist.
Antwort2
Sie haben herausgefunden, wie Sie mit Simple-CDD zusätzliche Dateien auf der CD versenden können. Jetzt können Sie ein Archiv irgendeiner Art (oder sogar ein richtiges Paket) versenden und es /target
mit einemvordefinierte Dateimit einemPost-Installationsskriptum sie an die richtige Stelle zu bringen.
Sie müssen nicht alle Optionen voreinstellen, sondern nur die, die Sie dem Benutzer, der die Installation durchführt, vorenthalten möchten.