![软件包实际上是如何通过 apt-get install 安装的?](https://linux22.com/image/820956/%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%AE%9E%E9%99%85%E4%B8%8A%E6%98%AF%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20apt-get%20install%20%E5%AE%89%E8%A3%85%E7%9A%84%EF%BC%9F.png)
当使用该apt-get install
方法将软件包安装到 ubuntu 上时,获取该软件包的源代码和从头开始构建它之间有什么根本区别吗?该apt-get install
功能是否只是下载源代码并在您的机器上将其构建到指定的目录,还是幕后还有更多操作?
最后(也许这没有答案)一种方法比另一种更好吗?我在这里想问的是,自己从源代码构建是否有任何优势,还是让它自己apt-get
做更好?
答案1
apt、yum、pacman、emerge 等包管理系统的优点包括:
- 查询已安装或可用的软件包版本非常简单。
- 彻底删除一个包很容易,确保其中的所有文件都消失。
- 验证包文件的完整性很容易,因此您可以查看它是否已被损坏或篡改。
- 通过安装新版本并删除所有旧版本文件,可以轻松升级软件包。这将确保不会留下旧软件包中的任何残留文件,以免造成混乱或破坏。
- 很容易就能看到哪些包需要或者提供其他包所提供或需要的东西,因此,您可以确保拥有包正常运行所需的项目。
- 安装或删除软件包组非常容易。
- 在许多情况下,可以降级到软件包的先前版本,例如当新版本有错误时。
尽管它适用于 Fedora,但也请参阅:
https://fedoraproject.org/wiki/Package_management_system
从源代码安装可能有优势
- 您可以自定义二进制文件(启用/禁用选项)
- 存储库中提供了更多最新的软件包
- 有时需要修复错误
但缺点是,当有新版本可用时,您必须手动更新软件包,并且您通常会失去支持。
在我看来,如果您希望编译所有或大部分软件包,我建议使用 Gentoo。
答案2
apt-get - 轻松获取是 APT 包处理实用程序 (CLI),后端到突触和资质。
这apt-get方法从你的系统触发检查官方来源或存储库文件中列出的
etc/apt/sources.list
例如跑步时sudo apt-get update && sudo apt-get upgrade
(我用的),运行类似
其中点火链接前面的(忽略)表示自上次访问该存储库以来没有发生任何变化,并且得到声明对源文件的检索,该文件声明了该存储库中新可用包的更改。
不 ,apt-get实用程序不下载源文件,而是下载.deb 软件包包装并发布官方 Ubuntu 软件包提供者已经测试过稳定与整合与您的系统。
这apt-get 下载的软件包可以在
/var/cache/apt
你可以看到所有Updates
的.deb 软件包,你甚至可以通过访问这个来比较他们的版本精确更新包。
据,直到...为止编译从源码包来看,对于 Ubuntu 12.04 来说这是不可取的,甚至不推荐,因为它是一个 LTS 版本,你可以在这里查看原因
答案3
如果从源代码构建,则包含的内容会更多。从源代码安装apt-get
只会安装预构建的软件包。
至于哪个更好,这取决于你需要它做什么。我从来不需要从源代码编译,但我不会在我的 ubuntu 笔记本电脑上做任何非常广泛的事情。
答案4
我认为您可以使用 apt-get 来安装软件包源。
您需要激活源代码存储库
打开 /etc/apt/sources.list 文件,您将看到注释掉的行(以 # 开头),上面有“source”。
取消注释
安装所需程序的依赖项:
sudo apt-get build-dep "program"
下载并编译你的程序:
sudo apt-get -b source "program"
之后,您会在主目录中得到一个 .deb 包。