我对 Linux 世界还很陌生,我有一个 Node 应用程序,我想通过 apt 存储库分发它,这就是我现在所做的:
- 将节点二进制文件放入节点应用程序文件夹中。
- 使用氟PM构建一个 .deb 包,该包提取 /opt/myNodeApplication 中的节点代码和 /usr/local/bin 中名为“myNodeApplication”的 sh 脚本。
脚本是这样的:
#!/bin/bash
cd /opt/myNodeApplication
./node app.js
这允许我从任何地方从 shell 调用 myNodeApplication。
问题是我怀疑这是正确的方法,所以我想对我的解决方案提供一些意见,问题是:
- 将节点应用程序提取到/opt/myNodeApplication 中可以吗?或者还有更好的地方吗?
- 我应该将脚本放在哪里来启动应用程序?我很确定 /usr/local/bin 不是正确的位置,因为该脚本不是“bin”。
- 有没有更好的方法来完成整个任务?也许根本不使用脚本?
预先非常感谢您。
答案1
提取节点应用程序可以吗
/opt/myNodeApplication
?或者还有更好的地方吗?
这更多的是一个意见问题,但我认为你这样做很好。这种事情的标准是文件系统层次结构标准, 其中有更具体的要求/opt
,但它是您系统的软件包,所以...
我应该将脚本放在哪里来启动应用程序?我很确定
/usr/local/bin
这不是正确的地方,因为脚本不是“垃圾箱”。
如果您查看内容,/usr/bin
您会发现bin
目录中包含大量脚本;.../bin
目录的意义在于包含可执行命令,而不考虑其实现细节。因此,将脚本存储在其中/usr/local/bin
以使您的应用程序更易于启动是可以的。
有没有更好的方法来完成整个任务?也许根本不使用脚本?
实际上,您可以直接使 Node 脚本可执行,并在顶部添加以下 shebang 行:
#!/usr/bin/env node
(看https://stackoverflow.com/questions/24253027/node-and-shebang-help-executing-via-command-line了解详情)。然后您可以将您的重命名app.js
为 justapp
并让用户直接运行它...(这假设它可以使用除 之外的工作目录运行/opt/myNodeApplication
。)
如果您对将 Node 应用程序打包为包感兴趣.deb
,请查看npm2deb
,它可能会派上用场。