如何获得自动升级以在 Ubuntu Server 上工作?

Pab*_*blo 9 ubuntu upgrade apt

我遵循了在 Ubuntu 服务器中启用自动升级文档,但它根本没有真正更新任何内容。

我的 /etc/apt/apt.conf.d/50unattended-upgrades 看起来几乎像默认值。

// Automatically upgrade packages from these (origin, archive) pairs
Unattended-Upgrade::Allowed-Origins {
        "Ubuntu karmic-security";
        "Ubuntu karmic-updates";
};

// List of packages to not update
Unattended-Upgrade::Package-Blacklist {
//      "vim";
//      "libc6";
//      "libc6-dev";
//      "libc6-i686";
};

// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. The package 'mailx'
// must be installed or anything that provides /usr/bin/mail.
Unattended-Upgrade::Mail "pupeno@example.com";


// Automatically reboot *WITHOUT CONFIRMATION* if a 
// the file /var/run/reboot-required is found after the upgrade 
//Unattended-Upgrade::Automatic-Reboot "false";
Run Code Online (Sandbox Code Playgroud)

目录 /var/log/unattended-upgrades/ 是空的。运行 /etc/init.d/unattended-upgrades start 不是很好:

root@mozart:~# /etc/init.d/unattended-upgrades start
Checking for running unattended-upgrades: root@mozart:~#
Run Code Online (Sandbox Code Playgroud)

似乎有什么东西坏了,但我不知道为什么。

我有待处理的更新,但没有被应用:

root@mozart:~# aptitude safe-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Reading extended state information      
Initializing package states... Done
The following packages will be upgraded:
  linux-libc-dev 
1 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B/743kB of archives. After unpacking 4096B will be used.
Do you want to continue? [Y/n/?]
Run Code Online (Sandbox Code Playgroud)

在我拥有的所有服务器中,无人值守升级似乎已被禁用:

root@mozart:~# apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade
root@mozart:~#
Run Code Online (Sandbox Code Playgroud)

任何想法我错过了什么?

Hen*_*wan 9

在此处检查您的 Ubuntu 版本的实际文档:

/usr/share/doc/unattended-upgrades/README.gz
Run Code Online (Sandbox Code Playgroud)

对于 Ubuntu 11.10,要启用它,您可以:

sudo dpkg-reconfigure -plow unattended-upgrades
Run Code Online (Sandbox Code Playgroud)

(这是一个交互式对话框),它将创建/etc/apt/apt.conf.d/20auto-upgrades以下内容:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Run Code Online (Sandbox Code Playgroud)

因此,Ubuntu 10.04 服务器指南中的信息确实已过时。

如果你像我们在BippoSoluvas那样使用Puppet,你可以使用这样的东西来自动化正确的无人值守升级配置:

# Unattended upgrades
package { unattended-upgrades: ensure => present }
file { '/etc/apt/apt.conf.d/50unattended-upgrades':
  content => template('bipposerver/50unattended-upgrades'),
  mode    => 0644,
  require => Package['unattended-upgrades'],
}
file { '/etc/apt/apt.conf.d/20auto-upgrades':
  source  => 'puppet:///bipposerver/20auto-upgrades',
  mode    => 0644,
  require => Package['unattended-upgrades'],
}
service { unattended-upgrades:
  enable    => true,
  subscribe => [ Package['unattended-upgrades'],
                 File['/etc/apt/apt.conf.d/50unattended-upgrades',
                      '/etc/apt/apt.conf.d/20auto-upgrades'] ],
}
Run Code Online (Sandbox Code Playgroud)

确保提供的模板/文件50unattended-upgrades20auto-upgrades你认为合适的。

我也在更新Ubuntu Wiki 页面以反映这一点。


daf*_*aff 6

我看不出你有什么问题/etc/apt/apt.conf.d/50unattended-upgrades。我的看起来和你的差不多,但我只让安全升级自动应用,没有别的。我也将它设置为简单地将邮件发送到“root”(Postfix 处理其余部分)。

但是:init 脚本/etc/init.d/unattended-upgrades不适用于运行无人值守升级。它只是检查无人值守升级过程是否正在运行并等待它退出。我真的不知道为什么需要它或者为什么它会做什么(它甚至不存在于以前的 Ubuntu 版本中),但这不是进行无人值守升级的方式。

相反,在 Ubuntu 上,有一个名为的 Python 程序unnattended-upgrades可以完成这项工作。尝试手动运行,看看会发生什么。还要检查命令的输出

apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade 
Run Code Online (Sandbox Code Playgroud)

它应该UnattendedUpgradeInterval='1'显示 ,表明您正确配置了 APT 以允许无人值守升级。

Ubuntu/etc/cron.daily/apt每天从 cron运行。如果您查看该脚本,您会发现它执行各种与 APT 相关的事情,其中​​包括无人值守升级。我的猜测是您以某种方式禁用了该 cron 脚本,因此在无人看管的情况下不会发生任何事情。

就是这样,或多或少,我的头顶。如果您尝试了我的想法但没有成功,请发表后续文章。

HTH

  • 谢谢达夫的回答。我在问题中添加了“apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade”的输出。我所有的服务器都不打印任何内容。 (2认同)

小智 5

你检查过 /etc/apt/apt.conf.d/10periodic 吗?

它应该有最后一行

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "1";
APT::Periodic::Unattended-Upgrade "1";
Run Code Online (Sandbox Code Playgroud)

  • 这些设置并非都存在于 10 个周期中,而是分布在 10 个周期、20 个自动升级和 50 个无人值守升级中。如果你把它们放在错误的地方,未来的 APT 升级可能会覆盖它们。20auto-upgrades 是设置 APT::Periodic::Unattended-Upgrade "1" 的地方;和 50unattended-upgrade 以调整行为,如 Ubuntu 服务器指南中所述。 (6认同)
  • 如 https://help.ubuntu.com/10.04/serverguide/C/automatic-updates.html 所述 (4认同)
  • 文档的最新 URL 是:https://help.ubuntu.com/lts/serverguide/automatic-updates.html,它说所有这四个都应该在 10periodic 中作为 Tanarri qrote。无人值守升级页面与此并不矛盾,但它添加了一些其他有用的信息:https://help.ubuntu.com/community/AutomaticSecurityUpdates (2认同)