我已经为作为 systemd 服务运行的 NodeJS 应用程序创建了第一个 rpm 包。
因为我不想将 node_modules 文件夹与 rpm 一起打包(据我所知,npm install 依赖于系统/节点版本,因此可能会产生其他问题?)我将其放在 spec 文件的 %post 部分:
npm install --prefix /opt/%{modname} --production
第一个问题是,生成的 node_modules 文件夹现在归 root 用户所有,而不是 app 用户所有。
另一个问题是,从系统中卸载 rpm 包不会删除 node_modules 目录和生成的 package-lock.json 文件。
我意识到我可以通过在 %postun 和 %post 部分中添加这个来解决这两个问题,但这种方式对我来说似乎非常“黑客”:
%post
...
%__chown -R %{username}:%{username} /opt/%{modname}
%postun
...
%__rm -rf /opt/%{modname}
是否有“正确”的方法来完成我想要做的事情?
以下是整个 spec 文件:https://gist.github.com/shunkica/d6064c1a743029ea75328114b6dc036d