为什么Erlang没有像gem这样的包装管理系统呢?

Zub*_*air 5 erlang

好吧,这听起来有点像咆哮,但我想知道是否有技术原因,Erlang默认没有合适的包管理系统.

Jon*_*tar 15

真的没有重大的技术原因.只是不同的需求,因为设置和安装erlang软件的经典方法是应用程序.还有一些使用版本.

通常你会看到erlang软件完全自我分配.也就是说,它将所有库和虚拟机一起包含在一个包中,不需要任何种类的外部依赖.您甚至可以在包的开发版本中看到这一点.例如,Riak数据库的源代码树中包含所有依赖库.

像许多来自Ruby(像我一样)可能会想到这一点并不是一个坏主意.这样每个应用程序都是自我依赖的.由于Erlang的主要目标之一是成为最可靠的东西,因此世界上每个应用程序都可以拥有自己的库版本.因此,确保一个应用程序不会使另一个不稳定.


DSi*_*mon 8

试试螺纹钢 ; 它是erlang的构建系统,包括依赖管理系统.它没有像gem那样使用rubygems.org的中央存储库,所以你必须指定git urls.但是,它确实可以省去必须下载嵌套deps的麻烦; 它照顾到了这一点.

它坚持使用Erlang的理念,将下载的deps保存在项目目录中,而不是放在中央系统位置; 这与bundler的部署模式类似.