создание пакета RPM из двоичного файла не упаковывает файлы в архив - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь создать пакет 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

1 Ответ

2 голосов
/ 25 февраля 2020

В вашем разделе %install вы должны поместить файлы в $RPM_BUILD_ROOT, что-то вроде:

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

Впоследствии в разделе %files должны быть перечислены установленные файлы относительно $RPM_BUILD_ROOT Например:

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