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

cif*_*key 32 compiling

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

Sal*_*min 47

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
Run Code Online (Sandbox Code Playgroud)

您将被要求提供优化级别(中等即可),是否要为 APT 创建 apt-build 存储库(是)以及有关处理器架构的问题(我的 intel i7 被认为是 core2 )。当然,所有选项都可以通过这种方式重新配置:

dpkg-reconfigure apt-build
Run Code Online (Sandbox Code Playgroud)

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

对于手动和可用命令选项检查

man apt-build
Run Code Online (Sandbox Code Playgroud)

但最有用的是:

  • 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
Run Code Online (Sandbox Code Playgroud)

apt-build 使用 /etc/apt/sources.list 文件中包含的 deb-src 条目,因此编译和安装过程是全自动的(类似于 Gentoo 中的emerge)。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
Run Code Online (Sandbox Code Playgroud)

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

sudo gedit /etc/apt/apt-build.list
Run Code Online (Sandbox Code Playgroud)

并删除任何 GCC/G++ 条目

然后你可以这样做:

sudo apt-build world
Run Code Online (Sandbox Code Playgroud)

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

  • 与“为什么要构建?”相比,针对具体答案+1 答案。我更愿意阅读更广泛的意见(即使是主观的),关于您可以(或不能)使用“apt-build”获得的好处。 (13认同)