How can I fix "RPM Build Error: Bad exit status"
How can I fix "RPM Build Error: Bad exit status"
我正在尝试在 CentOS8 容器中创建和构建一个 go rpm 包。根据 运行 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)
我一直在 +- 关注 this 在线文档,而且大部分都是复制的。不明白为什么我会收到此错误。这是我的规范文件:
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
我需要更改什么才能构建此包?
解压分发文件 onboarding-1.0.tar.gz
并不是创建具有默认名称(%{name}-%{version}
,在本例中为 onboarding-1.0
)的目录。看起来 tarball 根本不包含目录,这是一种糟糕的形式。您有两个主要选择:
重新打包源代码,使其包含所需的目录:
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
或
通过向 %autosetup
宏调用添加 -c
选项,指示 rpmbuild 自行创建所需目录:
%prep
%autosetup -c
如果您首先自己构建 tarball,我会选择选项 (1),但如果您使用其他人提供的 tarball,我会选择选项 (2)。
我正在尝试在 CentOS8 容器中创建和构建一个 go rpm 包。根据 运行 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)
我一直在 +- 关注 this 在线文档,而且大部分都是复制的。不明白为什么我会收到此错误。这是我的规范文件:
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
我需要更改什么才能构建此包?
解压分发文件 onboarding-1.0.tar.gz
并不是创建具有默认名称(%{name}-%{version}
,在本例中为 onboarding-1.0
)的目录。看起来 tarball 根本不包含目录,这是一种糟糕的形式。您有两个主要选择:
重新打包源代码,使其包含所需的目录:
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
或
通过向
%autosetup
宏调用添加-c
选项,指示 rpmbuild 自行创建所需目录:%prep %autosetup -c
如果您首先自己构建 tarball,我会选择选项 (1),但如果您使用其他人提供的 tarball,我会选择选项 (2)。