CentOS 上的 rpmbuild 问题 - /home/me/rpmbuild/tmp/rpm-tmp.58942 的退出状态错误

Posted

技术标签:

【中文标题】CentOS 上的 rpmbuild 问题 - /home/me/rpmbuild/tmp/rpm-tmp.58942 的退出状态错误【英文标题】:rpmbuild issues on CentOS - Bad exit status from /home/me/rpmbuild/tmp/rpm-tmp.58942 【发布时间】:2012-12-13 07:54:55 【问题描述】:

我正在尝试创建一个仅更新系统上文件的软件包,但在运行 rpmbuild 时我不断收到错误消息。该错误表示文件丢失。

我在 CentOS 5 和 6 上试过这个,结果相同。

我使用rpmdev-setuptree 设置文件系统,同时设置~/.rpmmacros 文件。然后我使用rpmdev-newspec 来初始化规范文件。

我以非 root 用户身份运行。

我在~/rpmbuild/SPECS/test.spec 中有规范文件,我的来源是:~/rpmbuild/SOURCES/test-1.tar.gz。提取此文件会创建一个名为 test-1 的目录,其中包含 2 个文件。当我尝试构建包时,我已经确认它确实被提取到~/rpmbuild/BUILD/test-1

我跑:rpmbuild -ba ~/rpmbuild/SPECS/test.spec

然后我得到这个错误:

./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --target=x86_64-redhat-linux-gnu --program-prefix= --prefix=/ usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir =/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info /home/ me/rpmbuild/tmp/rpm-tmp.58942: line 37: ./configure: No such file or directory error: Bad exit status from /home/me/rpmbuild/tmp/rpm-tmp.58942 (%build)

RPM 构建错误: /home/me/rpmbuild/tmp/rpm-tmp.58942 (%build) 的错误退出状态

这是我的规范文件:

Name:           test
Version:        1
Release:        1%?dist
Summary:        Test

Group:          Test
License:        GPL
URL:            http://example.com 
Source0:        test-1.tar.gz 
BuildRoot:      %_tmppath/%name-%version-%release-root-%(%__id_u -n)

#BuildRequires:  
#Requires:       

%description
This is a test to push files.

%prep
%setup -q

%build
#%configure
#make %?_smp_mflags

%install
rm -rf $RPM_BUILD_ROOT
#make install DESTDIR=$RPM_BUILD_ROOT
install -m 0755 -d $RPM_BUILD_ROOT/opt/test

%clean
rm -rf $RPM_BUILD_ROOT

%files
%dir /opt/test
%defattr(-,root,root,-)
%doc

关于我可能做错了什么有什么想法吗?

【问题讨论】:

【参考方案1】:

看起来默认的 GNU "./configure" 脚本不存在,因此您不能在规范文件中使用默认的 %setup 宏,需要自定义 %prep 部分...(One source) (mirror)

【讨论】:

我不知道如何覆盖宏以阻止它执行./configure,但我在源代码的根目录中放置了一个空配置文件,它允许我完成构建。感谢您让我走上正轨。 对不起 - 我应该仔细看看! RPM 的一个众所周知的 PITA “功能”是您不能像上面那样注释掉宏。您必须输入#%%configure 否则它只会退出宏的第一行! (第一个 % 转义了第二个。) 确认我现在可以在没有配置文件的情况下构建 rpm,并在注释中添加额外的 %,或者完全删除该行。我认为我的评论有效。谢谢! 一个源链接已关闭,Fedora's wiki 有一些有用的内容,但可能不适用于您的打包或目标环境 @efx 谢谢我也添加了镜像链接。

以上是关于CentOS 上的 rpmbuild 问题 - /home/me/rpmbuild/tmp/rpm-tmp.58942 的退出状态错误的主要内容,如果未能解决你的问题,请参考以下文章

CentOS下的RPM包制作教程收集(rpmbuild)

Linux操作系统使用RPMBUILD命令打包RPM的详细步骤

rpmbuild 已安装(但未打包)的文件源

Centos Kernel编译rpm包

在此系统上找不到 RPM 构建可执行文件“/usr/bin/rpmbuild”(mac)

Centos6.5 Intel X722 编译安装网卡驱动