%3F.png)
Меня попросили создать установочный ISO-образ для сервера Debian, такой, чтобы:
- На нем должны быть предварительно установлены определенные пакеты.
- Определенные файлы (в основном модули Python) должны автоматически размещаться в определенных каталогах.
ISO-образы предоставляются клиентам, и эти условия исключают необходимость каких-либо дополнительных действий с их стороны после установки.
В настоящее время я добился первого условия, используяSimple-CDD; однако, что касается второго, я не знаю, как этого добиться. (Одна вещь, упомянутая на странице Simple-CDD HOWTO, заключается в том, что необходимые файлы могут быть перечислены в profiles/NAME.extraтак что они будут добавлены в /simple-cdd в файле ISO, но мне нужны эти файлы в файловой системе самого Debian после его установки).
решение1
Для вопроса №2 вы можете создать *.deb
пакет и включить его в Simple-CDD. Если вы предпочитаете это простому развертыванию файлов или их генерации с помощью скрипта, потому что файлы «принадлежат» пакету. Это означает, что вы можете dpkg -S $file
и понимаете, почему они присутствуют.
Примечание: рассмотрите возможность обновления этого ответа с инструкциями о том, как добавить
*.deb
пакет в Simple-CDD.
Нативным способом настройки этого было бы использование dh_make
, но я считаю, cpack
что для тривиальных случаев, таких как простое развертывание файлов, как это, это проще.
Соберите файлы, которые вы хотите развернуть, в каталог. Я предлагаю сохранить структуру каталогов. Я сделаю все это относительно, поэтому,
.
если вы хотите развернуть/etc/myconfig
, скопируйте его в./etc/myconfig
.Создайте
./CMakeLists.txt
со следующим содержимым:
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)
Примечание: В Debian stretch и более ранних версиях
cpack
была ошибка, из-за которой он генерировал только md5sums для установки компонента. Это сломало некоторые инструменты, такие какdebsums
. Это единственная причина, по которой я используюCOMPONENT
здесь. Эта ошибка была исправлена в Buster. Если вы используете buster или более позднюю версию, вы можете удалить любую строку сCOMPONENT
ней.
- Создайте свой пакет
$ mkdir build && cd build
$ cmake ..
$ cpack
Вы найдете *.deb
файл, находящийся в каталоге сборки. Это то, что вам нужно включить в Simple-CDD.
- Проверьте ваш пакет
Запустите это:
$ dpkg --contents *.deb
Вы должны увидеть все файлы, которые хотите включить. Размер также должен иметь смысл. Вы также можете рассмотреть установку с помощью, а dpkg -i *.deb
затем посмотреть в целевых расположениях, чтобы убедиться, что все выглядит нормально.
решение2
Вы определили, как отправлять дополнительные файлы на CD с помощью Simple-CDD; теперь вы можете отправить архив какого-либо рода (или даже надлежащий пакет) и распаковать его с /target
помощьюфайл preseedсскрипт после установкичтобы поставить их в нужное место.
Вам не нужно предварительно задавать все параметры, достаточно тех, которые вы хотите убрать у пользователя, выполняющего установку.