Node.js 从打包为二进制文件的NodeJS项目构建RPM包

Node.js 从打包为二进制文件的NodeJS项目构建RPM包,node.js,binaryfiles,rpmbuild,rpm-spec,Node.js,Binaryfiles,Rpmbuild,Rpm Spec,我试图将一个NodeJS项目打包为一个RPM,我最初使用npm中的projection包创建构建目录结构,生成tar存档,并创建一个规范文件。这件事一直困扰着我 为了避免依赖性问题,我使用pkg将节点项目打包为二进制可执行文件 我正在使用docker和centos构建RPM,我已经手动创建了构建框架,/root/rpmbuild/RPMS,/root/rpmbuild/SOURCES,等等。。。我已将打包的二进制文件放入/root/rpmbuild/SOURCES 我已经从menlolab ru

我试图将一个
NodeJS
项目打包为一个RPM,我最初使用
npm
中的
projection
包创建构建目录结构,生成
tar
存档,并创建一个规范文件。这件事一直困扰着我

为了避免依赖性问题,我使用
pkg
将节点项目打包为二进制可执行文件

我正在使用
docker
centos
构建RPM,我已经手动创建了构建框架,
/root/rpmbuild/RPMS
/root/rpmbuild/SOURCES
,等等。。。我已将打包的二进制文件放入
/root/rpmbuild/SOURCES

我已经从
menlolab runner.spec
中删除了构建步骤,如下所示:

%define name menlolab-runner
%define version 0.2.6
%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 /runner/rpm-build/menlolab-runner.service /etc/systemd/system/
systemctl enable /usr/lib/menlolab-runner/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/'
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)
/usr/lib/menlolab-runner
/var/log/menlolab-runner
%define name menlolab-runner
%define version 0.2.6
%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 /runner/rpm-build/menlolab-runner.service /etc/systemd/system/
systemctl enable /usr/lib/menlolab-runner/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/'
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)
我的
systemd
服务文件如下:

[Unit]
Description=The agent deployed on private and public infrastructure to manage tasks.
After=network.target nss-lookup.target

[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/usr/lib/menlolab-runner
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=menlolab-runner
User=menlolab-runner
Group=menlolab-runner

[Install]
WantedBy=multi-user.target
要开始构建过程,请使用rpmbuild-bb SPECS/menlolab runner.spec

我不断发现以下错误:

RPM build errors:
    File not found: /root/rpmbuild/BUILDROOT/menlolab-runner-0.2.6-1.x86_64/usr/lib/menlolab-runner
    File not found: /root/rpmbuild/BUILDROOT/menlolab-runner-0.2.6-1.x86_64/var/log/menlolab-runner

我不确定是什么导致了这些问题,因为我跳过了规范文件的
%build
部分。可以看到
rpmbuild
的整个输出似乎
%files
部分导致了问题,删除最后两行
/usr/lib/menlolab runner
/var/log/menlolab runner
已经解决了问题

spec
文件的最终版本如下所示:

%define name menlolab-runner
%define version 0.2.6
%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 /runner/rpm-build/menlolab-runner.service /etc/systemd/system/
systemctl enable /usr/lib/menlolab-runner/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/'
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)
/usr/lib/menlolab-runner
/var/log/menlolab-runner
%define name menlolab-runner
%define version 0.2.6
%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 /runner/rpm-build/menlolab-runner.service /etc/systemd/system/
systemctl enable /usr/lib/menlolab-runner/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/'
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)