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)