如何在CentOS7上启用自动更新?

如何在CentOS7上启用自动更新?

介绍

目的是自动更新 CentOS 7 系统。

试图

基于文档中执行了以下步骤:

  • yum-cron已安装
  • 更改yum-cron.conf如下:

    user@host ~ $ cat /etc/yum/yum-cron.conf 
    [commands]
    update_cmd = default
    update_messages = yes
    download_updates = yes
    apply_updates = yes
    
  • yum-cron

    • 已选中 ( systemctl status yum-cron)

      user@host ~ $ systemctl status yum-cron
      ● yum-cron.service - Run automatic yum updates as a cron job
      Loaded: loaded (/usr/lib/systemd/system/yum-cron.service; enabled; 
      vendor preset: disabled)
      Active: active (exited) since 
      
    • 已启用 ( systemctl enable yum-cron)

    • 开始 ( systemctl start yum-cron)
  • 几天后检查了 yum.log

    user@host$ sudo cat /var/log/yum.log
    [sudo] password for user:
    Feb 23 18:49:51 Installed: libreoffice5.2-freedesktop-menus-5.2.5-1.noarch
    Mar 02 15:42:09 Installed: qpid-tools-1.35.0-1.el7.noarch
    Mar 27 08:41:33 Installed: yum-cron-3.4.3-150.el7.centos.noarch
    

但没有自动安装任何内容。当yum upgrade指示可以安装多个软件包时验证了这一点:

user@host$ sudo yum upgrade

Transaction Summary
===================================================================================================================================================================================================================
Install    3 Packages (+2 Dependent packages)
Upgrade  155 Packages
Remove     2 Packages

Total size: 488 M
Total download size: 53 M
Is this ok [y/d/N]:

讨论

  • 问:这个问题可能与操作系统版本有关吗?

    user@host ~ $ cat /etc/redhat-release
    CentOS Linux release 7.3.1611 (Core)
    

    A:没有发现任何证据表明该问题与CentOS有关7.3.1611

答案1

您缺少默认的大量参数yum-cron.conf。我想知道遗漏其中一些参数是否是导致您出现问题的原因。

这是我的工作设置之一yum-cron.conf,经过修改:

# grep -v -e '^#' -e '^$' yum-cron.conf 
[commands]
update_cmd = default
update_messages = yes
download_updates = yes
apply_updates = yes
random_sleep = 10800
[emitters]
system_name = None
emit_via = stdio
ouput_width = 80
[email]
email_from = root@localhost
email_to = root
email_host = localhost
[groups]
group_list = None
group_package_types = mandatory, default
[base]
debuglevel = -2
mdpolicy = group:main

另外,检查以确保/etc/cron.daily/0yum-cron.cron存在:

#!/bin/bash

# Only run if this flag is set. The flag is created by the yum-cron init
# script when the service is started -- this allows one to use chkconfig and
# the standard "service stop|start" commands to enable or disable yum-cron.
if [[ ! -f /var/lock/subsys/yum-cron ]]; then
  exit 0
fi

# Action!
exec /usr/sbin/yum-cron

最后,确保 SELinux 标签和基本 unix 权限和所有权正确。这些值有效:

# ls -Z /etc/cron.daily/0yum-daily.cron /etc/yum/yum-cron.conf
-rwxr-xr-x. root root system_u:object_r:bin_t:s0       /etc/cron.daily/0yum-daily.cron
-rw-r--r--. root root unconfined_u:object_r:etc_t:s0   /etc/yum/yum-cron.conf

答案2

可能有助于诊断此问题的一件事是检查根帐户的电子邮件。 Anacron 运行的任何进程都会捕获 stdout 和 stderr 并将它们通过电子邮件发送到系统 root 帐户。此外,yum-cron它本身应该发送任何活动的电子邮件。将 root 的邮箱转发到您阅读的电子邮件地址是明智的做法。

set -x在开头附近添加/etc/cron.daily/0yum-cron.cron将导致sh回显正在运行的每个命令,这可以帮助您确定 Anacron 是否正在运行,如果正在运行,脚本是否0yum-cron.cron正确执行。

相关内容