7. 软件包管理
2014年12月27日 · 2:28:47
本期《内核恐慌》深入探讨了软件包管理(package management)的方方面面。Rio和吴涛首先解释了包管理的概念,包括开发时依赖库和部署时分发软件的区别,并对比了Windows的DLL hell与Linux发行版(如Debian的DEB和Red Hat的RPM)的解决思路。随后讨论了macOS上的Homebrew如何凭借Ruby DSL和GitHub生态取代MacPorts,以及Windows的NuGet包管理器。语言层面的包管理工具是吐槽重点:Java的Maven因XML配置和依赖冲突被痛批,Python的setuptools、distutils、pip和Buildout四分五裂,而Node的npm和Ruby的Gem则因清晰的设计得到好评。最后介绍了Go语言去中心化的go get及其版本管理难题,并展望了跨语言统一包管理的可能性。