docker - 从二进制文件创建 RPM 包不会将文件打包到存档中

标签 docker centos binaryfiles rpmbuild rpm-spec

我正在尝试从打包成二进制文件的节点项目创建一个 RPM 包 pkg .
我创建了一个 rpmbuild /root/rpmbuild 中的骨架.
二进制包被复制到/root/rpmbuild/SOURCES .
我创建了一个 menlolab-runner.service文件在 /root/rpmbuild .

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

%define version %(cat package.json | jq -r '.version')
%define release 1
%define buildroot /root/rpmbuild/BUILDROOT/

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

Group: Installation Script
License: MIT
Source0: 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
mkdir -p %{buildroot}%{_bindir}/
mkdir -p %{buildroot}%{_unitdir}

cp runner %{buildroot}%{_bindir}/menlolab-runner
cp /root/rpmbuild/menlolab-runner.service %{buildroot}%{_unitdir}

%post
systemctl enable %{_unitdir}/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
rm -rf %{buildroot}

%files
%{_bindir}/menlolab-runner
%{_unitdir}/menlolab-runner.service

%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

最佳答案

在您的 %install您必须将文件放入 $RPM_BUILD_ROOT 的部分,所以像:

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

随后,%files部分应该列出已安装的文件,相对于 $RPM_BUILD_ROOT ,例如:
%files
%{_bindir}/menlolab-runner

关于docker - 从二进制文件创建 RPM 包不会将文件打包到存档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60400775/

相关文章:

azure - 如何在应用服务容器中安装 SSH

python - 如果只安装了 Python 3.4,是否可以创建没有管理员权限的 Python 3.8 虚拟环境?中央操作系统

python - 在 CentOS 6.7 版(最终版)上导入 lxml 失败

c - 二进制文件读取 - 写入不起作用

docker - 如何将流利的docker容器通过stdin接收的日志的时间戳更改为UTC?

docker - if else 与 dockerfile 指令

windows - 如何运行本地 Docker 镜像

apache - 当我使用 VMware Workstation 时,我可以从主机访问我的 guest 服务器的本地主机吗?

c - 将二进制字符串作为二进制文件写入文件

c - 在 C 中查找 ELF 二进制文件的 dlopen 调用次数