如何获取与 rpmbuild 一起使用的基本规范文件?

如何获取与 rpmbuild 一起使用的基本规范文件?

我安装了 rpmlint 和 rpmdevtools。我使用 rpmdevtools 创建了 .spec 文件的模板。我修改了 spec 文件,以便它可以安装 cfengine。我在 spec 文件上运行了 rpmlint,没有看到任何警告或错误。然后我尝试真正运行 specfile,但失败了。这是我运行的命令:

$ 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’

“Propulsion” 这个名字来自 .spec 文件。显然,单引号、连字符和 1 来自 rpm-build 命令处理。

我该怎么做才能避免出现 RPM 构建错误?我希望我的 spec 文件能够用于 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

答案1

发生这个错误是因为%setup实际上是一个宏,当它展开时,会尝试解压源代码并cd进入源目录。

如果 tarball 中的源目录与包的名称不同,则需要设置-n,如下所示:

%setup -n cfengine-3.6.5

就您而言,这应该可行,因为当您提取时,cfengine-3.6.5.tar.gz您会得到一个名为 -- 的目录cfengine-3.6.5,并且 rpmbuild 会Propulsion-1根据您的软件包名称和版本进行预期。

您可以阅读有关设置宏的更多信息这里这里

相关内容