何时从官方存储库安装软件包.deb
,何时使用语言的软件包管理器安装软件包,一般规则是什么?上游存储库中的软件包通常至少略微过时,但我也不想让我的软件包与“官方”软件包发生冲突,而且 aptitude 似乎在许多情况下都会强迫我安装官方软件包。
答案1
这是一个很难普遍回答的问题。
官方的 .deb 软件包为您提供稳定性和 Ubuntu 社区的全面支持。如果您不需要最新版本,您可能更适合使用此解决方案。您还可以使用软件包管理器支持更新、删除等。
如果您需要上游的支持,或者需要最新的功能,那么您最好从 CPAN、gem、pear 等发行系统获取。
答案2
以我的经验(当然不是那么丰富)来看,特定语言的包管理器在任何地方都不如.deb
完全外部语言的边界(我特别考虑了对 C 编码库的依赖,这些库被包包装起来以供 Python、Perl、Ruby 等使用)。
如果(比如说)一个 Pypi Python 包'barfoo'
需要一些库libfoobar
来构建_bf.so
包使用的 Python 扩展,并且libfoobar
至少需要在 release 中5.2
,那么你就需要跟踪哪个.deb
供应商提供了合适的版本libfoobar
(如果 Pypi 包接近上游的最新和最好的版本,那么你可能找不到)——并且以某种方式跟踪它,以防你以后卸载barfoo
(因此libfoobar
供应商变得“孤立”,可以/应该被删除)。
我认为将 Pypi/CPAN/etc 与其他软件包分发系统集成的问题尚未得到解决。为了尽量减少管理麻烦,如果你能与官方.deb
(不需要最新最好的 feechurz 等),我认为这样做是明智的;当然,在另一个极端,对于您做想要超级更新(例如,您是软件包的上游作者/维护者之一;-),可以选择在软件包使用的任何版本控制系统(svn、hg、git、bazaar 等)中保留一个新存储库,并保持从源代码构建。Pypi/CPAN/&c 处于“中间”。当然,有时这种中间方式也是可取的。
而且,可以考虑的一个选项是构建您自己的.deb
包(基于 Pypi/CPAN/&c 包,甚至基于上游源)并保留此类包的存储库(针对那些您认为官方.deb
存储库太差或太落后的包)。它不会比以其他方式安装麻烦太多(手动跟踪语言之外的依赖项),并且有助于识别“孤立包”等(此外,如果您发布您的打包,您还可以帮助其他人;-)。
答案3
我一直反对使用 Aptitude 来管理来自其他包管理器的包。CPAN、Gems、Pecl、Pear 等是各自语言的包管理器。在我看来,它们是你应该默认使用的,因为它们就是为此而设计的。更不用说现在大多数这些都处理升级和更新(gem update、gem upgrade 等)。这就像使用 yum 在你的 Ubuntu 机器上安装 Apache。
话虽如此,但还是有少数情况下 Aptitude 版本占主导地位。其中一种情况是,当语言包管理器中的模块安装失败时(这通常是由于各种配置问题)我很少遇到这种问题 - 但当我遇到时,Aptitude 中的相关包就可以解决问题。
我认为优先级是语言包管理器 > Aptitude。