Rpm
如何獲取基本規範文件以使用 rpmbuild?
我安裝了 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
基於您的包名稱和版本。