CPack RPM 產生器

內建(二進位)CPack RPM 產生器(僅限 Unix)

CPack RPM 產生器專用變數

CPack RPM 產生器可用於使用 CPack 建立 RPM 套件。CPack RPM 產生器是一個 CPack 產生器,因此它使用 CPACK_XXX 變數,這些變數由 CPack 使用。

CPack RPM 產生器具有特定的功能,這些功能由特定的 CPACK_RPM_XXX 變數控制。

可以使用 CPACK_RPM_<COMPONENT>_XXXX 變數來擁有**特定元件**的值。請注意,<COMPONENT> 指的是以大寫寫成的**分組名稱**。它可能是元件名稱或元件群組名稱。通常,這些變數對應於 RPM spec 檔案實體。您可以在這裡找到有關 spec 檔案的資訊 https://rpm.org/documentation

在 3.6 版本中變更:變數的 <COMPONENT> 部分最好使用大寫(例如,如果元件名稱為 foo,則使用 CPACK_RPM_FOO_XXXX 變數名稱格式),就像其他 CPACK_<COMPONENT>_XXXX 變數一樣。為了回溯相容性(CMake/CPack 3.5 及更低版本),仍支援使用相同大小寫的元件(例如,fOo 將被用作 CPACK_RPM_fOo_XXXX)來處理在較舊版本的 CMake/CPack 中定義的變數,但不保證未來新增的變數也會支援。為了回溯相容性,當同時存在大小寫版本時,相同大小寫的元件變數也會覆寫大寫版本。

以下是一些 CPack RPM 產生器的 wiki 資源,這些資源是出於歷史原因而存在,並且不再維護,但可能仍然有用

CPack RPM 產生器特定變數的列表

CPACK_RPM_COMPONENT_INSTALL

啟用 CPack RPM 產生器的元件封裝

必填

預設值

關閉

如果啟用(ON),則會產生多個套件。預設情況下,會產生一個包含所有元件檔案的單一套件。

CPACK_RPM_PACKAGE_SUMMARY
CPACK_RPM_<component>_PACKAGE_SUMMARY

RPM 套件摘要。

必填

預設值

CPACK_PACKAGE_DESCRIPTION_SUMMARY

在 3.2 版本中新增:每個元件的 CPACK_RPM_<component>_PACKAGE_SUMMARY 變數。

CPACK_RPM_PACKAGE_NAME
CPACK_RPM_<component>_PACKAGE_NAME

RPM 套件名稱。

必填

預設值

CPACK_PACKAGE_NAME

在 3.5 版本中新增:每個元件的 CPACK_RPM_<component>_PACKAGE_NAME 變數。

CPACK_RPM_FILE_NAME
CPACK_RPM_<component>_FILE_NAME

在 3.6 版本中新增。

套件檔案名稱。

必填

預設值

<CPACK_PACKAGE_FILE_NAME>[-<component>].rpm,空格替換為 '-'

可以將此設定為

RPM-DEFAULT

告訴 rpmbuild 自動產生套件檔案名稱。

<檔案名稱>[.rpm]

使用給定的檔案名稱。

在 3.29 版本中變更:如果遺失,將自動新增 .rpm 副檔名。先前需要副檔名。

注意

透過使用使用者提供的 spec 檔案,rpm 巨集擴充功能(例如用於產生 debuginfo 套件)或僅使用多個元件,可能會產生多個 rpm 檔案,無論是從單一 spec 檔案還是從多個 spec 檔案(每個元件執行都會產生自己的 spec 檔案)。在這種情況下,由於此變數設定或 spec 檔案內容結構,可能會發生重複的檔案名稱。重複的檔案會被覆寫,而封裝者有責任以防止此類錯誤的方式設定變數。

CPACK_RPM_MAIN_COMPONENT

在 3.8 版本中新增。

未封裝元件後綴的主要元件。

必填

預設值

此變數可以設定為任何元件或群組名稱,以便產生沒有檔案名稱和套件名稱中的元件後綴的元件或群組 rpm 套件。

CPACK_RPM_PACKAGE_EPOCH

在 3.10 版本中新增。

