如何从源代码构建我所有已安装的软件包?


26

我已经阅读了有关与Gentoo之类的预发行发行版相比,诸如Gentoo之类的基于源的Linux发行版如何能够显着提高性能的信息,因为它们是从源安装的,并且针对您的特定系统进行了优化。是否可以从源代码构建Ubuntu以获得相同的好处?


3
为此,请安装Gentoo而非Ubuntu。认真地讲,为什么要使用在基于源的依赖项管理中绝对失败的发行版,而不是使它陷入困境的发行版?
数学2011年

7
我很好奇看到源代码和二进制代码之间的基准,它们实际上使用了相同的堆栈版本和配置。比较通常是Ubuntu版本(具有默认值)与最新的可能的Gentoo(带有奇数文件系统和怪异的应用程序默认值)。Ubuntu的默认设置大多数都是理智的,这就是大多数性能的来源,这就是为什么大多数直接比较使Ubuntu领先于Gentoo的原因。
奥利(Oli)

1
一个比较不好的例子是Linux Magazine的这篇文章(需要免费注册才能阅读),他们在文章中使用不同的内核,不同的Nvidia驱动程序,不同的X版本和不同的桌面环境。您最好比较两个不同版本的Ubuntu。它们将显示相似的差异程度。
奥利(Oli)

4
性能提升了什么?网络吞吐量,磁盘速度,进程切换,纯数学计算,3D图形,启动时间?
用户未知,

1
我只建议编译软件,该软件需要大规模的CPU性能(想到视频编码),并且被用户大量使用,并且受益于CPU优化,例如FMA3或AVX2。
keiki 2013年

Answers:


42

Is is possible to build Ubuntu from source to get the same kind of benefit?

我不确定如果您使用的是相当新的硬件组件,但是对于问题的“从源头获取Ubuntu”部分,答案是肯定的,那么您不仅可以从源头构建自己喜欢的应用程序,还可以构建整个操作系统。

方法如下:

您需要安装apt-build。它像apt-get这样的通用工具,但是apt-build不会下载并安装二进制软件包,而是下载软件包的源代码,进行编译,然后将其安装到系统中。

安装后

sudo apt-get install apt-build

系统将询问您优化级别(中等),是否要为APT创建apt-build存储库(是),以及有关处理器体系结构的问题(我的Intel i7被视为core2)。当然,可以通过以下方式重新配置所有选项:

dpkg-reconfigure apt-build

上面的命令为gcc编译器和make生成器提供了两个附加选项。它们的描述可以在系统手册中找到:man gcc和man make。

有关手动和可用命令选项的信息,请检查

man apt-build

但最有用的是:

  • apt-build update —更新回购列表(如apt-get update)
  • apt-build upgrade —更新操作系统,(如apt-get upgrade)
  • apt-build安装程序—安装应用程序(如apt-get install)
  • apt-build world —对于铁杆用户而言,它可以重新编译整个系统!

例如:

假设您要编译/安装Gedit。不用apt-get install而是

sudo apt-build install gedit

Apt-build利用/etc/apt/sources.list文件中包含的deb-src条目,因此编译和安装过程是全自动的(类似于Gentoo中出现的过程)。Apt-build下载主应用程序及其依赖项的源代码,对其进行编译,创建一个deb软件包,最后安装该软件包。

关于apt-build world的一些说明。

我认为请勿尝试,除非您有24小时或更长时间!

如果是这样,您应该先删除/禁用/卸载任何第三方应用程序(最好在全新安装的Ubuntu中进行),然后执行以下操作:

sudo su
dpkg --get-selections | awk '{if ($2 == "install") print $1}'> /etc/apt/apt-build.list
exit

上面的命令会将系统软件包的完整列表复制到apt-build.list,以便可以从源代码进行编译。打开那个文件

sudo gedit /etc/apt/apt-build.list

并删除所有GCC / G ++条目

然后,您可以执行以下操作:

sudo apt-build world

我建议添加两个选项---yes和--force-yes-使重建过程完全自动化。


10
+1为具体答案,相比之下“为什么要建造?” 答案。我还希望阅读有关您可以(或无法)使用的好处的更广泛的观点(即使是主观的)apt-build
enzotib

1
这个答案目前有+17。但是有人成功完成了吗?
凯基

1
@ otakun85我已经使用apt-build在Ubuntu上成功编译了一些软件包(不记得哪个发行版,12.04 | 12.10 | 13.04之一),我确实尝试过apt-build world,这真是一团糟。apt-build 的手册页末尾有此内容BUGS Many.,因此请注意。
2014年

我发现apt-build world最好使用下载“ Linux from Scratch”一书而不是使用它,并对其中apt-build列出的每个软件包进行操作。它指定了正确的顺序等。例如我不知道,如果apt-build world知道它应该首先重新编译binutils,然后gcc,再binutils一次,gcc再一次,再编程语言,gzip等等。现在看来,这只是编译一切按字母顺序排列。
Serhyi Vynohradov

@SerhyiVynohradov:没关系。LFS这样做是为了避免在主机系统中保留对库的任何依赖关系,但是这里只是用编译版本替换了所有内容。他们仍然在同一个位置,具有相同的ABI等
尼克利玛窦

3

您可以就此类话题展开激烈的辩论和激烈的辩论,但让我们看看现实生活。

操作系统的速度很大程度上取决于您运行的硬件,而这是主要因素。

在大多数时候,我经常更换发行版,但是Arch比Ubuntu快吗?没有。

在Ubuntu 10.10上带有compiz的Gnome使用大约300ram,在Arch 200ram上,我有4gb的ram,我没什么区别,但是如果您将带有gnome的Ubuntu与具有令人敬畏的Arch进行比较,将会大大提高响应速度和资源用法(300ram vs 50ram),但这仅在您为上网本选择发行版时才重要。

因此,如果您拥有快速的桌面并且不想花时间修改系统,只需使用Ubuntu,但是如果您有上网本,则可以考虑在Arch上使用轻量级的WM :)


好吧,在某个时候,您可能会遇到使用最新硬件的情况,但是您仍然需要执行一个小时的操作。而且,与其设置一堆服务器来分配负载,您不介意花费一些时间进行修补,以获得额外的20%提升。我从没用过Arch,但是尝试了Gentoo。而且我看到很多时候都没有“更快的发行版”之类的东西。而是有一个“使用较少软件的发行版”。您可能拥有快速但不安全的准系统。并且当您安装其他软件包时,它的速度与Ubuntu + apt-build相同。
Serhyi Vynohradov

0

Apt-build不仅可以提高性能,还可以为特定的硬件构建自定义的分发映像和存储库,以准备为企业批量安装。这就是说,如果您知道所有硬件都相同的话,就是优化的二进制发行版。这样,只有一台计算机可以完成所有工作编译,而其余计算机仅使用重新制作的ISO进行升级。这不只是为了轻量级或编码。如果由于某种原因在灾难后无法恢复系统,则自定义安装程序ISO允许您无需重新编译即可重新安装。

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.