关于通过apt包管理器安装npm时出现大量依赖的技术咨询
关于通过apt包管理器安装npm时出现大量依赖的技术咨询
哈哈,看到那一大串滚不完的依赖列表,换谁都会忍不住喊“这也太多了吧!”完全理解你的困惑,我来给你拆解一下背后的逻辑:
为什么apt安装npm会有这么多依赖?
这主要是Debian/Ubuntu系Linux的打包哲学在起作用:
- 官方仓库的软件包会尽可能拆分独立组件,把每个功能模块都做成单独的deb包。比如npm运行需要的某个工具函数、底层库,只要其他软件也可能用到,就会单独打包共享,避免重复安装。这种设计虽然会让依赖列表变长,但能提升系统资源利用率和长期维护性。
- 另外,apt里的npm版本通常偏老旧(为了保证系统整体稳定性),旧版本的npm本身依赖的模块更多,再加上官方打包时的极致拆分策略,就出现了这172个依赖的“壮观”场面。
是不是安装npm总会这样?
当然不是!这只是apt官方源安装的特殊情况,换其他方式安装,依赖会简洁很多:
- 通过Node.js官方包或NodeSource PPA安装:npm是和Node.js绑定发布的,安装Node.js时会自动带上npm,这时的依赖主要是Node.js本身的系统依赖,不会拆分出这么多细碎的deb包。
- 用nvm(Node版本管理器)安装:nvm会在你的用户目录下独立管理Node.js和npm,完全不涉及系统级的deb包,安装过程看不到这么多系统依赖,还能灵活切换Node.js/npm版本,非常适合开发场景。
如果只是想快速用上npm,又不想被一堆系统依赖困扰,推荐试试nvm或者NodeSource的PPA,体验会顺畅很多。
备注:内容来源于stack exchange,提问作者GPWR




