![基于源代码的发行版 vs 基于预构建包的发行版](https://linux22.com/image/485103/%E5%9F%BA%E4%BA%8E%E6%BA%90%E4%BB%A3%E7%A0%81%E7%9A%84%E5%8F%91%E8%A1%8C%E7%89%88%20vs%20%E5%9F%BA%E4%BA%8E%E9%A2%84%E6%9E%84%E5%BB%BA%E5%8C%85%E7%9A%84%E5%8F%91%E8%A1%8C%E7%89%88.png)
我想知道大家的普遍偏好是什么,这种偏好从何而来。在积极使用 FreeBSD 几年后,我倾向于使用 Gentoo,但我有过不愉快的经历,因为 Gentoo 安装在一台非常老旧的机器上,构建时间也很长,浪费了宝贵的时间。
如果是预先构建的软件包,那么浪费的时间就会少一些。(我知道 FreeBSD 有二进制软件包,但问题是它们似乎在某个版本发布后就无人维护了,而获得新鲜内容的唯一方法就是自己编译。真的不知道 Gentoo 怎么样)。
您对此有何看法,您是否有过从基于源的发行版转换到其他发行版的经历?
编辑:我觉得我应该澄清一下我最近的“经历”
故事是这样的。换了工作后,我必须维护一台相当老旧的机器,它托管着 LDAP(OpenLDAP)和办公室用户登录信息。我不得不重启这台机器(它已经 8 个月没有重启了)。重启后,OpenLDAP 没有上线。似乎 slapd 和其他一些二进制文件在系统运行时以某种方式被删除了。第一次构建 ldap 包后,我想知道为什么我没有得到 slapd 二进制文件(花了 15 分钟)。一段时间后,我把问题归结为默认启用的“最小”标志,它只构建库,没有服务器二进制文件。最终结果是 - 大约 1 小时的办公效率下降,同事们借口说“我没有这样做,因为我们的主服务器坏了”。
--
非常感谢您的回答,但到目前为止,还没有令人信服的理由使用基于源代码还是基于预构建包。如今,存储空间不是问题。
答案1
我维护着相当数量的 Gentoo 机器。
不是因为我们关心幼稚的 funroll-loop 速度调整。我们关心的是灵活地安装我们想要的东西,而不是每一个贡献者认为我们可能有一天我们会想要。我们对 Linux、编译和库的工作方式非常熟悉。我们不希望一切都被抽象成一个黑匣子。
您应该选择使用您觉得最舒服的版本。以下是一些细节,可能有助于消除您对 Gentoo 的恐惧。
在现代硬件上,构建时间相对可以忽略不计。如果您的机器具有 N+1 冗余,则更是如此。
您可以对 Portage 的行为方式挑剔,比如
MAKEOPTS="-l 1.0"
在 make.conf 中放置以确保当平均负载上升到令人难以忍受的高水平时,新的构建会退出。如果您愿意,可以使用 Portage 的二进制包。镜像提供了许多常用包,您也可以使用 来安装自己的包
--buildpkgonly
。如果您拥有大量机器,那么您可以从指定构建主机或分布式编译中受益。
目前正在使用的 Portage 最新稳定版本不太可能让您在升级时陷入困境。冲突和阻塞的故事几乎已成为过去。
如果您要管理的机器太多,以至于升级变得很麻烦,那么您应该考虑 Puppet/BCFG/cfengine ;)
针对问题编辑进行更新:
虽然我理解您所描述的情况,但这不是基于源代码的发行版的症状,也不是通过使用基于软件包的发行版可以预防的。这是以下原因造成的:
- 你自己天生的陌生感,以及
- 你的前任糟糕的内部文件
说实话,我已经很长时间没有广泛使用过任何其他 Linux 发行版了。因此,如果你把一台 Debian 机器(例如)放在我的腿上,并告诉我 OpenLDAP 在重启后无法正常工作,那么我也可能会花 15 分钟或一个小时来解决这个问题。这并不是因为我对 Linux 不太了解,或者 Debian 不是一个好的操作系统,而主要是因为我记不清 Debian 的 RC 脚本或软件包系统的细节。这就是为什么内部文档在组织中至关重要。它应该有助于启动不熟悉的人并填补其他人的空白。即使他们确实知道一切。
只是关于 Gentoo 的一个简短说明。Portage 的 USE 标志非常有用,“最小”是我经常使用的。例如,我不希望将软件包的服务器二进制文件安装在在其生命周期内只会作为客户端的机器上。不必要地存在它们可能会增加复杂性,甚至会造成安全问题。这从来都不是空间问题。您可以在使用参数开始编译之前查看软件包将采用哪些 USE 标志和依赖项(以及不会采用哪些)-av
。所以你不应该感到惊讶。
GNUix> 抱歉,快点!
答案2
我不会评论你是否应该使用 Gentoo - 或者从源代码构建是否“值得”
我要说的是,我使用 Gentoo 和 Ubuntu。我以前在所有 GNU/Linux 机器上使用 Gentoo,但后来决定在我的桌面上使用 Ubuntu 更容易管理。我和管理员一样,认为在服务器上使用 Gentoo 是个好主意 —— 并且几乎在我所有的个人服务器上都使用它。
除此之外,我比从源代码构建东西或调整 CFLAGS 更喜欢 Portage。Portage 无疑是我用过的 GNU/Linux 中最好的软件包和系统管理工具。我可以创建一个精确的环境,只包含我需要的东西,不需要其他任何东西,而且我可以在不超出我的软件包管理系统的情况下完成此操作。我不必安装 postfix,只是因为一些打包人员认为它是“必要的”。我不需要安装 mono,因为我想运行 Gnome,我根本不安装 Tomboy。快速浏览此 Ubuntu 桌面上已安装的软件包显示它已安装 bind?为什么?它没有任何用处,我没有在这台计算机上运行 DNS 服务器,我当然不需要它的文档,但它就在这里。
缺点是……时间。不仅构建软件包需要时间,维护系统也需要时间。我可以非常确定我可以运行 sudo aptitude update {upgrade} 而不用担心任何事情……另一方面,在更新 Gentoo 机器时,您必须非常小心小细节,并确保您需要(并准备好)它要做的事情。我之所以将桌面换成 Ubuntu,其“压死骆驼的最后一根稻草”是 udev 的升级破坏了我的设置——我不想尝试修复它,而是想完成我试图完成的工作。所以我认为我真的不在乎绑定文档是否占用了我的桌面空间,因为我有空间。
然而,在我的服务器上,情况就完全不同了。我想控制环境的一切,安装的软件包,以及我想要控制的每一个小细节——Gentoo 让我轻松做到了这一点。
答案3
生命太短暂,没有时间进行基于源代码的发行。我还有更重要的事情要做。比如使用电脑。
答案4
我不会直接在生产服务器上使用构建机制。从我使用 Gentoo 的日子起,我就知道有可能拥有一个构建主机并在该主机上创建所需的软件包,这样你就可以在专用主机上使用适合你需求的编译标志来消耗 CPU 周期。
总体而言,没有太大区别,我们几乎所有的服务器都运行 Debian,但我们最终还是拥有一个构建主机。我们需要一些无法以 deb 形式获得的软件包,因此我们根据需要设置了一个 reprepro 和一个构建主机,构建主机几乎没有维护(就“它是否有效”而言),因为重新部署只需几分钟,因为我们可以通过网络启动它,它会自动重新部署。
无论是 BSD 移植版/Gentoo/Debian,真正的利润都来自于使用一个系统(如在不同的主机上收集提供商业价值的服务),该系统可以最大限度地减少资源浪费,并且易于维护。我们之所以选择 Debian,是因为安全更新是理所当然的,而且它们是预编译的,这样我们就不必在安全更新发布时“浪费”时间重建软件包。这是我能想到的基于源代码的发行版与基于二进制的发行版的唯一缺点。