经常发生的是,当我启动我的 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?
我想知道是否有一个命令行可以温和地终止使用 apt 的所有实例,使 apt 环境和配置保持连贯状态,并准备使用 ubuntu 的 gui 版本软件更新或 apt-get。
谢谢
答案1
解决你的问题的长期方法很简单:
sudo apt remove unattended-upgrades
在我看来,无人值守升级的设计很差,这是没有借口的。通过自动启动的进程阻止每个软件安装,甚至系统关闭,持续数小时,而用户无法关闭,否则可能会损坏 apt 数据库:真是令人难以置信。
短期内,您可以等待并希望,或者向其发送 SIGKILL 并希望获得最佳结果 - 无论是下载时间太长,还是由于缺少证书、连接故障或其他百万种无人值守升级可能绊倒自己的原因之一,它都会没事。您可能需要手动删除锁定文件。
此后,赶紧卸载无人值守升级,以重新获得对计算机的控制权。
答案2
unattended-upgrades
如果仍在运行,这些解决方案均不起作用。您将收到此错误:
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
您必须先停止该服务,然后才能卸载/删除它。具体操作如下:
sudo systemctl stop unattended-upgrades
然后摆脱它:
sudo apt-get purge unattended-upgrades
答案3
使用 dpkg 进行一些 ASCII-GUI 配置是另一种选择(或者至少我认为目前还没有提到):
sudo dpkg-reconfigure unattended-upgrades
然后只需选择No
,按Enter
。就我而言,这已立即停止了似乎被阻止的正在进行的无人值守升级(至少在硬件允许的范围内尽可能快 :) )。
此信息可在此处找到(赞): 如何在 Ubuntu 上禁用无人值守升级
答案4
具有讽刺意味的是,你想要进行手动升级:无人值守升级已经为你做到了这一点。当 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";
显然,您必须清楚地了解如何使用 SIGTERM。
请注意,同一个文件有一个设置可以将无人值守升级移至关机状态(如 Windows)。
另外,自动更新和升级使用 systemd 计时器。您只需编辑 /lib/systemd/system/apt-daily.timer 和 /lib/systemd/system/apt-daily-upgrade.timer 即可更改它们的运行时间。删除随机化并指定您想要的恒定时间。
对于通用用户:您可能不需要任何这些工具,但它们是可用的。一般来说,在大多数情况下不要中断 APT。不熟练地这样做不会释放锁定,并且可能会损坏您的系统。在 apt 中断后进行清理可能会令人困惑和乏味……并且完全可以避免。对于大多数用户(包括专家),最佳做法是等待 5-10 分钟,直到 apt 完成其任务。这是吃三明治的好时机。
- 5-10 分钟确实意味着这一点。要有耐心。如果 apt 似乎在 20 分钟或更长时间内没有取得任何进展,那么就应该担心并寻求帮助了。(20 分钟不是规则——这是我的个人指导方针)。