Arch Linux系统的一般维护

维护Arch Linux安装实际上是非常简单和直接,只要你记住几个事情。滚动发布...

维护Arch Linux安装其实非常简单直接,只要你记住一些事情。 分发的滚动版本意味着我们不必担心像其他发行版(Ubuntu和Debian等等)的主要版本升级。 只要您明智地使用Pacman并定期更新您的软件包,您就不应该遇到任何破坏的问题,而不能使用Arch的软件包。 以下将概述我的建议,以保持Arch更新和运行,就像您安装的那一天,或更好! 我也将提供一个简短的部分来优化Arch,首先安装它将使维护更快,更容易长期。 和往常一样,这些只是我的想法,在使用Arch时应该引用任何官方文档。 我假设你是所有以下命令的sudoer。 但是,只要您是sudoer或可以更改为root用户,您应该可以。 ArchWiki是一个很好的资源,很多指南和信息都是有用的,即使你没有使用Arch。 他们的IRC频道#archlinux可以在irc.freenode.net找到 。 这是另一个很好的地方提出问题,并从更有经验的用户收集有用的见解。 只要不要洪水通道,不断地一遍又一遍地问同一个问题!

优化曲拱(它有助于)

首先,我们将通过优化Arch,这将使维护和持续使用更快更容易。 这些小事情有时候会有很大的不同。 很多人忽略他们,或者太懒了,不能正确配置像Pacman(包管理器)这样的东西,所以它不会在他们的系统上完成。 开始强壮,使系统有点自我维持可以走很长的路,后来节省很多头痛!

更新镜像列表

首先,我将引导您更新镜像列表,以使用对您而言最快的镜像。 镜像列表位于/etc/pacman.d/mirrorlist。 一个选择是简单地查看列表,并选择您认为在地理上更接近您的镜像。 这在某些情况下是有用的,但只是因为镜子更近,并不意味着它是最快的。 如果我们希望基于某些更具体的决定,我们可以使用arch提供给我们的内置工具在/ usr / bin / rankmirrors。 默认情况下,/etc/pacman.d/mirrorlist中的大多数镜像都被注释掉,但是要使用rankmirrors,您将不得不将它们全部取消注释。 一个简单的方法是将文件复制到一个新的名称,并使用sed删除所有的“#”表示注释与以下命令:

sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.toBeTested
sudo sed -i 's/^#Server/Server/' /etc/pacman.d/mirrorlist.toBeTested

现在,您可以使用rankmirrors的帮助输出来了解其功能,但是让我们假设我们只想要三个最快的镜像。 我们只需使用我们新生成的包含所有(未注释)镜像的文件,并使用rankmirrors打印最快的3个:

sudo rankmirrors /etc/pacman.d/mirrorlist.toBeTested -n 3

使用该命令的输出,它应该是您的三个最快的镜像,并使用您喜欢的文本编辑器在真实的镜像列表中取消注释:

sudo vim /etc/pacman.d/mirrorlist

我喜欢在我的系统上每隔几个月这样做一次,因为有时镜像不可用,或者以这样一种方式改变它们不再那么快。 有些可能称之为微不足道,但由于Arch是一个滚动版本分发,往往会有很多更新。 即使您为每个下载的软件包节省了3秒,这可能会在一年或更长的时间内加起来几十分钟! 另外,如果您正在管理多个运行Arch的系统,则时间因素会更加复杂。 拿一粒盐,但处理很多系统或随着时间的推移,这些小事情都会有所不同。

保持时间准确

我不能强调系统时间保持准确的重要性。 如果说一个没有自己的硬件时钟的系统(如VM),这一点尤其如此。 许多正在运行的服务需要客户端和服务器之间的时间相同才能正常工作。 另外,如果不是因为系统时间错误,您不希望系统认为证书仍然有效。 更重要的是,您希望日志文件中的时间准确,以便如果您正在尝试诊断某些事情发生时遇到的问题,而不是当系统时钟发生时。 使用Arch最简单的方法是使用NTP或网络时间协议。 NTP或更具体地说, ntpd在这种情况下会定期将系统上的时钟与Internet上的服务器或服务器同步,以确保系统时间匹配。 它也跟踪时间漂移的事情,所以如果你关心你可以确定你的时钟在任何给定的时间是多少。

