依赖和包管理器之间的区别?

时间:2014-02-05 20:33:39

标签: dependency-management package-managers

实际上,这些本质上是同义词吗?还是有什么我想念的?我使用了Composer(PHP),CocoaPods(Objective-C)和Bundler(Rails)。我相信他们将自己描述为依赖管理者,但他们是否也可以被视为包管理人员?

2 个答案:

答案 0 :(得分:0)

我会说是的。鉴于javascript社区称这些工具的版本(NPM和bower)为“ 包管理器 ”,我认为开发社区基本上将这些术语同义化。

编辑我要稍微回溯一下。一般来说,我认为术语package manager与第三方代码的交付和安装有关。也就是说,npm被正确命名为node package manager。我认为,dependency manager是另一回事。它是一个运行时编排工具。例如,有依赖管理器只是在浏览器中运行,以正确的顺序加载资产文件(想想requireJS,browserify,cartero等等......或者想想Symfony2或Laravel中的依赖注入容器)但你不会'打电话给那些包管理员。包管理器就像Debian的dpkg或节点社区的bower,它实际上为您下载了第三方库(当前不在您的软件套件中)。现在,我认为当包管理器决定足够聪明以解决我们的版本号时,会出现毛刺线。因为像npm这样的工具确保我们声明的每个软件都具有它的依赖关系的所有正确版本(通过为我们下载一系列依赖关系),我们希望将其称为依赖关系管理器。但我认为说它是一个恰好进行版本解析的包管理器更合适。但它确实比运行时工具更像是一种传递机制。

所有这一切,我想听听其他人对此的看法。

答案 1 :(得分:0)

不,他们不是同义词。看看他们差异的答案

https://stackoverflow.com/a/27290095/4016254