RPM 套件紀元

必填

預設值

當變更版本化架構或修正較舊套件的版本號碼錯誤時,應遞增的可選數字。

CPACK_RPM_PACKAGE_VERSION

RPM 套件版本。

必填

預設值

CPACK_PACKAGE_VERSION

CPACK_RPM_PACKAGE_ARCHITECTURE
CPACK_RPM_<component>_PACKAGE_ARCHITECTURE

RPM 套件架構。

必填

預設值

uname -m 輸出的原生架構

如果您知道自己正在建置 noarch 套件,則可以將此設定為 noarch

在 3.3 版本中新增:每個元件的 CPACK_RPM_<component>_PACKAGE_ARCHITECTURE 變數。

CPACK_RPM_PACKAGE_RELEASE

RPM 套件版本。

必填

預設值

1

這是 RPM 套件本身的編號,也就是封裝的版本,而不是內容的版本(請參閱 CPACK_RPM_PACKAGE_VERSION)。如果先前的封裝有錯誤,或者您想在這裡放置一個花俏的 Linux 發行版特定編號,則可以變更預設值。

注意

這是進入 RPM Release: 欄位的字串。某些發行版(例如 Fedora、CentOS)需要 1%{?dist} 格式,而不僅僅是一個數字。可以透過設定 CPACK_RPM_PACKAGE_RELEASE_DIST 來新增 %{?dist} 部分。

CPACK_RPM_PACKAGE_RELEASE_DIST

在 3.6 版本中新增。

新增至 RPM Release: 欄位的 dist 標籤。

必填

預設值

關閉

這是目前發行版本所回報的 %{dist} 標籤,如果未設定 RPM 巨集,則為空的 %{dist}。如果設定此變數,則 RPM 的 Release: 欄位值會設定為 ${CPACK_RPM_PACKAGE_RELEASE}%{?dist}

CPACK_RPM_PACKAGE_LICENSE

RPM 套件授權政策。

必填

預設值

"unknown" (未知)

CPACK_RPM_PACKAGE_GROUP
CPACK_RPM_<component>_PACKAGE_GROUP

RPM 套件群組。

必填

預設值

"unknown" (未知)

在 3.5 版本中新增: 每個元件的 CPACK_RPM_<component>_PACKAGE_GROUP 變數。

CPACK_RPM_PACKAGE_VENDOR

RPM 套件供應商。

必填

預設值

如果已設定則為 CPACK_PACKAGE_VENDOR,否則為 "unknown" (未知)

CPACK_RPM_PACKAGE_URL
CPACK_RPM_<component>_PACKAGE_URL

專案的 URL。

必填

預設值

CMAKE_PROJECT_HOMEPAGE_URL

在 3.12 版本中新增: CMAKE_PROJECT_HOMEPAGE_URL 變數。

CPACK_RPM_PACKAGE_DESCRIPTION
CPACK_RPM_<component>_PACKAGE_DESCRIPTION

RPM 套件描述。

必填

預設值

在 3.2 版本中新增: 每個元件的 CPACK_RPM_<component>_PACKAGE_DESCRIPTION 變數。

CPACK_RPM_COMPRESSION_TYPE

RPM 壓縮類型。

必填

預設值

(系統預設值)

可用於覆寫用來建置 RPM 的 RPM 壓縮類型。例如,某些 Linux 發行版預設使用 xzzstd。使用此變數,您可以指定要使用的特定壓縮類型。

可能的值為

lzma

Lempel–Ziv–Markov 鏈演算法

xz

XZ Utils 壓縮

bzip2

bzip2 Burrows–Wheeler 演算法

gzip

GNU Gzip 壓縮

zstd

在 3.31 版本中新增。

Zstandard 壓縮

CPACK_RPM_PACKAGE_AUTOREQ
CPACK_RPM_<component>_PACKAGE_AUTOREQ

RPM spec 的 autoreq 欄位。

必填

預設值

可用於啟用 (1, yes) 或停用 (0, no) 自動偵測共享函式庫相依性。相依性會新增至 requires 清單中。

注意

