centos 如何修复“RPM构建错误:错误的退出状态”[closed]

n7taea2i  于 2022-11-07  发布在  其他
关注(0)|答案(1)|浏览(218)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

7个月前关闭。
Improve this question
我尝试在CentOS 8容器中创建并构建gorpm包。运行rpmbuild -ba onboarding.spec命令时,我收到以下错误:

Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.nAad2g
+ umask 022
+ cd /home/tiagoribeiro/rpmbuild/BUILD
+ cd /home/tiagoribeiro/rpmbuild/BUILD
+ rm -rf onboarding-1.0
+ /usr/bin/gzip -dc /home/tiagoribeiro/rpmbuild/SOURCES/onboarding-1.0.tar.gz
+ /usr/bin/tar -xof -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd onboarding-1.0
/var/tmp/rpm-tmp.nAad2g: line 41: cd: onboarding-1.0: No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.nAad2g (%prep)

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

我一直在+-跟随这个在线文档,它大部分是复制的。不明白为什么我会得到这个错误。下面是我的规范文件:

Name:           onboarding
Version:        1.0
Release:        1%{?dist}
Summary:        golang api
License:        GPLv3
Source0:        %{name}-%{version}.tar.gz
BuildRequires:  systemd-rpm-macros
Provides:       %{name} = %{version}

%description
small go app

%global debug_package %{nil}
%prep
%autosetup

%build
go build -v -o %{name}

%install
install -Dpm 0755 %{name} %{buildroot}%{_bindir}/%{name}
install -Dpm 644 %{name}.service %{buildroot}%{_unitdir}/%{name}.service

%post
%systemd_post %{name}.service

%preun
%systemd_preun %{name}.service

%files
%dir %{_sysconfdir}/%{name}
%{_bindir}/%{name}
%{_unitdir}/%{name}.service

%changelog

下面是我的rpmbuild文件树:

/home/tiagoribeiro/rpmbuild/
├── BUILD
│   ├── main.go
│   └── onboarding.service
├── BUILDROOT
├── RPMS
├── SOURCES
│   ├── onboarding-1.0.tar.gz
├── SPECS
│   ├── onboarding.spec
└── SRPMS

为了能够生成此软件包,我需要更改什么?

rjjhvcjd

rjjhvcjd1#

解压缩分发文件onboarding-1.0.tar.gz并没有创建一个默认名称的目录(%{name}-%{version},在本例中是onboarding-1.0)。看起来tarball根本不包含目录,这是一种糟糕的形式。您有两种主要的选择:
1.重新打包源文件,使其包含所需的目录:

cd ~
mkdir onboarding-1.0
tar -C onboarding-1.0 -xf ~/rpmbuild/SOURCES/onboarding-1.0.tar.gz
tar czf rpmbuild/SOURCES/onboarding-1.0.tar.gz onboarding-1.0


1.通过将-c选项添加到%autosetup宏调用中,指示rpmbuild自己创建所需的目录:

%prep
%autosetup -c

如果您首先自己构建tarball,我会选择选项(1),但如果您使用的是其他人提供的tarball,我会选择选项(2)。

相关问题