通过从源代码构建您可以获得什么好处吗?代码是否更适合您的硬件架构?总体来说优化得更好吗?
为什么有人会选择从源代码构建而不是使用像 APT/yum 这样的包管理系统?如果存在某种优化收益,那么它何时会超过包管理系统的好处?
答案1
从源代码构建提供了以下选项,这些选项在使用二进制包管理器的版本时不可用。
从源代码编译允许您:
- 使用特定于处理器的优化
- 使用最新版本
- 了解编译和链接的工作原理(来自@mattdm的建议)
- 修复错误,开发工作
- 设置编译时选项(例如在 vim 中包含 X 功能)
答案2
我最近就做过这件事。
我在 Slackware 11.0 Linux 系统上从源代码编译了 openssl-1.0.something 。我想修补密码登录的问题,以便在登录失败时暂停 7 秒,以便阻止那些烦人的中国 ssh 密码猜测者。
我在同一个 Slackware 11.0 系统上编译了 Apache httpd 2.2.17,因为它附带了 Apache 2.0.something,并且我想使用另一个系统中的 2.2.x httpd.conf。
想想看,我还为同一系统编译了Alpine 2.0(电子邮件客户端,pine后续版本)。为什么选择 Slackware 11.0?它在大约 2003 年配备 Intel“Brookdale”显卡的机器上运行,任何后来的 Slackware 都不支持记录很少的 Intel 显卡。
在另一台机器上,我从 github 获取了 TI ACX111 无线芯片支持并编译了新的驱动程序,使我可以使用 9 美元的无线卡。
我还习惯性地重新编译 Linux 内核,使它们特定于它们运行的机器。
所以就我而言,这是定制、硬件支持和“只是因为”的各种原因。
鉴于我们对统一人群中流行病学的了解(http://www.usenix.org/publications/login/2005-12/openpdfs/geer.pdf),为什么不是每个人都在自己的系统上从源代码进行编译,无论使用什么他们选择的编译时选项?这将产生更多的抗病毒和蠕虫种群。