依預設,rpm 產生器會啟用自動相依性偵測。

CPACK_RPM_PACKAGE_AUTOPROV
CPACK_RPM_<component>_PACKAGE_AUTOPROV

RPM spec 的 autoprov 欄位。

必填

預設值

可用於啟用 (1, yes) 或停用 (0, no) 自動列出套件提供的共享函式庫。共享函式庫會新增至 provides 清單中。

注意

依預設,rpm 產生器會啟用自動 provides 偵測。

CPACK_RPM_PACKAGE_AUTOREQPROV
CPACK_RPM_<component>_PACKAGE_AUTOREQPROV

RPM spec 的 autoreqprov 欄位。

必填

預設值

變數會同時啟用/停用 autoreq 和 autoprov。如需詳細資訊,請參閱 CPACK_RPM_PACKAGE_AUTOREQCPACK_RPM_PACKAGE_AUTOPROV

注意

依預設,rpm 會啟用自動偵測功能。

CPACK_RPM_PACKAGE_REQUIRES
CPACK_RPM_<component>_PACKAGE_REQUIRES

RPM spec 的 requires 欄位。

必填

預設值

可用於設定 RPM 相依性 (requires)。請注意,您必須將完整的 requires 字串以引號括起來,例如

set(CPACK_RPM_PACKAGE_REQUIRES "python >= 2.5.0, cmake >= 2.8")

RPM 檔案所需的套件清單可以使用以下指令列印:

rpm -qp --requires file.rpm
CPACK_RPM_PACKAGE_CONFLICTS
CPACK_RPM_<component>_PACKAGE_CONFLICTS

RPM spec 的 conflicts 欄位。

必填

預設值

可用於設定負向 RPM 相依性 (conflicts)。請注意,您必須將完整的 requires 字串以引號括起來,例如

set(CPACK_RPM_PACKAGE_CONFLICTS "libxml2")

RPM 檔案的衝突套件清單可以使用以下指令列印:

rpm -qp --conflicts file.rpm
CPACK_RPM_PACKAGE_REQUIRES_PRE
CPACK_RPM_<component>_PACKAGE_REQUIRES_PRE

在 3.2 版本中新增。

RPM spec 的 requires(pre) 欄位。

必填

預設值

可用於設定 RPM 安裝前相依性 (requires(pre))。請注意,您必須將完整的 requires 字串以引號括起來,例如

set(CPACK_RPM_PACKAGE_REQUIRES_PRE "shadow-utils, initscripts")
CPACK_RPM_PACKAGE_REQUIRES_POST
CPACK_RPM_<component>_PACKAGE_REQUIRES_POST

在 3.2 版本中新增。

RPM spec 的 requires(post) 欄位。

必填

預設值

可用於設定 RPM 安裝後相依性 (requires(post))。請注意,您必須將完整的 requires 字串以引號括起來,例如

set(CPACK_RPM_PACKAGE_REQUIRES_POST "shadow-utils, initscripts")
CPACK_RPM_PACKAGE_REQUIRES_POSTUN
CPACK_RPM_<component>_PACKAGE_REQUIRES_POSTUN

在 3.2 版本中新增。

RPM spec 的 requires(postun) 欄位。

必填

預設值

可用於設定 RPM 解除安裝後相依性 (requires(postun))。請注意,您必須將完整的 requires 字串以引號括起來,例如

set(CPACK_RPM_PACKAGE_REQUIRES_POSTUN "shadow-utils, initscripts")
CPACK_RPM_PACKAGE_REQUIRES_PREUN
CPACK_RPM_<component>_PACKAGE_REQUIRES_PREUN

在 3.2 版本中新增。

RPM spec 的 requires(preun) 欄位。

必填

預設值

可用於設定 RPM 解除安裝前相依性 (requires(preun))。請注意,您必須將完整的 requires 字串以引號括起來,例如

set(CPACK_RPM_PACKAGE_REQUIRES_PREUN "shadow-utils, initscripts")
CPACK_RPM_PACKAGE_SUGGESTS
CPACK_RPM_<component>_PACKAGE_SUGGESTS

RPM spec 的 suggest 欄位。

