如何在 Arch Linux 上负责任地自动运行更新?

Cal*_*leb 16 arch-linux pacman upgrade package-management yaourt

我是 Arch Linux 的新手,并且仍然习惯于它的一些范例。我从另一个发行版中养成了很多习惯,这些习惯更加结构化并且在某些方面是可预测的。

我想对一些系统做的一件事是启用 cron 作业来自动更新所有系统包。这似乎很容易,除了我还希望系统提供一些有意义的反馈,告诉我事情的进展情况,但不会太冗长以至于我最终会忽略它,直到我发现系统正在运行。

  • 的完整输出pacman是不必要的。我不在乎下载花了多长时间,也不在乎它是在 53 次更新中的第 46 次。
  • 在大多数情况下,我不关心成功。
  • 我确实关心错误。如果更新运行失败,我想知道它,并且应该修补任何特定的错误消息。
  • 我确实关心安装过程中发出的“通知”。例如今天的 systemd 更新说:

    :: coredumps are no longer sent to the journal by default. To re-enable:  
    echo >/etc/sysctl.d/50-coredump.conf \  
        "kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e"
    
    Run Code Online (Sandbox Code Playgroud)

    或者文件系统产生了这个:

    warning: /etc/group installed as /etc/group.pacnew  
    warning: /etc/passwd installed as /etc/passwd.pacnew  
    warning: /etc/shadow installed as /etc/shadow.pacnew
    
    Run Code Online (Sandbox Code Playgroud)

    最后一个类别实际上是促使我提出这个问题的原因,因为看起来这些在整个包集中非常不一致。其中一些似乎是由 生成的post_upgrade(),其他的似乎是由等生成的install()。有时它们被写入标准输出,有时被写入标准错误。消息的格式差异很大:有时整个块以某种方式以缩进为前缀,有时只有一个空的回显字符串。

我想知道可能需要我对系统进行干预但又不会被打扰的事情。是否有一种工具可以智能地管理这些数据并简化系统管理?有什么方法可以将软件包生成的输出与安装它们的 pacman 进程分开?还是我自己编写某种解析器来过滤掉安装日志中的良性内容?

¹ 在你跳过这有多么愚蠢之前,请注意我足够聪明,不会在生产服务器上这样做,也不会在没有基于快照的完整系统备份的情况下进行,这样在发生灾难时可以轻松恢复。

Hal*_*ost 11

我想对你和任何其他可能发生在这个线程上的人说清楚。你想要做的是不是可能。Arch 毫不掩饰它希望管理您的系统的事实。该责任的一部分存在于更新周期中。

现在,您可以负责任地自动化更新过程的某些步骤,但它永远不会达到自动化的-Syu. 您只需要在那里进行升级。

例如,您可以做的是设置一个cron下载任何需要安装的包(但不安装它们)的作业。以下是pacman文档的摘录:

SYNC OPTIONS
...
-w  --downloadonly
    Retrieve all packages from the server, but do not install/upgrade anything.
Run Code Online (Sandbox Code Playgroud)

然后,您可以设置一个cron作业来运行sudo pacman -Syuw. 我不太熟悉cron或者它的调度能力。但是,如果它只能在满足特定条件后运行作业(例如,返回特定值的命令),那么根据需要触发新包的下载将是相当简单的。

例如,我会想象对checkupdates | wc -l进行检查。如果它返回任何大于零的数字,您可以触发下载。但是,-Syu当您在场并准备好处理升级时,这将不会取代运行。

对于问题的最后一部分,从哪里获得升级期间发生的事情的输出,您正在寻找/var/log/pacman.log. 它包括您可能感兴趣的所有错误信息。


一种工具旨在让pacman不熟悉的用户更加友好。如果我没记错的话,如果应该有需要手动干预的更新,它还会提供有关新闻项目的通知。

从短期来看,这个工具可能会让你的生活更简单一些,但它永远不会替代明智和勤奋地遵循邮件列表。

  • 实际上,对于需要手动干预的官方软件包的通知,我建议您关注 [arch-dev-public](https://mailman.archlinux.org/mailman/listinfo/arch-dev-public) 和 [arch -general](https://mailman.archlinux.org/mailman/listinfo/arch-general)。 (2认同)