我打算编写一些脚本来通过服务器上的命令行管理任务。
我将在支持它的服务器中使用 NodeJS Debian 包,但我的几台服务器仍在使用 Debian 3.1(sarge)。
我知道这些服务器有 Rhino 软件包,我编写的脚本可能仍可以在 Rhino 上以相同的方式运行?(考虑到我不使用可能不可用的 JavaScript 新功能)
如果没有,我可以使用什么解释器在旧版 Debian 上执行 JS 命令行脚本,以便与我在新版 Debian 上通过 NodeJS 运行的脚本兼容?
答案1
我认为不可能编写出可以同时在新 Node.js 和旧 Rhino 上运行的复杂程序。
但是如果您能够在那些旧系统上安装软件包,那么您大概也能够从源代码安装软件(至少如果您想在那里安装自己的软件,您必须这样做)。
从源代码安装 Node 并不困难 - 请参阅我最近回答过关于从源代码安装 Node 的问题(见更新部分)。您甚至可以按照自己的脚本专门安装 Node,以免破坏文件系统。
例如,假设您想要将脚本安装在 /opt/X(用更好的名称替换 X)中,您可以这样做:
# create a directory:
mkdir -p /opt/X/node-src
# change dir:
cd /opt/X/node-src
# download the Node source:
curl -O https://nodejs.org/dist/v4.4.5/node-v4.4.5.tar.gz
# extract the archive:
tar xzvf node-v4.4.5.tar.gz
# go into the extracted dir:
cd node-v4.4.5
# configure for installation:
./configure --prefix=/opt/X/node-v4.4.5
# build and test:
make && make test
# install:
sudo make install
# make a symlink to that version:
sudo ln -svf /opt/X/node-v4.4.5 /opt/X/node
# create a directory for your scripts:
mkdir /opt/X/scripts
现在输入你的脚本/opt/X/scripts
并记住以一行开头:
#!/opt/X/node-v4.4.5/bin/node
(针对给定版本)
或者:
#!/opt/X/node/bin/node
(使用你的符号链接)
通过使用类似以下内容来添加/opt/X/scripts
到您的:PATH
PATH="/opt/X/scripts:$PATH"
在某个地方设置PATH
(例如.profile
或.bashrc
)将使脚本的执行变得容易。如果您希望脚本和node
/npm
二进制文件都易于执行,则可以PATH
像这样设置:
PATH="/opt/X/scripts:/opt/X/node/bin:$PATH"
当然,你可以将“X”更改为更好的名称,或者安装/opt/node
节点我在这里描述或者任何您想要的地方(当然请记住在上面的命令中输入您自己的路径)。
这样,您就可以在计算机上使用现代、安全且一致的 Node 版本。在这种情况下,我建议这样做,因为编写可以在新旧 Node 和 Rhino 上运行(并执行任何有用的操作)的代码似乎并不容易,甚至不可能。Node 不仅是 JavaScript,而且还是一个复杂的 I/O 系统、libuv 和整个 npm 模块生态系统。
正如那句老话所说,“移植 shell 比移植 shell 脚本更容易”(Larry Wall),因此对于您而言,安装 Node 和脚本实际上可能比以无需 Node 即可工作的方式编写脚本更容易(不过如果您能做到,请在此处发表评论,我当然想知道您是如何做到的)。