必填

預設值

可用於設定弱 RPM 相依性 (suggests)。如果 rpmbuild 不支援 Suggests 標籤,CPack 會發出警告並忽略此變數。請注意,您必須將完整的 requires 字串以引號括起來。

CPACK_RPM_PACKAGE_PROVIDES
CPACK_RPM_<component>_PACKAGE_PROVIDES

RPM spec 的 provides 欄位。

必填

預設值

可用於設定 RPM 相依性 (provides)。RPM 檔案提供的套件清單可以使用以下指令列印:

rpm -qp --provides file.rpm
CPACK_RPM_PACKAGE_OBSOLETES
CPACK_RPM_<component>_PACKAGE_OBSOLETES

RPM spec 的 obsoletes 欄位。

必填

預設值

可用於設定此套件取代的 RPM 套件。

CPACK_RPM_PACKAGE_RELOCATABLE

建置可重新定位的 RPM。

必填

預設值

CPACK_PACKAGE_RELOCATABLE

如果此變數設定為 TRUE 或 ON,CPack RPM 產生器會嘗試建置可重新定位的 RPM 套件。可以使用以下方式安裝可重新定位的 RPM:

rpm --prefix or --relocate

為了將其安裝在其他位置,請參閱 rpm(8)。請注意,如果 CPACK_SET_DESTDIR 設定為 ON,目前可能會失敗。如果 CPACK_SET_DESTDIR 已設定,您會收到警告訊息,但如果有檔案安裝使用絕對路徑,您會得到非預期的行為。

CPACK_RPM_SPEC_INSTALL_POST

自 2.8.12 版本起已棄用:請改用 CPACK_RPM_SPEC_MORE_DEFINE

必填

預設值

可用於覆寫產生之 spec 檔案中的 __spec_install_post 區段。這會影響套件建立期間的安裝步驟,而不是套件安裝期間。若要新增在套件安裝期間執行的操作,請改用 CPACK_RPM_POST_INSTALL_SCRIPT_FILE

CPACK_RPM_SPEC_MORE_DEFINE

RPM 擴充的 spec 定義行。

必填

預設值

可用於將任何 %define 行新增至產生的 spec 檔案。其使用範例是防止剝離可執行檔(但請注意,這也可能停用其他預設的安裝後處理)

set(CPACK_RPM_SPEC_MORE_DEFINE "%define __spec_install_post /bin/true")
CPACK_RPM_PACKAGE_DEBUG

切換 CPack RPM 產生器偵錯輸出。

必填

預設值

在叫用 cpack 時可以設定此選項,以便在 CPack RPM 執行期間追蹤偵錯資訊。例如,您可以這樣啟動 CPack

cpack -D CPACK_RPM_PACKAGE_DEBUG=1 -G RPM
CPACK_RPM_USER_BINARY_SPECFILE
CPACK_RPM_<componentName>_USER_BINARY_SPECFILE

使用者提供的 spec 檔案。

必填

預設值

使用者可以設定此選項,以便指定 CPack RPM 產生器要使用的使用者二進位 spec 檔案,而不是產生檔案。指定的檔案將由 configure_file( @ONLY) 處理。

CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE

Spec 檔案範本。

必填

預設值

如果設定此選項,CPack 將會產生使用者指定的二進位 spec 檔案的範本,並以錯誤停止。例如,像這樣啟動 CPack

cpack -D CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE=1 -G RPM

然後,使用者可以使用此檔案來手工製作自己的二進位 spec 檔案,該檔案可以與 CPACK_RPM_USER_BINARY_SPECFILE 一起使用。

CPACK_RPM_PRE_INSTALL_SCRIPT_FILE
CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE
CPACK_RPM_PRE_TRANS_SCRIPT_FILE

包含安裝前/解除安裝前/交易腳本的檔案路徑。

必填

預設值

