Как сделать так, чтобы определенные файлы автоматически располагались по определенным путям после установки Debian (сервера)?

Как сделать так, чтобы определенные файлы автоматически располагались по определенным путям после установки Debian (сервера)?

Меня попросили создать установочный ISO-образ для сервера Debian, такой, чтобы:

  1. На нем должны быть предварительно установлены определенные пакеты.
  2. Определенные файлы (в основном модули 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что для тривиальных случаев, таких как простое развертывание файлов, как это, это проще.

  1. Соберите файлы, которые вы хотите развернуть, в каталог. Я предлагаю сохранить структуру каталогов. Я сделаю все это относительно, поэтому, .если вы хотите развернуть /etc/myconfig, скопируйте его в ./etc/myconfig.

  2. Создайте ./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ней.

  1. Создайте свой пакет
$ mkdir build && cd build
$ cmake ..
$ cpack

Вы найдете *.debфайл, находящийся в каталоге сборки. Это то, что вам нужно включить в Simple-CDD.

  1. Проверьте ваш пакет

Запустите это:

$ dpkg --contents *.deb

Вы должны увидеть все файлы, которые хотите включить. Размер также должен иметь смысл. Вы также можете рассмотреть установку с помощью, а dpkg -i *.debзатем посмотреть в целевых расположениях, чтобы убедиться, что все выглядит нормально.

решение2

Вы определили, как отправлять дополнительные файлы на CD с помощью Simple-CDD; теперь вы можете отправить архив какого-либо рода (или даже надлежащий пакет) и распаковать его с /targetпомощьюфайл preseedсскрипт после установкичтобы поставить их в нужное место.

Вам не нужно предварительно задавать все параметры, достаточно тех, которые вы хотите убрать у пользователя, выполняющего установку.

Связанный контент