UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

231 lines (134 loc) 16 kB
相关文章 * [General recommendations (简体中文)](/index.php/General_recommendations_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "General recommendations (简体中文)") **翻译状态:** 本文是英文页面 [System_maintenance](/index.php/System_maintenance "System maintenance") 的[翻译](/index.php/ArchWiki_Translation_Team_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "ArchWiki Translation Team (简体中文)"),最后翻译时间:2017-10-16,点击[这里](https://wiki.archlinux.org/index.php?title=System_maintenance&diff=0&oldid=484864)可以查看翻译后英文页面的改动。 要持续使用 Arch linux,需要进行系统日常维护,每个用户都应该及时维护系统。 ## Contents * [1 检查错误](#.E6.A3.80.E6.9F.A5.E9.94.99.E8.AF.AF) * [1.1 systemd 服务问题](#systemd_.E6.9C.8D.E5.8A.A1.E9.97.AE.E9.A2.98) * [1.2 日志文件](#.E6.97.A5.E5.BF.97.E6.96.87.E4.BB.B6) * [2 备份](#.E5.A4.87.E4.BB.BD) * [2.1 配置文件](#.E9.85.8D.E7.BD.AE.E6.96.87.E4.BB.B6) * [2.2 安装的软件包](#.E5.AE.89.E8.A3.85.E7.9A.84.E8.BD.AF.E4.BB.B6.E5.8C.85) * [2.3 Pacman 数据库](#Pacman_.E6.95.B0.E6.8D.AE.E5.BA.93) * [2.4 LUKS headers](#LUKS_headers) * [2.5 系统和用户数据](#.E7.B3.BB.E7.BB.9F.E5.92.8C.E7.94.A8.E6.88.B7.E6.95.B0.E6.8D.AE) * [3 更新系统](#.E6.9B.B4.E6.96.B0.E7.B3.BB.E7.BB.9F) * [3.1 升级前的准备](#.E5.8D.87.E7.BA.A7.E5.89.8D.E7.9A.84.E5.87.86.E5.A4.87) * [3.2 避免某些 Pacman 命令](#.E9.81.BF.E5.85.8D.E6.9F.90.E4.BA.9B_Pacman_.E5.91.BD.E4.BB.A4) * [3.3 不支持部分升级](#.E4.B8.8D.E6.94.AF.E6.8C.81.E9.83.A8.E5.88.86.E5.8D.87.E7.BA.A7) * [3.4 注意更新时的提醒](#.E6.B3.A8.E6.84.8F.E6.9B.B4.E6.96.B0.E6.97.B6.E7.9A.84.E6.8F.90.E9.86.92) * [3.5 处理配置文件更新](#.E5.A4.84.E7.90.86.E9.85.8D.E7.BD.AE.E6.96.87.E4.BB.B6.E6.9B.B4.E6.96.B0) * [3.6 回退有问题的更新](#.E5.9B.9E.E9.80.80.E6.9C.89.E9.97.AE.E9.A2.98.E7.9A.84.E6.9B.B4.E6.96.B0) * [3.7 使用包管理器安装软件](#.E4.BD.BF.E7.94.A8.E5.8C.85.E7.AE.A1.E7.90.86.E5.99.A8.E5.AE.89.E8.A3.85.E8.BD.AF.E4.BB.B6) * [3.8 选择开源驱动](#.E9.80.89.E6.8B.A9.E5.BC.80.E6.BA.90.E9.A9.B1.E5.8A.A8) * [3.9 谨慎使用非官方或测试不足的软件包](#.E8.B0.A8.E6.85.8E.E4.BD.BF.E7.94.A8.E9.9D.9E.E5.AE.98.E6.96.B9.E6.88.96.E6.B5.8B.E8.AF.95.E4.B8.8D.E8.B6.B3.E7.9A.84.E8.BD.AF.E4.BB.B6.E5.8C.85) * [3.10 更新镜像列表](#.E6.9B.B4.E6.96.B0.E9.95.9C.E5.83.8F.E5.88.97.E8.A1.A8) * [4 清理文件系统](#.E6.B8.85.E7.90.86.E6.96.87.E4.BB.B6.E7.B3.BB.E7.BB.9F) * [4.1 软件包缓存](#.E8.BD.AF.E4.BB.B6.E5.8C.85.E7.BC.93.E5.AD.98) * [4.2 不需要的软件包](#.E4.B8.8D.E9.9C.80.E8.A6.81.E7.9A.84.E8.BD.AF.E4.BB.B6.E5.8C.85) * [4.3 旧配置文件](#.E6.97.A7.E9.85.8D.E7.BD.AE.E6.96.87.E4.BB.B6) * [4.4 破损的软链接](#.E7.A0.B4.E6.8D.9F.E7.9A.84.E8.BD.AF.E9.93.BE.E6.8E.A5) * [5 技巧](#.E6.8A.80.E5.B7.A7) * [5.1 使用经过验证的软件包](#.E4.BD.BF.E7.94.A8.E7.BB.8F.E8.BF.87.E9.AA.8C.E8.AF.81.E7.9A.84.E8.BD.AF.E4.BB.B6.E5.8C.85) * [5.2 安装内核的长期支持版本](#.E5.AE.89.E8.A3.85.E5.86.85.E6.A0.B8.E7.9A.84.E9.95.BF.E6.9C.9F.E6.94.AF.E6.8C.81.E7.89.88.E6.9C.AC) * [6 参阅](#.E5.8F.82.E9.98.85) ## 检查错误 ### systemd 服务问题 检查是否有 systemd 服务失败: ``` $ systemctl --failed ``` 更多信息请参考 [Systemd#Analyzing the system state](/index.php/Systemd#Analyzing_the_system_state "Systemd"). ### 日志文件 检查 `/var/log` 日志文件中是否存在错误, 检查[systemd 日志](/index.php/Systemd#Journal "Systemd")中的高优先级错误: ``` # journalctl -p 3 -xb ``` Xorg 的相关错误可以查看 [Xorg#Troubleshooting](/index.php/Xorg#Troubleshooting "Xorg")。 ## 备份 把重要数据的备份作为日常维护任务。 其它备份方案可以参考 [同步和备份程序页面](/index.php/Synchronization_and_backup_programs "Synchronization and backup programs"),[Category:System recovery](/index.php/Category:System_recovery "Category:System recovery") 包含其它相关文章。 可以通过 [systemd/Timers](/index.php/Systemd/Timers "Systemd/Timers") 自动备份. ### 配置文件 在编辑任何配置文件前,先保留备份。这样出问题是可以直接还原。[vim](/index.php/Vim "Vim") 和 [emacs](/index.php/Emacs "Emacs") 编辑器会自动备份,[etckeeper](/index.php/Etckeeper "Etckeeper") 可以将 `/etc` 纳入版本控制系统。详情请参考 [dotfiles#Version control](/index.php/Dotfiles#Version_control "Dotfiles")。 ### 安装的软件包 维护一个所有安装软件包的列表,这样在不得己进行系统重装时,可以很快恢复到初始环境。 详情参考 [Pacman tips#List of installed packages](/index.php/Pacman_tips#List_of_installed_packages "Pacman tips")。 ### Pacman 数据库 参考 [Pacman tips#Back-up the pacman database](/index.php/Pacman_tips#Back-up_the_pacman_database "Pacman tips"). ### LUKS headers 如果 LUKS 使用密码加密,建议定期检查和同步 LUKS 加密分区的头部数据。参考 [Dm-crypt/Device encryption#Backup and restore](/index.php/Dm-crypt/Device_encryption#Backup_and_restore "Dm-crypt/Device encryption"). ### 系统和用户数据 参考 [System backup](/index.php/System_backup "System backup")。 ## 更新系统 建议日常进行[系统完整更新](/index.php/Pacman#Upgrading_packages "Pacman"),这样既能享受到最新的问题修复和安全更新,还可以避免一次更新太多的软件包,手动处理是分批进行的。从社区寻求帮助时,其他人会假定系统进行了完整更新。 手头上保留 Arch 安装盘或其它 Linux "Live" 环境,这样有问题是可以进行修正。如果在生产环境使用 Arch,无法接受任何的停机,那么在更新前请在非关键系统上测试新配置文件和软件包,没有问题的时候再部署到生产环境。 如果软件包来自 [AUR](/index.php/AUR "AUR"), 请注意更新完整. ### 升级前的准备 建议升级前访问 [Arch Linux 主页](https://www.archlinux.org/)查看最新消息(或订阅 [RSS](https://www.archlinux.org/feeds/news/),或订阅 [arch-announce 邮件列表](https://mailman.archlinux.org/mailman/listinfo/arch-announce/),或关注 [@archlinux](https://twitter.com/archlinux)。如果升级需要不寻常的用户操作介入时(无法简单地按照 *pacman* 的输出信息处理),以上信息总会给出合适的方法。 在更新[kernel](/index.php/Kernel "Kernel"), [xorg](/index.php/Xorg "Xorg"), [systemd](/index.php/Systemd "Systemd") 和 [glibc](https://www.archlinux.org/packages/?name=glibc)等重要软件之前, 查看[论坛](https://bbs.archlinux.org/)看是否有被报告的出错等问题. 有时候系统更新会出现问题并需要进行一些手动调整,请不要在重要任务前进行系统更新。 ### 避免某些 Pacman 命令 避免 [部分更新](#.E4.B8.8D.E6.94.AF.E6.8C.81.E9.83.A8.E5.88.86.E5.8D.87.E7.BA.A7),不要运行 `pacman -Sy` 而是运行 `pacman -Syu`. 避免 pacman 的 `--force` 选项,**尤其是** `pacman -Syu --force` 这种可能更新多个软件包的时候。`--force` 忽略文件冲突,可能导致文件丢失!如果系统按正常维护,这个选项仅应该在 Arch 开发者明确指导的情况下使用,在 Arch 主页会有通知。 避免使用 `-d` 选项,`pacman -Rdd package` 会在删除软件包时跳过依赖关系检查。如果删除了系统必要的依赖关系,可能导致系统损坏。 ### 不支持部分升级 Arch Linux 是滚动发行版,新[](https://en.wikipedia.org/wiki/Library_(computing) 版本将不断被推送到源。开发者和信任用户会按照需要重新构建源中的所有软件包。如果有本地安装的版本(例如 AUR 软件包),需要在它们的依赖关系升级了[soname](https://en.wikipedia.org/wiki/soname "wikipedia:soname")时重新编译。 也就是说,部分升级是**不被支持的**。 不要使用 `pacman -Sy package` 或等价命令如 `pacman -Sy` 之后再 `pacman -S package`。在安装软件包前请更新源并升级。同理请特别注意 IgnorePkg/IgnoreGroup 的使用。 如果进行了部分升级,二进制包因为找不到链接库而损坏,**不要通过简单的符号链接进行修正**。库升级 [soname](https://en.wikipedia.org/wiki/soname "wikipedia:soname") 是因为它们**不再向前兼容**。只要 *pacman* 可以运行,使用更新的源进行 `pacman -Syu` 就能修复这些问题。 pacman 软件包提供的 *checkupdates* 脚本可以检查更新但不进行实际安装。 ### 注意更新时的提醒 当升级系统时, 请一定要注意[pacman](/index.php/Pacman "Pacman")输出的注意信息。 如果有需要用户手动操作的,请一定要立即搞定。 如果不明白 pacman 输出的信息, 请去论坛搜索或者看Arch Linux首页的新闻。 ### 处理配置文件更新 pacman 可能会创建 `.pacnew``.pacsave` 文件,这是 pacman 会通知用户,而用户需要主动处理这些文件。详细的操作说明请参考:[Pacnew and Pacsave files](/index.php/Pacnew_and_Pacsave_files "Pacnew and Pacsave files"). 同样,注意所有你可能会复制或创建的配置文件。如果软件包提供了一个空配置文件,这个文件被复制到主目录,请注意查看示例文件是否有更新。 ### 回退有问题的更新 如果软件包可能导致问题,软件包维护者会在更新时给出提示信息。在更新后遇到问题,请先确认 `/var/log/pacman.log` 中有没有提醒信息. **Tip:** 可以使用 [wat-git](https://aur.archlinux.org/packages/wat-git/) 等工具搜索 pacman 日志。 然后看看 [https://www.archlinux.org/](https://www.archlinux.org/) 中有没有新闻,然后再到论坛上查找类似的问题,如果都没有找到,可用到 [论坛](https://bbs.archlinux.org), [IRC](/index.php/IRC "IRC") 中发帖求助。 [降级](/index.php/Downgrading_packages "Downgrading packages") 是最后的解决方案。 ### 使用包管理器安装软件 软件包管理 [pacman](/index.php/Pacman "Pacman") 可以比你更好的记录安装的文件。如果你手动地安装软件,你会过了一会就不知道你到底安装了什么,到底安装在哪里,安装导致的那些冲突,是否安装在了错误的地方,等等问题. * 使用 [Pacman#Installing packages](/index.php/Pacman#Installing_packages "Pacman") 中介绍的方法安装官方软件包。 * 如果找不到需要的软件包,看看 [AUR](/index.php/AUR "AUR") 中有没有提供软件包打包脚本。 * 如果都没有找到,请学习[创建软件包](/index.php/Creating_packages "Creating packages")。 要清理自己安装的文件,可以[这里](/index.php/Pacman/Tips_and_tricks#Identify_files_not_owned_by_any_package "Pacman/Tips and tricks"). ### 选择开源驱动 尽可能地选择开源驱动。避免私有驱动。大多数时候,开源驱动比私有驱动更加稳定可靠。开源驱动的bugs修改起来比较容易快速,但同时私有驱动提供更多的特性和性能,不过也可能带来稳定性的代价。为了避免这个两难选择,可以选择已知的有很好的开源驱动支持的硬件。关于硬件和开源Linux驱动的信息可以在这里找到:[linux-drivers.org](http://www.linux-drivers.org/). ### 谨慎使用非官方或测试不足的软件包 在使用 AUR 或 [非官方软件仓库](/index.php/Unofficial_user_repository "Unofficial user repository")中的软件包时应有预防措施。大部分软件包都是由用户提供的,并不能提供和官方软件仓库相同的质量。谨慎使用 [AUR helpers](/index.php/AUR_helpers "AUR helpers") ,他们简化了 AUR 中的软件包的安装过程, 在编译和安装 AUR 中的软件包之前,**务必**检查软件包的 PKGBUILD 确保其中不含有错误或恶意的代码。 只在绝对必要的情况下使用第三方的软件仓库.[pacman/Tips and tricks#Maintenance](/index.php/Pacman/Tips_and_tricks#Maintenance "Pacman/Tips and tricks")提供了清理软件的方法。 ### 更新镜像列表 镜像的质量会随着时间而变化,有些镜像会下线或者同步和下载出问题,所以请注意更新 pacman 的镜像列表,详情参考 [mirrors](/index.php/Mirrors "Mirrors")。 ## 清理文件系统 检查磁盘空间的使用状况,删除占用空间较大的无用文件: * [List of applications#Disk usage display](/index.php/List_of_applications#Disk_usage_display "List of applications"). * [List of applications#Disk cleaning](/index.php/List_of_applications#Disk_cleaning "List of applications"). ### 软件包缓存`/var/cache/pacman/pkg/` 删除不需要的 `.pkg` 可以减少空间占用。详情参考 [Pacman#Cleaning the package cache](/index.php/Pacman#Cleaning_the_package_cache "Pacman"). ### 不需要的软件包 从系统里面删除不需要的软件包可以减少空间占用和维护难度。详情参考 [Pacman/Tips and tricks#Removing unused packages (orphans)](/index.php/Pacman/Tips_and_tricks#Removing_unused_packages_.28orphans.29 "Pacman/Tips and tricks"). ### 旧配置文件 旧的配置文件可能和新软件版本不兼容,所以请定期清理和更新配置文件,尤其是主目录和 `~/.config`. 在重新安装或共享 /home 时,注意下面文件夹: * `~/.config/` -- 软件保存配置文件的地方 * `~/.cache/` -- 程序缓存大小可能持续增加 * `~/.local/share/` -- 可能有旧文件 参考 [XDG Base Directory support](/index.php/XDG_Base_Directory_support "XDG Base Directory support"). 为了帮助清理 home 目录,建议维护一份不需要的文件列表并定期清理,例如使用 [rmshit.py](https://github.com/lahwaacz/Scripts/blob/master/rmshit.py). [rmlint](https://www.archlinux.org/packages/?name=rmlint) 也可以用来查找不需要的重复文件,空文件和损坏的软链接。 ### 破损的软链接 系统中可能存在老的,损坏的软链接,应该删除它们。方法可以参考 [here](https://unix.stackexchange.com/questions/34248/how-can-i-find-broken-symlinks) 和 [here](http://www.commandlinefu.com/commands/view/8260/find-broken-symlinks). 下面命令可以列出所有有问题的软链接,可以检查并删除列表中的文件。 ``` # find -xtype l -print ``` ## 技巧 ### 使用经过验证的软件包 Arch 的滚动发行让用户可以使用最新的功能和上游更新,但是这也增加了系统维护的难度。为了增加稳定性,可以尽量使用经过验证的稳定版本。这些软件包不太容易在升级时遇到问题。选用具有活跃开发社区的软件,选用用户能力更出众的软件,这样在出问题是更容易获得帮助。 避免使用测试仓库,这些软件包都是实验性质,不适合安装到稳定系统。因此对于[AUR](/index.php/AUR "AUR")中的包以及部分 community 中的包需要一些谨慎,这些开发中的包是直接从上游开发版分支中获取到的,通常会在包的名字上注有:dev, devel, svn, cvs, git, hg, 或是 darcs 的信息。 ### 安装内核的长期支持版本 [linux-lts](https://www.archlinux.org/packages/?name=linux-lts) 是 Arch 官方提供的 Linux kernel 的长期支持版本。内核上游开发者针对此版本提供了长期支持,包括安全补丁和功能 backports。适用于需要长期支持的用户,也可以将此内核作为新内核升级的后备内核。 需要编辑 [bootloader](/index.php/Bootloader "Bootloader") 的启动加载项,启动到 `vmlinuz-linux-lts``initramfs-linux-lts.img`## 参阅 * [Arch News Bash Script](https://bbs.archlinux.org/viewtopic.php?id=146850)