可用於在 spec 檔案中嵌入安裝前/解除安裝前/交易腳本。將讀取參考的腳本檔案(或兩者),並直接放置在 %pre%preun 區段之後。如果 CPACK_RPM_COMPONENT_INSTALL 設定為 ON,則可以使用 CPACK_RPM_<COMPONENT>_PRE_INSTALL_SCRIPT_FILECPACK_RPM_<COMPONENT>_PRE_UNINSTALL_SCRIPT_FILECPACK_RPM_<COMPONENT>_PRE_TRANS_SCRIPT_FILE 覆寫每個元件的安裝/解除安裝/交易腳本。可以使用以下方式驗證已包含哪個小腳本

rpm -qp --scripts  package.rpm

在 3.18 版本中新增:CPACK_RPM_PRE_TRANS_SCRIPT_FILE 變數。

CPACK_RPM_POST_INSTALL_SCRIPT_FILE
CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE
CPACK_RPM_POST_TRANS_SCRIPT_FILE

包含安裝後/解除安裝後/交易腳本的檔案路徑。

必填

預設值

可用於在 spec 檔案中嵌入安裝後/解除安裝後/交易腳本。將讀取參考的腳本檔案(或兩者),並直接放置在 %post%postun 區段之後。如果 CPACK_RPM_COMPONENT_INSTALL 設定為 ON,則可以使用 CPACK_RPM_<COMPONENT>_POST_INSTALL_SCRIPT_FILECPACK_RPM_<COMPONENT>_POST_UNINSTALL_SCRIPT_FILECPACK_RPM_<COMPONENT>_POST_TRANS_SCRIPT_FILE 覆寫每個元件的安裝/解除安裝/交易腳本。可以使用以下方式驗證已包含哪個小腳本

rpm -qp --scripts  package.rpm

在 3.18 版本中新增:CPACK_RPM_POST_TRANS_SCRIPT_FILE 變數。

CPACK_RPM_USER_FILELIST
CPACK_RPM_<COMPONENT>_USER_FILELIST
必填

預設值

可用於明確指定 spec 檔案中的 %(<directive>) 檔案行。例如 %config(noreplace) 或在 %files 區段中找到的任何其他指令。由於 CPack RPM 產生器正在產生檔案(和目錄)清單,因此使用者指定的 CPACK_RPM_<COMPONENT>_USER_FILELIST 清單中的檔案將從產生的清單中移除。如果參照目錄,請勿新增尾部的斜線。

在 3.8 版本中新增:您可以在每行使用多個指令,如 %attr(600,root,root) %config(noreplace)

CPACK_RPM_CHANGELOG_FILE

RPM 變更日誌檔案。

必填

預設值

可用於在 spec 檔案中嵌入變更日誌。將讀取參考的檔案,並直接放置在 %changelog 區段之後。

CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST

要排除的路徑清單。

必填

預設值
預設會排除以下路徑
  • /etc

  • /etc/init.d

  • /usr

  • /usr/bin

  • /usr/include

  • /usr/lib

  • /usr/libx32

  • /usr/lib64

  • /usr/share

  • /usr/share/aclocal

  • /usr/share/doc

可用於從 CPack RPM 探索的自動產生路徑清單中排除路徑(目錄或檔案)。如果使用者未定義變數,則預設值包含一組合理的值。如果使用者定義變數,則 CPack RPM 產生器將不會使用任何預設路徑。如果您想要將某些路徑新增至預設清單,則可以使用 CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION 變數。

在 3.10 版本中新增:/usr/share/aclocal 新增至預設的排除清單。

CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION

要排除的其他路徑清單。

必填

預設值

可用於從初始預設排除路徑清單中新增更多排除路徑(目錄或檔案)。請參閱 CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST

CPACK_RPM_RELOCATION_PATHS

在 3.2 版本中新增。

套件重新定位路徑清單。

必填

預設值

