1. 程式人生 > >rpmbuild打包錯誤記錄

rpmbuild打包錯誤記錄

一,在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設定的版本有些不匹配,可以升級安裝的機器 ,我採用下面的方法,經驗證,可以解決這個問題
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
也可以要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