gar*_*136 14 apt shutdown unattended-upgrades 16.04
当unattended-upgrades安装时,9个10个停机/重启挂起,而“开始无人参与升级关闭”。此挂起将关闭过程拖延 5-10 分钟。
如果我通过 禁用无人值守升级/etc/apt/apt.conf.d/20auto-upgrades and/or 50unattended-upgrades,则会出现问题。
如果我在关闭/重新启动 ( sudo service unattended-upgrades stop)之前终止服务,问题仍然存在。
如果我删除包 ( sudo apt remove unattended-upgrades),问题将不再出现。
这发生在新安装的版本上Ubuntu Server 16.04.1(均unattended-upgrades通过安装 GUI 安装或手动安装无人值守升级)
两者Kern.log & syslog都没有显示关闭过程(我相信是因为文件系统已经卸载了)
有没有其他人看到或修复过这个问题?疯狂地试图解决它。
小智 13
问题似乎是在关机时运行的脚本。
我确定了相应的文件:
find /etc/systemd -name *unattended*
Run Code Online (Sandbox Code Playgroud)
这给了我相关的 systemd 脚本:
/etc/systemd/system/shutdown.target.wants/unattended-upgrades.service
Run Code Online (Sandbox Code Playgroud)
然后告诉我关闭时执行的脚本:
/usr/share/unattended-upgrades/unattended-upgrade-shutdown
Run Code Online (Sandbox Code Playgroud)
在此脚本中,第 120 行中有一个部分与 /etc/apt/apt.conf.d/50unattended-upgrades -> Unattended-Upgrade::InstallOnShutdown 中的部分相关
/usr/share/unattended-upgrades/unattended-upgrade-shutdown 的第 120 行:
if apt_pkg.config.find_b("Unattended-Upgrade::InstallOnShutdown", False):
Run Code Online (Sandbox Code Playgroud)
问题:它需要关键字“False”,而在 apt conf 中我们应该添加“false”(精确字符串比较)!
我能够通过 3 种不同的方式修复/解决停顿的问题:
在提供真正的修复之前,此设置是升级安全的,因为我们在此处更改的文件不会被无人值守升级的更新覆盖。问题:当根本原因得到解决后,这将导致再次停机,因此我建议将此与解决方法 B 结合使用。
vim /etc/systemd/system/shutdown.target.wants/unattended-upgrades.service
[服务] 类型=oneshot ExecStart=/usr/share/unattended-upgrades/unattended-upgrade-shutdown TimeoutStartSec=15
此设置不是升级安全的,因为我们在此处更改的文件可能会被无人值守升级的更新覆盖。除此之外,它离修复某些东西真的很远,但它可以确保您的系统在关闭时不会等待几分钟。请记住,升级无人值守升级后,您可能需要再次设置!
修补 /usr/share/unattended-upgrades/unattended-upgrade-shutdown:
--- /tmp/无人值守升级关机 2017-02-03 14:53:03.238103238 +0100
+++ /tmp/unattended-upgrade-shutdown_fix 2017-02-03 14:53:17.685589001 +0100
@@ -117,7 +117,7 @@
# 运行
p = 无
apt_pkg.init_config()
- 如果 apt_pkg.config.find_b("Unattended-Upgrade::InstallOnShutdown", False):
+ if apt_pkg.config.find_b("Unattended-Upgrade::InstallOnShutdown", false):
env = copy.copy(os.environ)
env["UNATTENDED_UPGRADES_FORCE_INSTALL_ON_SHUTDOWN"] = "1"
logging.debug("在关机模式下启动无人值守升级")
tbh 只有最后一个是真正的修复。在实施真正的修复之前,其他两个选项都只是变通方法。
这必须在上游完成,因为这会影响两个发行版的 Debian(在 Debian Stretch 上测试)和 Ubuntu(在 Ubuntu 16.04.1 上测试)。
我在这里打开了一个错误报告:https : //bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1661611
| 归档时间: |
|
| 查看次数: |
34915 次 |
| 最近记录: |