已关闭。此问题需要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
为了能够生成此软件包,我需要更改什么?
1条答案
按热度按时间rjjhvcjd1#
解压缩分发文件
onboarding-1.0.tar.gz
并没有创建一个默认名称的目录(%{name}-%{version}
,在本例中是onboarding-1.0
)。看起来tarball根本不包含目录,这是一种糟糕的形式。您有两种主要的选择:1.重新打包源文件,使其包含所需的目录:
或
1.通过将
-c
选项添加到%autosetup
宏调用中,指示rpmbuild自己创建所需的目录:如果您首先自己构建tarball,我会选择选项(1),但如果您使用的是其他人提供的tarball,我会选择选项(2)。