据我了解,安装软件包有四种方法:
- 从源代码构建并安装
- 安装二进制文件
- 安装
deb
文件 - 从存储库安装
使用所有方法安装的包在运行时是否更新sudo apt-get update; sudo apt-get upgrade -y;
?
我的理解是,此过程仅更新从存储库安装的软件包。二进制或源代码安装是否可以在安装程序中包含代码,以便让软件包管理器知道在哪里获取未来的更新?这是否意味着软件包管理器也可以从源安装更新二进制/构建?
答案1
简而言之,您的理解是正确的。包管理器只会更新那些
- 作为 Debian 软件包提供,
- 配置存储库并
- 该存储库仍然有效或处于活动状态。
我所指的包管理器包括apt
(或apt-get
)、aptitude
Synaptic 包管理器、软件中心等。
具体回答你的问题 -
- 从源代码构建并安装
更新需要从源代码重新构建并重新安装应用程序。Debian 软件包管理器不了解这些应用程序。它们无法获得更新。
有一些 debian-source 软件包可以通过软件包管理器从存储库中获取apt-get source
,并编译为 debian 软件包。获取这些软件包后,将其构建为 .deb 文件。然后可以安装这些 debian 软件包。如果满足手动安装 .deb 文件的条件,它们将获得更新。
- 安装二进制文件
我假设你指的是复制系统中的一些二进制程序以供使用。比如rclone
应用已安装。软件包管理器不知道这些应用程序,因此无法使用它们进行更新。
- 安装一个 deb 文件。
简短回答中的条件适用于此处。如果您手动安装已配置存储库的 deb 文件,则可以通过包管理器更新这些包。例如,如果您已经下载了 google-chrome .deb 文件,并且您使用手动安装它,dpkg
并且您已配置 google chrome 存储库,那么只要满足其他条件,此包就会得到更新。
- 从存储库安装
这是很明显的。如果存储库处于活动状态,它们将从包管理器获取更新。
如果删除所有存储库源,包管理器甚至无法更新大多数核心包!
看apt-get
手册页了解详情。