这是安装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。