第 9 章 使您的 Debian 系统保持最新状态

目录

9.1. 如何使 Debian 系统保持最新?
9.1.1. aptitude
9.1.2. apt-get 和 apt-cdrom
9.2. 必须进入单用户模式才能升级软件包吗?
9.3. 我需要在磁盘上保留所有的 .deb 档案文件吗?
9.4. 我应该如何保存关于安装了哪些软件包的日志?我想知道什么时候进行了安装和卸载,以及安装和卸载了哪些软件包!
9.5. 可以自动升级系统吗?
9.6. 我有多台机器;我怎样才能只下载一次更新?

Debian 的目标之一是提供一致的升级路径和安全的升级过程。我们尽力让用户可以平滑地升级到新版本。如果升级过程有一些重要的注意事项,软件包会提示用户,并且常常会对可能出现的问题提供解决方案。

您也应该阅读发行说明,里面描述了特定的升级过程的细节。发行说明可以在 Debian 网站的 https://www.debian.org/releases/stable/releasenotes 阅读,也可以在 Debian CD、DVD 和蓝光光碟中找到。

9.1. 如何使 Debian 系统保持最新?

最直接的方法是进入 Debian 档案站点,在各种目录中找到需要的文件,下载它,最后用 dpkg 进行安装。注意 dpkg 会原地安装升级文件,即使系统正在运行。有时候,一个软件包的新版本会依赖另外一个软件包的新版本,这种情况下,安装就会失败,除非已经安装了所依赖的那个软件包。

很多人觉得这种方式太耗时间了,因为 Debian 更新得实在太快——每周一般有数十个或更多的软件包被上传。新版本发布前这个数字可能更大。为了处理大量更新的软件包,许多人倾向于使用更加自动化的方法。有多个不同的软件包可以实现这一目的:

9.1.1. aptitude

aptitude 是 Debian 系统推荐的软件包管理器,在第 8.1.3 节 “aptitude”中有描述。

在使用 aptitude 进行升级之前,您需要编辑 /etc/apt/sources.list 以完成设置过程。如果您希望升级到 Debian 的最新稳定版本,您可以使用类似如下的软件源:

http://deb.debian.org/debian stable main contrib

The mirror https://deb.debian.org/ is backed by a content-delivery network and requests to it will be directed to the closest instance to you. If you have a faster Debian mirror close to you, you can replace deb.debian.org with that one. See the mirror list at https://www.debian.org/mirror/list for more information.

或者您也可以使用 httpredir.debian.org 重定向服务,它的设计目标是解决选择 Debian 镜像的难题。它使用用户的地理位置信息和其他信息,以选择下载文件的最佳镜像。要使用它,请使用类似如下的软件源:

http://httpredir.debian.org/debian stable main contrib

更多信息请阅读 sources.list(5) 手册页。

要从命令行升级系统,请运行

aptitude update

然后运行

aptitude full-upgrade

回答可能出现的问题,然后您的系统就会被升级。

注意 aptitude 不是进行 Debian GNU/Linux 大版本升级的推荐工具。这种情况请使用 apt-get。进行大版本升级,请先阅读发行说明。该文档详细描述了从上一个大版本升级的推荐步骤,以及升级前需要考虑的已知问题。

更多详细信息,请阅读 aptitude(8) 手册页,以及 /usr/share/aptitude/README 文件。

9.1.2. apt-get 和 apt-cdrom

aptitude 的一个替代品是 apt-get,它是基于 APT 的命令行工具(之前在第 8.1.2 节 “APT”介绍过)。

apt-get 是基于 APT 的命令行软件包管理工具,提供了安装和升级软件包的简单而安全的方式。

要使用 apt-get,请编辑 /etc/apt/sources.list 文件完成设置,就像第 9.1.1 节 “aptitude”中一样。

然后执行

apt-get update

然后运行

apt-get dist-upgrade

回答任何可能出现的问题,然后您的系统就会被升级。也请阅读 apt-get(8) 手册页,以及第 8.1.2 节 “APT”

如果您希望使用 CD/DVD/BD 来安装软件包,您可以使用 apt-cdrom。更多详情,请阅读发行说明中的“从光学介质中添加 APT 源”一节。

请注意,当您获取和安装软件包时,在 /var 目录中可能会保留这些软件包。为了防止您的分区空间不足,记得使用 apt-get cleanapt-get autoclean 删除多余的文件,或者把它们移动到其他地方(提示:使用 apt-move)。

9.2. 必须进入单用户模式才能升级软件包吗?

不是。即使是在正在运行的系统中,软件包也可以原地升级。Debian 有一个 start-stop-daemon 程序,在软件包升级时,如有必要,会调用它来停止和重启正在运行的进程。

9.3. 我需要在磁盘上保留所有的 .deb 档案文件吗?

不需要。如果您已经下载了这些文件到您的磁盘上,那么在您安装完软件包后,您就可以从系统中删除这些文件,例如,可以执行 aptitude clean

9.4. 我应该如何保存关于安装了哪些软件包的日志?我想知道什么时候进行了安装和卸载,以及安装和卸载了哪些软件包!

dpkg--log 选项使 dpkg 记录软件包的状态改变和动作。它既记录对 dpkg 的调用(例如

2005-12-30 18:10:33 install hello 1.3.18 2.1.1-4

),也记录结果(例如

2005-12-30 18:10:35 status installed hello 2.1.1-4

)。如果您想记录所有的 dpkg 调用(包括来自前端,如 aptitude 的调用),您可以将

log /var/log/dpkg.log

添加到您的 /etc/dpkg/dpkg.cfg 文件中。请确保配置了日志文件的周期性滚动。如果您使用 logrotate,您可以创建 /etc/logrotate.d/dpkg 文件,内容为

/var/log/dpkg {
  missingok
  notifempty
}

关于 dpkg 日志的更多信息可以在 dpkg(1) 手册页中找到。

aptitude 会将它打算进行的软件包安装、卸载和升级操作记录到 /var/log/aptitude 中。注意这些操作的结果不会被记录到该文件!

记录您的操作的另一种方式是在 script(1) 程序中进行您的软件包管理会话。

9.5. 可以自动升级系统吗?

可以。您可以使用 cron-apt;这一工具使用 cron 任务定期升级系统。它默认只更新软件包列表并下载新的软件包,但不安装它们。

注意:不建议在 testingunstable 系统上配置软件包的自动升级,因为有可能出现意料之外的行为,或者在不通知您的情况下卸载软件包。

9.6. 我有多台机器;我怎样才能只下载一次更新?

如果您的网络上有多台 Debian 机器,您可以使用 apt-cacher 确保您所有的 Debian 系统处于最新状态。

apt-cacher 能减少对 Debian 镜像站点的带宽需求,原理是从后端限制 Packages、Releases 和 Sources 文件的更新频率,且任何文件只下载一次,不管实际向代理请求了几次。apt-cacher 会基于经过代理的请求自动构建一个 Debian HTTP 镜像。

当然,如果您已经在使用标准的缓存代理,且您的所有系统都已经配置好使用它,您也能得到一样的结果。