Rpm
模擬重建 srpm 自動計算不需要的依賴項
當使用 mock 建構 srpm 然後重建它以創建 rpm mock 時,會自動生成一些依賴項。在大多數情況下這很好,但因為我正在嘗試建構的東西已經帶來了它需要的一切,所以我不想要這種行為。我無法解決的自動要求是 libffmpeg.so()(64bit) - 但正如我所說,它是作為文件包含的。
我已經嘗試過(在規範文件中)
- %define __requires_exclude libffmpeg.so
- 自動請求:否 | 0
- AutoReqProv: 否|0
以上所有內容,無論是否手動指定要求(例如 coreutils)。
使用的命令:
mock -r epel-7-x86_64 --buildsrpm --no-clean --no-cleanup-after --spec="${RPM_NAME}.spec" --source="${WORKING_DIR}" --resultdir="${WORKING_DIR}" -v mock -r epel-7-x86_64 --rebuild --no-clean --no-cleanup-after "${WORKING_DIR}"/${RPM_NAME}*.src.rpm --resultdir="${WORKING_DIR}" -v
這與 Mock 沒有嚴格的關係。在內部模擬使用 rpmbuild,並且這種自動依賴關係由 rpmbuild 計算。
如果您將 libffmpeg.so 放在系統路徑中,那麼您可以(順便說一句應該自動完成):
Provides: libffmpeg.so()(64bit)
但如果它不在系統路徑中,您應該只過濾 Require。這是綜合指南: https ://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering
我想指出您可能會犯錯誤的兩件事:
1)它不是累積的。只使用最後一個宏,它取代了前一個。
2)它是需要匹配整個字元串的正則表達式。即 libffmpeg.so 將不匹配“libffmpeg.so()(64bit)”。所以你必須:
%global __requires_exclude ^libffmpeg\\.so.*$
此外,您應該添加:
Provides: bundled(<libname>) = <version>