rpmbuild打包錯誤記錄
阿新 • • 發佈:2019-01-05
一,在rpmbuild給spec指令碼指定變數
rpmbuild --define="version ${version}" --define="project ${PROJECTNAME}" -ba ./rpm/project.spec
這樣,在spec指令碼中可以用%version獲取到version的變數值,如下:
Name: %project
Version: %version
Release: 1
Group: System
License: Commercial
二,在機器上安裝出錯
在有些機器上安裝,會出現下面的提示資訊
error: Failed dependencies: rpmlib(FileDigests) <= 4.6.0-1 is needed by pasr-2.0.0-1.x86_64 rpmlib(PayloadIsXz) <= 5.2-1 is needed by pasr-2.0.0-1.x86_64
這主要是md5驗證和payload設定的版本有些不匹配,可以升級安裝的機器 ,我採用下面的方法,經驗證,可以解決這個問題
也可以要spec檔案中如下設定:rpmbuild --define="_source_filedigest_algorithm md5" --define="_binary_filedigest_algorithm md5" --define="_binary_payload w9.gzdio" --define="_source_payload w9.gzdio" --define="version ${version}" --define="project ${PROJECTNAME}" -ba ./rpm/project.spec
Source: %{name}-%{version}.tar.gz
Prefix: %{_prefix}
%global _source_filedigest_algorithm md5
%global _binary_filedigest_algorithm md5
%global _source_payload w9.gzdio
%global _binary_payload w9.gzdio
三,關閉自動依賴
AutoReqProv: no
四,_topdir巨集
在不同的系統上,用於build的目錄是不一樣的,如centos上一般是~/rpmbuild,而在suse上是/usr/src/packages,在redhat上是/usr/src/redhat,這個由/usr/lib/rpm/macros檔案中的_topdir來指定。也可以在build的時候自己定義,如:
rpmbuild --define="_topdir ~/rpmbuild/" -ba project.spec