验证您的Arch Linux安装时区

每个Arch安装都有一个可用的命令timedatectl,它将显示有关系统上的时间和日期的大量有用信息。

[jonathan@zabaglione]$ sudo timedatectl
      Local time: Sun 2015-07-05 18:30:18 MDT
  Universal time: Mon 2015-07-06 00:30:18 UTC
        RTC time: n/a
       Time zone: America/Denver (MDT, -0600)
 Network time on: no
NTP synchronized: no
 RTC in local TZ: no

如果一切从这个输出看起来不错,你应该可以继续配置NTP(继续阅读)。 如果您必须更改时区或其他任何内容,请参阅此页面了解更多信息。

安装和配置NTP

Arch Linux可以轻松安装和配置NTP,因为它配有适用于大多数人的配置。 首先我们要安装包:

sudo pacman -S ntp

在安装之前,一切顺利,请查看/etc/ntp.conf 。 写入时间的默认值如下所示:

# Please consider joining the pool:
#
#     http://www.pool.ntp.org/join.html
#
# For additional information see:
# - https://wiki.archlinux.org/index.php/Network_Time_Protocol_daemon
# - http://support.ntp.org/bin/view/Support/GettingStarted
# - the ntp.conf man page

# Associate to Arch's NTP pool
server 0.arch.pool.ntp.org
server 1.arch.pool.ntp.org
server 2.arch.pool.ntp.org
server 3.arch.pool.ntp.org

# By default, the server allows:
# - all queries from the local host
# - only time queries from remote hosts, protected by rate limiting and kod
restrict default kod limited nomodify nopeer noquery notrap
restrict 127.0.0.1
restrict ::1

# Location of drift file
driftfile /var/lib/ntp/ntp.drift

如果您有兴趣更改默认值,我建议您在这里查看 ArchWiki文章。 否则,我们将继续假设ntp.conf文件看起来像你想要的。 对于大多数人来说,默认设置将会很好。 现在, ntpd是我们想在Arch Linux安装的后台运行的守护进程。 以下命令将分别启动ntpd并启用它。

sudo systemctl start ntpd

sudo systemctl enable ntpd

维护拱门

维护Arch与维护任何其他分发或操作系统没有太大的不同。 建立Arch安装的最常用方法是不定期更新您的包。 Arch Linux是一个滚动版本发行版。 没有重大版本的发行版本,而且软件包是在连续和“可用”的基础上更新的。 考虑到这一点,如果您从不更新系统,可能会发生如下变化:当您最终决定更新系统时会导致问题。 经常更新以避免冲突和问题。 这也确保您的系统正在运行最新的安全漏洞修补。

升级整个Arch Linux系统

Pacman是一个非常强大的软件包管理器,但一旦熟悉使用标志和命令的语法,它就很容易使用。 您可以(并且应该)对您的Arch Linux系统做的最重要的事情是尽可能定期更新。 我每天都会自己更新系统,我从来没有遇到过这样的问题。 虽然每隔几天到一周都要罚款! 以下命令将告诉Pacman将所有安装的软件包与respositories进行同步:

sudo pacman -Syu

这将提供所有可用更新的列表,然后继续询问您是否要继续:

[root@zabaglione ~]# pacman -Syu
:: Synchronizing package databases...
 core                                                                                                                 121.6 KiB   599K/s 00:00 [----------------------------------------------------------------------------------------] 100%
 extra                                                                                                               1738.1 KiB  3.12M/s 00:01 [----------------------------------------------------------------------------------------] 100%
 community                                                                                                              2.7 MiB  8.81M/s 00:00 [----------------------------------------------------------------------------------------] 100%
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...

Packages (8) gnupg-2.1.6-1  less-478-1  libldap-2.4.41-1  lz4-131-1  mercurial-3.4.2-1  openssh-6.9p1-1  vim-7.4.764-1  vim-runtime-7.4.764-1

