System maintenance (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 System_maintenance翻译。上次翻译日期:2021-02-17。如果英文版本有所更改,则您可以帮助同步翻译。

要持续使用 Arch linux,需要进行系统日常维护,每个用户都应该及时维护系统。

检查错误

systemd 服务问题

检查是否有 systemd 服务失败:

$ systemctl --failed

更多信息请参考 Systemd#Using units.

日志文件

检查 /var/log 日志文件中是否存在错误, 检查systemd 日志中的高优先级错误:

 # journalctl -p 3 -xb

Xorg 的相关错误可以查看 Xorg#Troubleshooting

备份

把重要数据的备份作为日常维护任务。

其它备份方案可以参考 同步和备份程序页面Category:System recovery 包含其它相关文章。

可以通过 systemd/Timers 自动备份.

配置文件

在编辑任何配置文件前,先保留备份。这样出问题是可以直接还原。vimemacs 编辑器会自动备份,etckeeper 可以将 /etc 纳入版本控制系统。详情请参考 dotfiles#Tracking dotfiles directly with Git

安装的软件包

维护一个所有安装软件包的列表,这样在不得己进行系统重装时,可以很快恢复到初始环境。

详情参考 Pacman tips#List of installed packages

Pacman 数据库

参考 pacman/Tips and tricks#Back up the pacman database.

加密元数据

参阅 Data-at-rest encryption#Backup for disk encryption scenarios.

系统和用户数据

参考 System backup

更新系统

建议日常进行系统完整更新,这样既能享受到最新的问题修复和安全更新,还可以避免一次更新太多的软件包,手动处理是分批进行的。从社区寻求帮助时,其他人会假定系统进行了完整更新。

手头上保留 Arch 安装盘或其它 Linux "Live" 环境,这样有问题是可以进行修正。如果在生产环境使用 Arch,无法接受任何的停机,那么在更新前请在非关键系统上测试新配置文件和软件包,没有问题的时候再部署到生产环境。

如果软件包来自 AUR, 请注意更新完整.

升级前的准备

建议升级前访问 Arch Linux 主页查看最新消息,或订阅 RSSarch-announce 邮件列表。如果升级需要不寻常的用户操作介入时(无法简单地按照 pacman 的输出信息处理),以上信息总会给出合适的方法。

在更新kernel, xorg, systemdglibc等重要软件之前, 查看论坛看是否有被报告的出错等问题.

有时候系统更新会出现问题并需要进行一些手动调整,请不要在重要任务前进行系统更新。

提示: 可以使用 pacman 钩子如 informantAUR 来避免在阅读最新 Arch 新闻前全面更新系统。

避免某些 Pacman 命令

避免 部分更新,不要运行 pacman -Sy 而是运行 pacman -Syu.

一般情况下,避免使用 pacman 的 --force 选项,尤其要避免 pacman -Syu --force 这种可能更新多个软件包的指令。--force 忽略文件冲突,可能导致文件丢失!如果系统按正常维护,Arch 开发者会给出明确的指导,在 Arch 主页会有通知。

避免使用 -d 选项,pacman -Rdd package 会在删除软件包时跳过依赖关系检查。如果删除了系统必要的依赖关系,可能导致系统损坏。

不支持部分升级

Arch Linux 是滚动发行版,新 版本将不断被推送到源。开发者和信任用户会按照需要重新构建源中的所有软件包。如果有本地安装的版本(例如 AUR 软件包),需要在它们的依赖关系升级了soname时重新编译。

也就是说,部分升级是不被支持的

不要使用 pacman -Sy package 或等价命令如 pacman -Sy 之后再 pacman -S package。请注意 pacman -Syuwpacman -Sy 有一样的风险,因为它会更新 pacman 同步数据库而不安装新版本软件包。在安装软件包前请更新源并升级(使用 pacman -Syu)。请注意如果 pacman -Syu 因为某个错误而没有完成升级,最后导致的系统状态和运行 pacman -Sy 是一样的。错误必须被处理,升级更新要尽快完成。同理请特别注意 IgnorePkgIgnoreGroup 的使用。如果系统安装了自行编译的软件包(如从 AUR 包),在其依赖出现 soname 冲突时用户必须重新编译。

如果进行了部分升级,二进制包因为找不到链接库而损坏,不要通过简单的符号链接进行修正。库升级 soname 是因为它们不再向前兼容。只要 pacman 可以运行,使用更新的源进行 pacman -Syu 就能修复这些问题。

pacman-contrib 软件包提供的 checkupdates 脚本可以检查更新但不进行实际安装。

注意更新时的提醒

当升级系统时, 请一定要注意pacman输出的注意信息。 如果有需要用户手动操作的,请一定要立即搞定。 如果不明白 pacman 输出的信息, 请去论坛搜索或者看Arch Linux首页的新闻。

处理配置文件更新

pacman 可能会创建 .pacnew.pacsave 文件,这时 pacman 会通知用户,而用户需要主动处理这些文件。详细的操作说明请参考:Pacnew and Pacsave files.

同样,注意所有你可能会复制或创建的配置文件。如果软件包提供了一个空配置文件,这个文件被复制到主目录,请注意查看示例文件是否有更新。

在更新后重启程序和系统

升级通常不立即应用于运行中的程序。 您必须重新启动程序才能完全应用升级。

内核很难在重启前更新。升级内核后重启系统永远是最安全的选择,如果不方便重启可以通过内核热补丁在不重启系统的情况下应用更新。

回退有问题的更新

如果软件包可能导致问题,软件包维护者会在更新时给出提示信息。在更新后遇到问题,请先确认 /var/log/pacman.log 中有没有提醒信息.


提示: 可以使用 wat-gitAUR 等工具搜索 pacman 日志。

然后看看 https://archlinux.org/ 中有没有新闻,然后再到论坛上查找类似的问题,如果都没有找到,可用到 论坛, IRC 中发帖求助。

降级 是最后的解决方案。

检查孤立和未使用软件包

更新系统后,可能有些软件包不再需要,或者不再属于官方软件仓库。

pacman -Qtd 命令查找之前作为依赖安装,现在不再需要的软件包。如果孤立的包还是需要的,可用修改 安装原因。如果不再需要,可用将其删除。

除此之外,有些软件包可能已经不再属于远程仓库,但是依然还安装在本地,用 pacman -Qm 命令查找所有这些软件包。注意此命令会包含手动安装的软件,例如 AUR 中的软件。可以使用 ancient-packagesAUR 来排除尚存在于 AUR 中的软件包。

使用包管理器安装软件

软件包管理 pacman 可以比你更好的记录安装的文件。如果你手动地安装软件,你会过了一会就不知道你到底安装了什么,到底安装在哪里,安装导致的那些冲突,是否安装在了错误的地方,等等问题.

  • 使用 Pacman#Installing packages 中介绍的方法安装官方软件包。
  • 如果找不到需要的软件包,看看 AUR 中有没有提供软件包打包脚本。
  • 如果都没有找到,请学习创建软件包

要清理自己安装的文件,可以这里.

选择开源驱动

尽可能地选择开源驱动。避免私有驱动。大多数时候,开源驱动比私有驱动更加稳定可靠。开源驱动的bugs修改起来比较容易快速,但同时私有驱动提供更多的特性和性能,不过也可能带来稳定性的代价。为了避免这个两难选择,可以选择已知的有很好的开源驱动支持的硬件。关于硬件和开源Linux驱动的信息可以在这里找到:linux-drivers.org.

谨慎使用非官方或测试不足的软件包

在使用 AUR 或 非官方软件仓库中的软件包时应有预防措施。大部分软件包都是由用户提供的,并不能提供和官方软件仓库相同的质量。谨慎使用 AUR helpers ,他们简化了 AUR 中的软件包的安装过程, 在编译和安装 AUR 中的软件包之前,务必检查软件包的 PKGBUILD 确保其中不含有错误或恶意的代码。

只在绝对必要的情况下使用第三方的软件仓库.pacman/Tips and tricks#Maintenance提供了清理软件的方法。

更新镜像列表

镜像的质量会随着时间而变化,有些镜像会下线或者同步和下载出问题,所以请注意更新 pacman 的镜像列表,详情参考 mirrors

清理文件系统

检查磁盘空间的使用状况,删除占用空间较大的无用文件:

软件包缓存

/var/cache/pacman/pkg/ 删除不需要的 .pkg 可以减少空间占用。详情参考 Pacman#Cleaning the package cache.

不需要的软件包

从系统里面删除不需要的软件包可以减少空间占用和维护难度。详情参考 Pacman/Tips and tricks#Removing unused packages (orphans).

旧配置文件

旧的配置文件可能和新软件版本不兼容,所以请定期清理和更新配置文件,尤其是主目录和 ~/.config. 在重新安装或共享 /home 时,注意下面文件夹:

  • ~/.config/ -- 软件保存配置文件的地方
  • ~/.cache/ -- 程序缓存大小可能持续增加
  • ~/.local/share/ -- 可能有旧文件

参考 XDG Base Directory support.

为了帮助清理 home 目录,建议维护一份不需要的文件列表并定期清理,例如使用 rmshit.py.

rmlint 也可以用来查找不需要的重复文件,空文件和损坏的软链接。

破损的软链接

系统中可能存在老的,损坏的软链接,应该删除它们。方法可以参考 这里这里。但是不应该盲目删除所有损坏的软链接,因为其中一些是有用处的[1]

下面命令可以列出所有有问题的软链接,可以检查并删除列表中的文件。

  # find / -xtype l -print

技巧

使用经过验证的软件包

Arch 的滚动发行让用户可以使用最新的功能和上游更新,但是这也增加了系统维护的难度。为了增加稳定性,可以尽量使用经过验证的稳定版本。这些软件包不太容易在升级时遇到问题。选用具有活跃开发社区的软件,选用用户能力更出众的软件,这样在出问题是更容易获得帮助。

避免使用测试仓库,这些软件包都是实验性质,不适合安装到稳定系统。因此对于AUR中的包以及部分 community 中的包需要一些谨慎,这些开发中的包是直接从上游开发版分支中获取到的,通常会在包的名字上注有:dev, devel, svn, cvs, git, hg, 或是 darcs 的信息。

安装内核的长期支持版本

linux-lts 是 Arch 官方提供的 Linux kernel 的长期支持版本。内核上游开发者针对此版本提供了长期支持,包括安全补丁和功能 backports。适用于需要长期支持的用户,也可以将此内核作为新内核升级的后备内核。

需要编辑 bootloader 的启动加载项,启动到 vmlinuz-linux-ltsinitramfs-linux-lts.img

参阅