Answers:
只要有可能,最简单的方法是仅使用nvm
或 .deb
软件包。从长远来看,这可能会为您省去很多麻烦,因此请首先研究一下。似乎.deb
可以通过安装软件包提供的几乎所有与节点相关的东西nvm
。
但是,如果确实不可能,则可以.deb
使用equivs-control
并equivs-build
告诉apt
您已安装依赖项来创建“虚拟” 程序包。请注意,如果您弄错了,这可能会容易混淆。同样,即使您卸载nvm
软件包,apt仍然会认为您拥有在虚拟软件包中定义的替代项,直到您自己卸载虚拟软件包。
首先,安装“ equivs”,以便我们可以构建虚拟包:
sudo apt-get install equivs
创建一个描述虚拟包的控制文件:
cd ~
equivs-control nodejs-dummy
编辑此控制文件:
nano nodejs-dummy
根据需要取消注释并更改控制文件中的行。特别是,设置“ Provides:”行以列出已使用替换的软件包nvm
。例如:
Package: nodejs-dummy
Version: (version slightly higher than what the apt package actually provides)
Maintainer: Your Name <yourname@example.com>
Provides: nodejs
Architecture: all
Description: Something that will remind you what this does ;)
构建包:
equivs-build nodejs-dummy
最后,安装它:
sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb
冲洗并重复使用替换的软件包nvm
。如果某个软件包取决于您替换为的另一个软件包的特定版本nvm
,则可能需要使用该软件包所依赖的确切版本号。我不确定这样做会引起什么问题,并且每当OS软件包更改版本时,您可能都需要继续重建虚拟软件包。
这是nvm分发软件的方式的问题。他们根本没有做任何发行版特定的包装。具体来说,快速阅读了nvm,它们只是wget'ing二进制文件。例如,这是为nodejs 6安装的内容:https ://nodejs.org/.../lates.../node-v6.3.1-linux-x64.tar.gz 它不包含任何标准.deb或.rpm元数据,因此在他们正确发布实际软件包之前,发行人级别的软件包管理者几乎无法做任何事情,而且它们很可能会相互冲突。如果我了解nvm释放适当软件包的意义,并不是他们真正感兴趣的,因为它将与支持发行版特定的软件包联系在一起。因此,我们使用的是nvm。也许对他们的git提出问题。这只能由nodejs社区进行更正。
值得注意的是,npm和nvm当前似乎不支持任何代码签名(source)的概念,因此与大多数发行版的软件包管理器中都很好支持的发行版打包相比。这是安装系统软件包的相当不安全的方法。