包管理器与依赖管理器

Erl*_*lan 25 package-managers dependency-management

有什么区别?

在许多地方,他们可以互换使用,但我认为它们是不同的.简而言之,关键的区别是什么?

Erl*_*lan 38

包管理器用于PROJECT的SYSTEM和Dependency Manager


包装经理

用于配置系统,即设置开发环境,使用这些设置可以构建许多项目.

依赖经理

具体到项目.您可以管理单个项目的所有依赖项,并且这些依赖项将保存在项目中.当您启动另一个项目时,您应该再次管理您的依赖项.


示例:在PHP世界中,COMPOSER作为依赖管理器,PEAR作为包管理器.当使用作曲家时,所有的设置和扩展都是针对单个项目,其中pear设置将新扩展和库设置为php核心.


Mar*_*rko 7

Composer的网站上有一个非常简单的解释:

Composer不是像Yum或Apt一样的包管理器.是的,它处理"包"或库,但它在每个项目的基础上管理它们 ,将它们安装在项目内的目录(例如供应商)中.默认情况下,它不会全局安装任何内容.因此,它是一个依赖管理器.

  • 有趣的阅​​读:https://medium.com/learnwithrahul/understanding-npm-dependency-resolution-84a24180901b (3认同)
  • @rahul286 Composer 可以全局安装以方便起见,但这不是它的主要焦点或架构理念。例如,这会影响依赖项解析算法,该算法在 Composer 和 NPM 中的行为有所不同。如果我没记错的话,Composer 会读取所有依赖解析树并尝试找到满足所有包约束的共同祖先包。如果它不能做到这一点,它就不会成功完成。我对 NPM 不熟悉,但我认为在 NPM 中你会得到每个版本的包,而不是一个共同的祖先。 (2认同)