可用於指定每個可重定位 RPM 的多個重定位路徑。此變數包含一個重定位路徑的列表,如果路徑是相對的,則會以 CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX 的值作為前綴,或者如果沒有提供元件版本,則會以 CPACK_PACKAGING_INSTALL_PREFIX 的值作為前綴。此變數不是基於元件的,因為它的內容可用於同時為例如二進制目錄和文件目錄設定不同的路徑前綴。只有特定元件所需的前綴才會被加入到該元件中 - 元件必須至少包含一個檔案/目錄/符號連結,其具有 CPACK_RPM_RELOCATION_PATHS 前綴,才能添加特定的重定位路徑。如果任何提供的路徑前綴位置上沒有檔案/目錄/符號連結,則套件將不會包含任何重定位路徑。如果套件不包含任何重定位路徑,或者包含位於重定位路徑之外的檔案/目錄/符號連結,則會印出 AUTHOR_WARNING,表示 RPM 將部分可重定位。

CPACK_RPM_<COMPONENT>_PACKAGE_PREFIX

在 3.2 版本中新增。

每個元件的重定位路徑安裝前綴。

必填

預設值

CPACK_PACKAGING_INSTALL_PREFIX

可用於為可重定位的 RPM 套件設定每個元件的 CPACK_PACKAGING_INSTALL_PREFIX

CPACK_RPM_NO_INSTALL_PREFIX_RELOCATION
CPACK_RPM_NO_<COMPONENT>_INSTALL_PREFIX_RELOCATION

在 3.3 版本中新增。

從重定位路徑列表中移除預設安裝前綴。

必填

預設值

CPACK_PACKAGING_INSTALL_PREFIXCPACK_RPM_<COMPONENT>_PACKAGE_PREFIX 被視為重定位路徑之一

可用於從可重定位的 RPM 前綴路徑中移除 CPACK_PACKAGING_INSTALL_PREFIXCPACK_RPM_<COMPONENT>_PACKAGE_PREFIX

CPACK_RPM_ADDITIONAL_MAN_DIRS

在 3.3 版本中新增。

必填

預設值
預設添加的正規表達式取自 brp-compress RPM 巨集
  • /usr/man/man.*

  • /usr/man/.*/man.*

  • /usr/info.*

  • /usr/share/man/man.*

  • /usr/share/man/.*/man.*

  • /usr/share/info.*

  • /usr/kerberos/man.*

  • /usr/X11R6/man/man.*

  • /usr/lib/perl5/man/man.*

  • /usr/share/doc/.*/man/man.*

  • /usr/lib/.*/man/man.*

可用於設定可能被 brp-compress RPM 巨集壓縮的其他 man 目錄。變數內容必須是一個正規表達式列表,指向包含 man 檔案的目錄或直接指向 man 檔案。請注意,為了壓縮 man 頁面,路徑也必須存在於 brp-compress RPM 指令碼中,且 brp-compress 指令碼必須由作業系統加入到 RPM 組態中。

CPACK_RPM_DEFAULT_USER
CPACK_RPM_<compName>_DEFAULT_USER

在 3.6 版本中新增。

RPM 內容的預設使用者擁有者

必填

預設值

root

值應為使用者名稱而非 UID。請注意,<compName> 必須為大寫。

CPACK_RPM_DEFAULT_GROUP
CPACK_RPM_<compName>_DEFAULT_GROUP

在 3.6 版本中新增。

RPM 內容的預設群組擁有者

必填

預設值

root

值應為群組名稱而非 GID。請注意,<compName> 必須為大寫。

CPACK_RPM_DEFAULT_FILE_PERMISSIONS
CPACK_RPM_<compName>_DEFAULT_FILE_PERMISSIONS

在 3.6 版本中新增。

封裝檔案使用的預設權限

必填

預設值

(系統預設值)

可接受的值是包含 PERMISSIONS 的列表。有效的權限為

  • OWNER_READ

  • OWNER_WRITE

  • OWNER_EXECUTE

  • GROUP_READ

  • GROUP_WRITE

  • GROUP_EXECUTE

  • WORLD_READ

  • WORLD_WRITE

  • WORLD_EXECUTE

請注意,<compName> 必須為大寫。

CPACK_RPM_DEFAULT_DIR_PERMISSIONS
CPACK_RPM_<compName>_DEFAULT_DIR_PERMISSIONS

在 3.6 版本中新增。

封裝目錄使用的預設權限

必填

預設值

(系統預設值)

可接受的值是包含 PERMISSIONS 的列表。有效的權限與 CPACK_RPM_DEFAULT_FILE_PERMISSIONS 相同。請注意,<compName> 必須為大寫。

