Rpm

如何獲取基本規範文件以使用 rpmbuild?

  • June 6, 2015

我安裝了 rpmlint 和 rpmdevtools。我使用 rpmdevtools 創建了一個 .spec 文件的模板。我修改了規範文件,因此它將安裝 cfengine。我在規範文件上執行了 rpmlint,沒有看到任何警告或錯誤。然後我嘗試真正執行規範文件,但失敗了。這是我執行的命令:

$ rpmbuild -ba newpackage.spec

這是我看到的:

Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.wNGgcV
+ umask 022
+ cd /home/ec2-user//BUILD
+ cd /home/ec2-user/BUILD
+ rm -rf Propulsion-1
+ /usr/bin/tar -xf -
+ /usr/bin/gzip -dc /home/ec2-user/SOURCES/cfengine-3.6.5.tar.gz
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd Propulsion-1
/var/tmp/rpm-tmp.wNGgcV: line 35: cd: Propulsion-1: No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.wNGgcV (%prep)


RPM build errors:
   Bad exit status from /var/tmp/rpm-tmp.wNGgcV (%prep)

上面第 35 行的文件有:

cd ‘推進-1’

“推進”名稱來自 .spec 文件。顯然,單引號、連字元和 1 來自 rpm-build 命令處理。

我應該怎麼做才能沒有 RPM 建構錯誤?我希望我的規範文件適用於 cfengine 的安裝。

這是規範文件:

Name:  Propulsion
Version: 1
Release:        1%{?dist}
Summary:  First time

License:        GNU
#URL:
Source0: http://s3.amazonaws.com/cfengine.package-repos/tarballs/cfengine-3.6.5.tar.gz

BuildRequires: gettext
# Requires:

%description
This is a test.

%prep
%setup -q


%build
%configure
make %{?_smp_mflags}


%install
rm -rf $RPM_BUILD_ROOT
%make_install


%files
%doc


%changelog

發生此錯誤是因為%setup實際上是一個宏,在擴展時會嘗試將您的源解壓縮並cd進入源目錄。

如果 tarball 中的源目錄與包名不同,則需要設置-n,如下所示:

%setup -n cfengine-3.6.5

在您的情況下,這應該可以工作,因為當您提取時,cfengine-3.6.5.tar.gz您會得到一個名為cfengine-3.6.5– 的目錄,並且 rpmbuild 期望Propulsion-1基於您的包名稱和版本。

您可以在此處此處閱讀有關設置宏的更多資訊。

引用自:https://serverfault.com/questions/697045