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

我已经读过,与像Ubuntu这样的预构建发行版相比,像Gentoo这样基于源的Linux发行版如何能够有相当大的性能提升,因为它们是从源代码安装的,并针对您的特定系统进行了优化。 是否有可能从源代码构建Ubuntu以获得同样的好处?

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

我不确定如果你有相当新的硬件组件的好处,但对于“来自源的Ubuntu”部分问题,答案是肯定的,你不仅可以从源代码构建自己喜欢的应用程序,还可以构建整个操作系统。

方法如下:

你需要安装apt-build 。 它是一个像apt-get这样的comandline工具,但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 – 更新repo列表,(比如apt-get update)
  • apt-build upgrade – 更新操作系统,(比如apt-get upgrade)
  • apt-build安装程序 – 安装应用程序,(如apt-get install)
  • apt-build world – 适合核心用户的东西,它重新编译整个系统!

例如:

让我们说你想编译/安装Gedit。 而不是apt-get安装,你只需要做

 sudo apt-build install gedit 

Apt-build使用/etc/apt/sources.list文件中包含的deb-src条目,因此编译和安装过程是完全自动的(类似于Gentoo中的emerge)。 Apt-build下载主应用程序及其依赖项的源代码,编译它们,创建deb包,最后安装包。

关于apt-build世界的一些注释。

在我看来,除非你有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 – 以使重建过程完全自动化。

你可以开始一场关于这类话题的激烈争论和一场大辩论,但让我们看看现实生活。

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

我大部分时间都在使用Arch时经常更改发行版,但Arch的速度比Ubuntu快吗? 没有。

使用Ubuntu 10.10的gnome使用大约300ram,在Arch 200ram上,我有4gb的ram,我感觉不到差别,但是如果你将Ubuntu与gnome比较到Arch并且很棒,那么响应性和资源将会有很大的提升用法(300ram vs 50ram),但这只在你为上网本选择发行版时才有意义。

因此,如果你有一个快速的桌面,并且不想花时间修改你的系统,只需使用Ubuntu,但如果你有一个上网本,而不是考虑在Arch上使用轻量级的WM 🙂

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