安裝Debian(伺服器)後如何自動將某些檔案放在某些路徑中?

安裝Debian(伺服器)後如何自動將某些檔案放在某些路徑中?

我被要求為 Debian 伺服器製作安裝 ISO,以便:

  1. 需要預先安裝某些軟體包。
  2. 某些檔案(主要是 Python 模組)需要自動位於某些目錄中。

ISO 已提供給客戶,這些條件是為了消除他們在安裝後執行任何其他操作的需要。

目前,我已經透過使用實現了第一個條件簡單CDD;然而,對於第二個,我不知道如何實現它。 (Simple-CDD HOWTO 頁面中提到的一件事是所需的文件可以在 profile/NAME.extra 中列出這樣它們就會被加入到 ISO 檔案中的 /simple-cdd 中,但安裝後我需要 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有一個錯誤,它只會為元件安裝產生 md5sum。這破壞了一些工具,例如debsums.這是我COMPONENT在這裡使用的唯一原因。這個錯誤已在 Buster 中修復。如果您使用buster或更高版本,您可以刪除COMPONENT其中的任何行。

  1. 建立你的包
$ mkdir build && cd build
$ cmake ..
$ cpack

*.deb您將在建置目錄中找到一個檔案。這就是您想要包含在 Simple-CDD 中的內容。

  1. 驗證您的包裹

運行這個:

$ dpkg --contents *.deb

您應該會看到您想要包含的所有文件。尺寸也應該有意義。您也可以考慮安裝它,然後dpkg -i *.deb查看目標位置以確保一切正常。

答案2

您確定如何使用 Simple-CDD 在 CD 上傳送額外的檔案;現在您可以發送某種類型的存檔(甚至是適當的套件)並/target使用預置文件與一個安裝後腳本將它們放在正確的位置。

您不需要預置每個選項,只需預置您想要從執行安裝的使用者取得的選項即可。

相關內容