use*_*548 29 aptitude apt unattended-upgrades 18.04
经常发生这样的情况:当我启动我的 Ubuntu 18 机器并且想要手动更新我的软件时,我陷入了涉及已经使用 apt 的错误(无休止的等待无人值守升级和/或其他服务)。
大多数情况下,机器或虚拟机不经常启动,启动和下一次启动需要很多天或 4-5 个月,同时可能某些证书、镜像或其他东西已经更改,并且无人值守升级会卡在尝试联系不再存在的服务器时出现无休止的超时..
这是错误:
user@ubuntu:~$ sudo apt-get upgrade
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarly unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一个命令行可以使用 apt 温和地终止所有实例,使 apt 环境和配置保持一致状态,并准备好使用 gui 版本的 ubuntu软件更新或 apt-get。
谢谢
Jam*_*mes 38
解决您问题的长期解决方案很简单:
sudo apt remove unattended-upgrades
Run Code Online (Sandbox Code Playgroud)
在我看来,无人值守升级的糟糕设计没有任何借口。阻止每个软件安装,甚至系统关闭,几个小时内自动启动的进程,用户无法关闭,而不冒损坏 apt 数据库的风险:令人难以置信。
在短期内,您可以等待并希望,或者向其发送 SIGKILL 并希望得到最好的结果 - 如果下载时间很长,或者由于缺少证书、连接错误而卡住,那也没关系,或者是无人值守升级可能被自己的鞋带绊倒的数百万个其他原因之一。您可能需要手动删除锁定文件。
之后,赶快卸载无人值守升级,重新获得对计算机的控制权。
小智 22
unattended-upgrades如果仍在运行,这些解决方案都将不起作用。你会得到这个错误:
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
Run Code Online (Sandbox Code Playgroud)
您必须先停止该服务,然后才能卸载/删除它。要做到这一点:
sudo systemctl stop unattended-upgrades
Run Code Online (Sandbox Code Playgroud)
然后摆脱它:
sudo apt-get purge unattended-upgrades
Run Code Online (Sandbox Code Playgroud)
使用 dpkg 进行某些 ASCII-GUI 配置是另一种选择(或者至少我认为到目前为止还没有提到):
sudo dpkg-reconfigure unattended-upgrades
Run Code Online (Sandbox Code Playgroud)
然后只需选择No并按Enter。就我而言,这立即停止了似乎被阻止的正在进行的无人值守升级(至少与硬件似乎允许的一样快:))。
此信息可以在这里找到(荣誉): 如何在 Ubuntu 上禁用无人值守升级
小智 5
复制粘贴解决方案也可以是这样的:
sudo systemctl stop unattended-upgrades
Run Code Online (Sandbox Code Playgroud)
如果它仍在运行:
sudo pkill --signal SIGKILL unattended-upgrades
Run Code Online (Sandbox Code Playgroud)
禁用服务并更改配置:
sudo systemctl disable unattended-upgrades
sudo sed -i 's/Unattended-Upgrade "1"/Unattended-Upgrade "0"/g' /etc/apt/apt.conf.d/20auto-upgrades
Run Code Online (Sandbox Code Playgroud)
具有讽刺意味的是,您想要进行手动升级:无人值守升级已经为您做到了这一点。当 systemd 检测到您新启动的系统错过了 apt-update 和 apt-upgrade 计时器时,它会立即触发它们。
ps或/var/run/apt/periodic查明无人值守升级何时完成工作。但是,对于启动间隔时间较长的用例,请考虑进行编辑/etc/apt/apt.conf.d/20auto-upgrades以禁用自动更新和升级。我们建议大多数用户不要仅仅禁用它,这样他们就可以手动升级……几周后,人们往往会放弃这种方法。
使无人值守升级中止是可能的,但不建议大多数通用用户这样做。
编辑/etc/apt/apt.conf.d/50unattended-upgrades以启用此选项:
// Split the upgrade into the smallest possible chunks so that
// they can be interrupted with SIGTERM. This makes the upgrade
// a bit slower but it has the benefit that shutdown while a upgrade
// is running is possible (with a small delay)
//Unattended-Upgrade::MinimalSteps "false";
Run Code Online (Sandbox Code Playgroud)
显然,您必须清楚地了解如何使用 SIGTERM。
请注意,同一文件具有将无人值守升级移至关闭的设置(如 Windows)。
或者,自动更新和升级使用 systemd 计时器。您只需编辑 /lib/systemd/system/apt-daily.timer 和 /lib/systemd/system/apt-daily-upgrade.timer 即可更改它们运行的时间。删除随机化并指定您想要的恒定时间。
对于一般用途用户:您可能不需要任何这些工具,但它们是可用的。一般来说,大多数情况下不要中断 APT。不熟练地这样做不会释放锁定,并且可能会损坏您的系统。适当破损后的清理工作可能会令人困惑且乏味……但这是完全可以避免的。对于大多数用户(包括专家)来说,最佳实践是等待 5-10 分钟,直到 apt 完成其任务。吃三明治的好时机。
| 归档时间: |
|
| 查看次数: |
49160 次 |
| 最近记录: |