Total Download Size:   11.29 MiB
Total Installed Size:  56.65 MiB
Net Upgrade Size:       0.11 MiB

:: Proceed with installation? [Y/n] 

仔细读! 有时候,Pacman会做一些更新镜像列表或其他文件的事情,它会在这样做之前告诉你,以及旧的备份。 随着时间的推移,当这种事情发生在基于升级的软件包时,您将会感觉到,直到您熟悉,请务必谨慎!

删除软件包及其依赖关系

当我删除一个包时,我通常会告诉Pacman也删除其未使用的依赖关系,也就是说,不需要任何其他包的包。 这有助于保持我的系统更清洁,没有混乱。 我从来没有遇到使用Pacman做这个事情的问题,所以依赖树保持不变。 要删除包及其不必要的依赖关系:

pacman -Rs packageName

删除未使用的软件包

随着时间的推移,通过一系列的安装和卸载,很容易积累很多可能不需要的软件包。 要显示所有显式安装的软件包(因此,它们未被安装为任何其他软件包的依赖项),您可以使用以下命令:

pacman -Qen

通过输出仔细阅读并识别您不再需要的任何东西。 只要你没有看到他们的任何使用,它应该是安全的。 为了摆脱可能作为依赖关系拉入但不再需要任何软件包的软件包,您可以使用它:

pacman -Rns $(pacman -Qtdq)

如果您收到错误,说明错误:没有指定目标 ,这只是意味着没有任何要被删除的软件包来满足条件。

清理Pacman缓存

Pacman必须下载最终在系统上安装的所有软件包。 它将这些包存储在/ var / cache / pacman / pkg /中的缓存中。 随着时间的推移,这可能会占用相当多的磁盘空间,如果您正在嵌入式系统上运行,或者只是注意使用多少磁盘空间,则有以下几种方法来清理缓存,这取决于您的目标 BE MINDFUL:清除缓存完全意味着您无法轻松降级到旧版本的已安装软件,因为从缓存中清除它将从系统中删除。 我将介绍一个方法来更仔细地清理缓存,以免您删除所有旧版本。

方法1:清除WHOLE缓存(小心!)

如果空间真的有限,并且您对系统的稳定性相对满意,或者您是一名更高级的用户,该用户知道如何找到一个旧的软件包并且安装它,而不是使用Pacman从存储库中获取,这种清除Pacman的方法缓存可以使用。 我只在有限的场合和很多的关心中使用,因为如果我想要快速降级一个包,我喜欢有这样的灵活性,特别是在我依靠完成工作的生产机器或电脑上。 以下命令将删除缓存中的所有内容:

pacman -Sc

我警告你一个最后的时间,没有回来,缓存已经不见了。

方法2:维护一些版本

现在,如果你不想生活在边缘,想要以更安全的方式清理缓存,而不需要删除一切,你应该可以使用这个方法。 有一个内置的工具,它是pacman包的pacman包的一部分。 默认情况下,paccache将删除除最新的THREE版本之外的所有内容,因此通常这样做是一个好主意。 此外,输出是非常有用的,并告诉你有多少空间被释放:

[jonathan@zabaglione ~]$ paccache -r
==> Privilege escalation required
[sudo] password for jonathan: 

==> finished: 233 packages removed (disk space saved: 511.94 MiB)

如果您还想删除卸载的软件包的所有缓存版本,可以像这样运行paccache:

paccache -ruk0

回滚到旧版本的软件包

有时候,当一个软件包升级破坏重要的时候,每个Linux用户的生活都会有一段时间。 错误可能会滑过裂缝,偶尔会将其放在您的操作系统上,或者您正在做一些特别的事情,需要一个非常具体的版本的软件包,哎呀,你不小心更新到最新版本! 以下假设您具有上述包缓存中需要的版本,但如果没有,请下载正确的版本并将pacman指向它应该会产生您希望的结果。 当然,请记得用你正在训练的实际包来替换“name”和“package”来操作:

pacman -U /var/cache/pacman/pkg/name-version.pkg.tar.gz