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 的退出状态错误的主要内容,如果未能解决你的问题,请参考以下文章
Linux操作系统使用RPMBUILD命令打包RPM的详细步骤