从源代码构建工具/库有什么优势?


8

通过源代码构建,您会获得任何好处吗?代码是否针对您的硬件架构进行了更好的优化?总的来说,优化效果更好吗?

为什么有人选择从源代码构建而不是使用像APT / yum这样的软件包管理系统?如果有某种形式的优化收益,什么时候超过了软件包管理系统的收益?


您的两个选择不是互相排斥的。您可以自定义包的来源,甚至可以自己打包。
Faheem Mitha

Answers:


11

从源代码构建提供了以下选项,这些选项在使用二进制软件包管理器中的版本时不可用。

从源代码进行编译可以使您:

  • 使用特定于处理器的优化
  • 使用最新版本
  • 了解编译和链接的工作方式(@mattdm的建议)
  • 修复错误,开发工作
  • 设置编译时选项(例如,在vim中包括X功能)

1
对于普通的台式机用户来说,特定于处理器的优化是否值得以手动管理软件之间的依赖关系的复杂性为代价?是2%的收益还是性能的翻番?
Doug T.

1
@Doug对于CPU繁重的软件,差异可以为10..20%,对于典型的台式机软件,差异为零。如果您想尝试从源代码编译软件,我建议您使用基于源代码的发行版(例如Gentoo)。在二进制发行版中从源代码安装软件(除了安装在/ opt中的第三方软件)是一个非常糟糕的主意。
西蒙·托斯

我认为性能不值得超出软件包管理器的依赖范围。但是,有一些基于源的程序包管理系统可以跟踪依赖关系,并允许您从源代码进行编译。上面列出的您不能从中获得的好处仅仅是“非常最新的版本”-程序包管理器选择了一个可以与其余发行版一起使用的版本。
肖恩·高夫

5
我要补充的一件事是:深入了解幕后情况。值得一试。
mattdm 2011年

7

我最近刚做完这件事。

我在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?它运行在带有Intel“ Brookdale”图形的大约2003年的计算机上,并且任何以后的Slackware都不支持记录不良的Intel图形。

在另一台机器上,我从github上获取了TI ACX111无线芯片支持,并编译了一个新驱动程序,使我可以使用价格为9美元的无线卡。

我还习惯性地重新编译Linux内核,以使其特定于它们所运行的计算机。

因此,就我而言,这是定制,硬件支持和“正因为如此”的各种原因。

鉴于我们对统一人口中的流行病学了解(http://www.usenix.org/publications/login/2005-12/openpdfs/geer.pdf),为什么每个人都不能从自己的系统上进行源编译,无论他们选择的编译时选项?那将使对病毒和蠕虫的抵抗力大大提高。


有更简单的方法可以减慢那些ssh-hammering不法之徒的速度...寻找iptables速率限制。该解决方案具有更广泛的适用性,而且不会使您的保修无效。
vonbrand

通常,Linux不附带保修。在这一点上,Slackware 11已经使用了几年。您正在用FUD来解决这个问题,特别是“恐惧”。“哦,不!不要那样做!您将使保修无效!” 一个保修有几次?很少。我们都希望其他人对我们的所有行为承担责任(尤其是道德上的责任,但主要是财务上的责任),但这不会对个人和社会造成很多不良后果。我坚持我的建议,尤其是:自己编译源代码并承担所有责任。不要责怪任何人。
Bruce Ediger 2013年

哦,拜托 如果是RHEL或SLES(甚至是具有支持合同的Ubuntu LTS),则肯定会取消保修。如果是Debian或Fedora,则您被黑客入侵的OpenSSH的错误报告将被关闭,而无需仔细检查。
vonbrand
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.