CPACK_RPM_INSTALL_WITH_EXEC

在 3.11 版本中新增。

強制程式和共享函式庫具有執行權限

必填

預設值

(系統預設值)

強制為程式和共享函式庫設定擁有者、群組和全域執行權限。這可用於在 Debian 等系統上建立有效的 rpm 套件,在這些系統上,共享函式庫沒有設定執行權限。

注意

在從二進制檔分離除錯符號以產生除錯資訊套件時,沒有執行權限的程式和共享函式庫會被忽略。

除錯資訊的封裝

在 3.7 版本中新增。

除錯資訊套件包含用於除錯封裝二進制檔的除錯符號和原始碼。

除錯資訊 RPM 封裝有其自己的變數集合

CPACK_RPM_DEBUGINFO_PACKAGE
CPACK_RPM_<component>_DEBUGINFO_PACKAGE

啟用除錯資訊 RPM 套件的產生。

必填

預設值

關閉

注意

二進制檔在封裝之前必須包含除錯符號,因此對於 CMAKE_BUILD_TYPE 變數值,請使用 DebugRelWithDebInfo

此外,如果設定了 CPACK_STRIP_FILES,則檔案會在到達 RPM 產生器之前被剝除,因此將不包含除錯符號,並且不會建立除錯資訊套件。請勿與 CPACK_STRIP_FILES 一起使用。

注意

從沒有二進制檔、有二進制檔但沒有執行權限或沒有除錯符號的套件產生的套件將會導致封裝終止。

CPACK_BUILD_SOURCE_DIRS

提供建立二進制檔的原始程式檔根目錄的位置。

必填

如果設定了 CPACK_RPM_DEBUGINFO_PACKAGE,則為「是」

預設值

注意

對於 CMake 專案,CPACK_BUILD_SOURCE_DIRS 預設設定為指向 CMAKE_SOURCE_DIRCMAKE_BINARY_DIR 路徑。

注意

路徑前綴不在 CPACK_BUILD_SOURCE_DIRS 所提供的任何位置下的原始碼,將不會出現在偵錯資訊套件中。

CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX
CPACK_RPM_<component>_BUILD_SOURCE_DIRS_PREFIX

原始碼在套件安裝期間將被放置的位置之前綴。

必填

如果設定了 CPACK_RPM_DEBUGINFO_PACKAGE,則為「是」。

預設值

/usr/src/debug/${CPACK_PACKAGE_FILE_NAME},對於元件封裝則是 /usr/src/debug/${CPACK_PACKAGE_FILE_NAME}-<component>

注意

每個原始碼路徑前綴額外附加 src_<index> 後綴,其中 index 是 CPACK_BUILD_SOURCE_DIRS 變數中使用的路徑索引。這會產生 ${CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX}/src_<index> 取代路徑。限制是取代路徑的部分長度必須小於或等於其取代項的長度。如果不是這種情況,則必須將 CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX 變數設定為較短的路徑,或將原始碼目錄放置在較長的路徑上。

CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS

包含應從偵錯資訊套件中排除的原始碼的目錄。

必填

預設值
預設會排除以下路徑
  • /usr

  • /usr/src

  • /usr/src/debug

列出的路徑屬於其他 RPM 套件,因此不應在偵錯資訊套件解除安裝時刪除。

CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION

應附加到 CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS 以排除的路徑。

必填

預設值

CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE

在 3.8 版本中新增。

即使設定了元件封裝,也建立單一偵錯資訊套件。

必填

預設值

關閉

啟用此變數時,即使啟用元件封裝,也會產生單一偵錯資訊套件。

當將此功能與元件封裝結合使用,並且有多個元件時,此變數需要設定 CPACK_RPM_MAIN_COMPONENT

注意

如果沒有設定任何 CPACK_RPM_<component>_DEBUGINFO_PACKAGE 變數,則當設定 CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE 時,會自動將 CPACK_RPM_DEBUGINFO_PACKAGE 設定為 ON

