如何从源代码构建我所有已安装的软件包?
我已经读过,与像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允许您重新安装而无需重新编译。