这是安装NodeJS的一种很酷(但很烦人)的方式。
如果tar tf /usr/save/node-v4.2.1-linux-x64.tar.gz
在文件上运行,将会看到类似以下内容:
node-v4.2.1-linux-x64/
node-v4.2.1-linux-x64/bin/
node-v4.2.1-linux-x64/bin/npm
node-v4.2.1-linux-x64/bin/node
node-v4.2.1-linux-x64/share/
node-v4.2.1-linux-x64/share/man/
node-v4.2.1-linux-x64/share/man/man1/
基本上,这意味着当您解压缩此tar存档时,它将解压缩到一个文件夹,node-v4.2.1-linux-x64
其中包含所有这些子文件夹(以及节点安装)。实际上,您甚至可以尝试进行以下提取以获得更好的主意:
mkdir /tmp/node
cd /tmp/node
tar xvf /usr/save/node-v4.2.1-linux-x64.tar.gz
如果您运行ls
,则会看到一个node-v4.2.1-linux-x64
文件夹。
现在,--strip-components 1
对提取过程进行一些有趣的操作。来自man tar
:
--strip-components=NUMBER
strip NUMBER leading components from file names on extraction
基本上,这意味着当tar
要提取存档时,它会假装好像node-v4.2.1-linux-x64
文件夹不存在。相反,它会提取物bin/
,share/
和所有直接的其他文件夹。
实际上,您可以尝试:
mkdir /tmp/node
cd /tmp/node
tar xvf /usr/save/node-v4.2.1-linux-x64.tar.gz --strip-components=1
如果运行ls
,您将看到不再有node-v4.2.1-linux-x64
文件夹。这只是bin/
,include/
,lib/
,和share/
(均不约而同地在文件夹中/usr/local/
)。
您的第二个命令将无法使用,因为它只是将node-v4.2.1-linux-x64
文件夹解压缩到了该文件夹/usr/local
(甚至根本没有运行过)。如果您运行ls /usr/local
,您甚至可能会看到该文件夹在周围徘徊。它没有用,请随时使用删除rm
。至于为什么没用,请继续阅读...
现在,我们已经解释了tar命令的工作原理,我们可以解释如何安装它。
每个Linux系统都有一个称为$PATH
变量的变量,它确定可执行文件的存储位置。在这些地方是/usr/local/bin
。当您在内部提取二进制文件时/usr/local
(我确信您的安装说明是这样),将/usr/local/bin/node
按照提取的方式写入NodeJS二进制文件。同样,所有库都被添加到本地库文件夹,几乎所有内容都归其所属。
现在,警告(以及为什么令人讨厌)是apt
不会看到或理解或意识到正在发生的事情。您将无法通过sudo apt upgrade
或类似方式对其进行更新。您需要手动进入并清理旧的NodeJS安装,然后放入新的以备不时之需。
我建议您sudo apt install nodejs-legacy
改为跑步。减轻痛苦,它会自动为您更新。
jodejs
通过apt
命令安装:sudo apt install nodejs nodejs-legacy
。