CPACK_RPM_DEBUGINFO_FILE_NAME
CPACK_RPM_<component>_DEBUGINFO_FILE_NAME

在 3.9 版中新增。

偵錯資訊套件檔名。

必填

預設值

rpmbuild 工具產生的套件檔名。

或者,提供的偵錯資訊套件檔名必須以 .rpm 後綴結尾,並且應與其他產生的套件檔名不同。

變數可能包含 @cpack_component@ 預留位置,如果啟用了元件封裝,則會被元件名稱取代;否則會刪除預留位置。

將變數設定為 RPM-DEFAULT 可用於明確設定預設的檔名產生。

注意

CPACK_RPM_FILE_NAME 也支援 rpmbuild 工具產生的套件檔名 - 預設為停用,但可以透過將變數設定為 RPM-DEFAULT 來啟用。

原始碼封裝 (SRPM)

在 3.7 版本中新增。

透過設定 CPACK_RPM_PACKAGE_SOURCES 變數來啟用 SRPM 封裝,同時通常使用 CPACK_INSTALLED_DIRECTORIES 變數來提供包含 CMakeLists.txt 和原始碼檔案的目錄。

對於 CMake 專案,SRPM 套件將透過執行來產生

cpack -G RPM --config ./CPackSourceConfig.cmake

注意

產生的 SRPM 套件預期將使用 cmake(1) 可執行檔建立,並使用 cpack(1) 可執行檔封裝,因此 CMakeLists.txt 必須位於根原始碼目錄中,並且必須能夠透過執行 cpack -G 命令來產生二進位 rpm 套件。當從產生的 SRPM 套件產生二進位 rpm 套件時,也必須存在這兩個可執行檔以及 rpmbuild。

一旦產生 SRPM 套件,就可以透過建立用於 rpm 產生的一個目錄結構並執行 rpmbuild 工具來產生二進位套件

mkdir -p build_dir/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
rpmbuild --define "_topdir <path_to_build_dir>" --rebuild <SRPM_file_name>

產生的套件將位於 build_dir/RPMS 目錄或其子目錄中。

注意

SRPM 套件內部使用 CPack/RPM 產生器來產生二進位套件,因此 CMakeScripts.txt 可以在 SRPM 到二進位 rpm 產生步驟中決定套件應包含的內容,以及應如何封裝它們(單體或元件)。例如,CMake 可以透過在開始產生二進位 rpm 套件的過程之前,讀取套件管理器設定的環境變數來決定這一點。這樣,可以根據平台的封裝規則,使用單一 SRPM 套件在不同的平台上產生不同的二進位 rpm 套件。

原始碼 RPM 封裝有其自己的一組變數

CPACK_RPM_PACKAGE_SOURCES

是否應將內容封裝為原始碼 rpm(預設為二進位 rpm)。

必填

預設值

關閉

注意

對於 cmake 專案,CPACK_RPM_PACKAGE_SOURCES 變數在 CPackConfig.cmake 中設定為 OFF,在 CPackSourceConfig.cmake 產生的檔案中設定為 ON

CPACK_RPM_SOURCE_PKG_BUILD_PARAMS

提供給 cmake(1) 可執行檔的額外命令列參數。

必填

預設值

CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX

將在 CPACK_PACKAGING_INSTALL_PREFIX 變數中提供的封裝安裝前綴,用於產生二進位 RPM 套件。

必填

預設值

/

CPACK_RPM_BUILDREQUIRES

原始碼 rpm 建置相依性的清單。

必填

預設值

可用於設定原始碼 RPM 建置相依性 (BuildRequires)。請注意,您必須將完整的建置需求字串括在引號之間,例如

set(CPACK_RPM_BUILDREQUIRES "python >= 2.5.0, cmake >= 2.8")
CPACK_RPM_REQUIRES_EXCLUDE_FROM

在 3.22 版中新增。

必填

預設值

可用於防止相依性產生器掃描特定檔案或目錄的相依性。請注意,您可以使用符合所有目錄或檔案的正規表示式,例如

set(CPACK_RPM_REQUIRES_EXCLUDE_FROM "bin/libqsqloci.*\\.so.*")