从二进制文件创建RPM软件包不会将文件打包到归档文件中

问题描述 投票:0回答:1

我正在尝试使用pkg将打包到二进制文件中的节点项目创建为RPM包。我在rpmbuild中创建了一个/root/rpmbuild骨架。二进制包已复制到/root/rpmbuild/SOURCES。我已经在menlolab-runner.service中创建了一个/root/rpmbuild文件。

我正在跳过%prep文件中的%build.spec部分。在安装部分中,二进制文件将复制到/usr/bin文件夹。在%post部分中,服务文件被复制到/etc/systemd/system/

%define name %(cat package.json | jq -r '.name')
%define version %(cat package.json | jq -r '.version')
%define release 1

Name: %{name}
Version: %{version}
Release: %{release}
Summary: menlolab-runner

Group: Installation Script
License: MIT
Source: runner
AutoReqProv: no

%description
The agent deployed on private and public infrastructure to manage tasks.

%global debug_package %{nil}

%prep

%build

%pre
getent group menlolab-runner >/dev/null || groupadd -r menlolab-runner
getent passwd menlolab-runner >/dev/null || useradd -r -g menlolab-runner -G menlolab-runner -d / -s /sbin/nologin -c "menlolab-runner" menlolab-runner

%install
cp -r /root/rpmbuild/SOURCES/runner /usr/bin/menlolab-runner

%post
cp /root/rpmbuild/menlolab-runner.service /etc/systemd/system/
systemctl enable /etc/systemd/system/menlolab-runner.service
chmod ugo+x /usr/bin/menlolab-runner
mkdir -p '/etc/menlolab-runner/'
chown -R 'menlolab-runner:menlolab-runner' '/etc/menlolab-runner'
chmod 700 '/etc/menlolab-runner'
mkdir -p '/var/lib/menlolab-runner/'
chown -R 'menlolab-runner:menlolab-runner' '/var/lib/menlolab-runner/'
mkdir -p '/var/lib/menlolab-runner/jobs/'
chown -R 'menlolab-runner:menlolab-runner' '/var/lib/menlolab-runner/jobs/'
chmod 700 '/var/lib/menlolab-runner/jobs/'
mkdir -p '/var/log/menlolab-runner/'
chown -R 'menlolab-runner:menlolab-runner' '/var/log/menlolab-runner/'
mkdir -p '/var/cache/menlolab-runner/'
chown -R 'menlolab-runner:menlolab-runner' '/var/cache/menlolab-runner/'
groupadd docker
usermod -aG docker menlolab-runner

%clean

%files
%defattr(644, menlolab-runner, menlolab-runner, 755)

我的问题是,在执行.rpm之后,rpmbuild -ba /path/to/spec/file不包含文件。

我认为是因为我没有在%files部分中输入任何内容。我不确定要在本节中添加什么。如果我将路径添加到二进制文件,则会收到以下错误:

error: File not found: /root/rpmbuild/BUILDROOT/menlolab-runner-0.2.5a2-1.x86_64/root/rpmbuild/SOURCES/runner

docker centos binaryfiles rpmbuild rpm-spec
1个回答
0
投票

%install部分中,您必须将文件放入$RPM_BUILD_ROOT,所以类似:

%install
cp runner $RPM_BUILD_ROOT%{_bindir}/menlolab-runner

随后,%files部分应列出相对于$RPM_BUILD_ROOT的已安装文件,例如:

%files
%{_bindir}/menlolab-runner
© www.soinside.com 2019 - 2024. All rights reserved.