經過一年的開發,RPM 4.20.0 版本正式發布。 RPM4 專案由 Red Hat 開發,並被 RHEL、Fedora、SUSE、openSUSE 和 ALT 等發行版所採用。 LinuxOpenMandriva、Mageia、PCLinux作業系統支援 Tizen。專案代碼以 GPLv2 和 LGPLv2 授權發布。
明年,RPM 6 的一個重要分支預計將發布,它將使用新的存檔格式,與目前使用的 cpio 格式不同,它允許創建大於 4 GB 的包(克服這一限制很重要,因為 SRC 包Chromium 已接近極限,大小為3.7 GB)。新分支也打算允許使用C++語言進行RPM開發。一個新的重要分支將致力於紀念該項目的周年紀念日 - 27 年 2025 月 30 日將標誌著自首次提交 RPM 以來的 5 週年。 RPM 5.x 版本將被跳過,以避免與 RPM2016 專案重疊,該專案與 Red Hat RPM 沒有直接關係,由獨立開發團隊開發,自 XNUMX 年以來一直沒有更新。
RPM 4.20 最顯著的改進是:
- 包含一個新的 rpm2archive 實用程序,它取代了 rpm2cpio 實用程序,並將進一步簡化向不使用 cpio 的新套件格式的轉換。與 rpm2cpio 不同,新實用程式不會將 RPM 檔案轉換為 cpio 存檔,而是轉換為 gzip 壓縮的 tar 檔案。舊的 rpm2cpio 實用程式已被替換為 rpm2archive 的符號連結。
- 基於新的「BuildSystem」指令的使用,提出了聲明式建置系統,透過該指令可以定義用於產生套件的建置系統。考慮到指定的建置系統,自動準備、編譯和安裝原始程式碼,無需在 SPEC 中的“%prep”、“%build”和“%install”區塊中單獨定義準備、建置和安裝腳本檔案。在 RPM 中,支援的建置系統以巨集集合的形式定義。
主要想法是聲明性配置格式將允許發行版開發人員為常見的建置過程創建單獨的宏,而不必在每個套件中定義重複的腳本。例如,現在不必為使用 Autotools 的程式指定 configure 和 make 命令的執行順序,而是指定「BuildSystem: autotools」並省去「%prep」、「%build」和「%install」部分。目前,為 Autotools 和 CMake 準備了類似的巨集。如果有必要實現非標準行為,包維護者有機會連接自己的巨集來覆蓋包形成的不同階段。
- 新增了對附加準備、建置、安裝、配置、清理和檢查命令附加部分的支持,補充了基本部分 %prep、%conf、%build、%install、%check 和 %clean。要在執行基本部分的程式碼之前執行附加腳本,請提供“-p”選項,並在基本部分之後提供“-a”選項。使用上述聲明性建構模式時,此類替換可能有助於微調行為。
- SPEC 檔案的動態產生部分允許包含不影響建置過程的指令和部分。
- 新增了 %builddir 宏,並實現了 RPM 控制的將自訂建置目錄連結到各個套件的功能。
- 提出了一種新的「多文件」協議,該協議顯著加快了依賴項的生成速度。
- rpm 指令新增「--json」選項,以 JSON 格式輸出查詢結果。
- 新增了 rpm-plugin-unshare 插件,該插件使用命名空間隔離在建置部分中執行的腳本。 Linux例如,該插件允許您拒絕網路存取並限制對檔案系統的訪問,以及使用單獨的私有目錄 /tmp 和 /home 來防止在建置軟體包時對臨時檔案進行不安全操作。
- 已提出用於插件開發的公共 API,以保持版本之間的相容性。以前,外掛程式 API 僅供內部使用,並且可能會因版本而異。
- 在 rpmkeys 指令中新增了「--list」和「--delete」選項。
- rpmsign 指令新增了使用 ECDSA 金鑰為軟體包建立數位簽章的支援。
- 改進了對可重複構建的支援。新增了巨集“%build_mtime_policy”,它允許您控制在組裝過程中新增的時間戳內容(您可以使用clamp_to_source_date_epoch值使用固定標籤,並使用clamp_to_buildtime指定實際建置時間)。
- sysusers.d 檔案允許新增行來定義群組成員。
- 提供了對 debuginfo 檔案的正確且獨立於發行版的支援。
- 巨集語法 %patchN(N 之前沒有空格)已被棄用,現在將導致錯誤(您應該使用語法“%patch N”或“%patch -PN”,其中 N 是補丁號)。
- 過時的 OpenPGP 解析器已被刪除。
- Perl 和 Python ABI 的依賴項產生器放置在單獨的儲存庫中。
來源: opennet.ru
