【发布时间】:2018-06-21 19:05:11
【问题描述】:
我需要在我创建的 netns 中运行 node-red。我在这个命名空间中有一个专用的调制解调器接口,只有 node-red 才能访问。
我使用的是 Ubuntu 16.04 并安装了 npm -> 然后为 node.js 安装 nvm 版本管理器以安装 8.11.3,然后安装 node-red 本身。
我只安装了 nvm 版本 8.11.3 并将其设置为默认值。我希望这是唯一可以在任何地方运行的版本。
当我从常规 shell 启动 node-red 时,它会使用 node.js 版本 8.11.3 启动
当我在 netns 中启动 node-red 时,它也会启动 node.js 版本 8.11.3 [我使用 -u /directory 选项运行与普通用户相同的流程]
问题: 当我从自动 shell 脚本在 netns 中启动 node-red 时,它会使用 node.js 版本 4.9.1 启动 [我使用 -u /directory 选项来运行与普通用户相同的流程]
Welcome to Node-RED
===================
21 Jun 11:42:15 - [info] Node-RED version: v0.18.7
21 Jun 11:42:15 - [info] **Node.js version: v4.2.6**
21 Jun 11:42:15 - [info] Linux 4.13.0-45-generic x64 LE
脚本中的启动行是:
ip netns exec sensor node-red -u /home/iotdemo/.node-red
"sensor" 是 netns 名称,-u 选项指向与普通用户相同的流目录。
为什么它会以我什至没有安装的 node.js 版本启动,以及如何让它以所需的 v8.11.3 启动?
我怀疑它与 root 与用户 (iotdemo) 有关,但它似乎在命名空间中启动一个进程,您必须以 root 身份执行。
感谢您考虑这个问题。
【问题讨论】:
-
如果您以 root 身份运行
node -version会发生什么? -
@hardillb 如果我输入 sudo node -v 输出正确显示 v8.11.3 ;如果我输入 sudo su - 然后运行 node -v 我会得到旧版本显示为 v4.2.6
-
那不改变环境,运行
sudo su -然后运行node -version
标签: node.js node-red nvm linux-namespaces