多次运行 apt update 会导致无法升级

多次运行 apt update 会导致无法升级

我有一个更新系统的脚本:

sudo apt update && sudo apt upgrade && sudo apt autoremove

有时它会抛出一个错误,说升级已被锁定,因此无法升级可升级的软件包。当我再次运行脚本时,当时apt update显示没有要升级的内容,而到了运行apt upgrade升级的时候,却没有升级,因为“没有要升级的内容”。我该如何升级第一个列出的软件包apt update

真实案例:现在我有 Firefox 67.0.3(67.0.4 版本可用),第一个apt update显示有更新。无法升级,现在当我apt update再次运行时,没有列出 Firefox 的升级,也apt upgrade没有升级任何东西。

我在 Google 上搜索了这个问题,但没有找到。如果能得到任何帮助,我将不胜感激。

提前谢谢,抱歉我的英语不好

答案1

最可能的原因是,您偶尔会在运行无人值守升级的同时运行您的脚本。

通过查看无人值守升级日志可以轻松检查。

以下是我今天早些时候的无人值守升级日志的示例:

$ grep 2019-06-21 /var/log/unattended-upgrades/unattended-upgrades.log

2019-06-21 06:35:25,971 INFO Initial blacklist : 
2019-06-21 06:35:25,986 INFO Initial whitelist: 
2019-06-21 06:35:25,986 INFO Starting unattended upgrades script
2019-06-21 06:35:25,986 INFO Allowed origins are: o=Ubuntu,a=disco, o=Ubuntu,a=disco-security, o=UbuntuESM,a=disco, 
2019-06-21 06:36:00,248 INFO Packages that will be upgraded: bind9-host intel-microcode libbind9-161 libdns-export1104 libdns1104 libirs161 libisc-export1100 libisc1100 libisccc161 libisccfg163 liblwres161 libpq5
2019-06-21 06:36:00,248 INFO Writing dpkg log to /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
2019-06-21 06:37:18,374 INFO All upgrades installed

看一下日志的第 5 行 ( Packages that will be upgraded:...):此列表直接从 apt 中提取。它是几乎与您从 获得的列表相同sudo apt update。无人值守升级的默认设置是仅使用 -security pocket。不是 -updates,不是 -backports,不是 PPA,不是第三方存储库。因此,一些非安全软件包可能无法安装。您可以更改此设置。

现在查看日志的第 7 行 ( All upgrades installed):这是您确认第 5 行列出的所有软件包均已成功升级,并且无人值守升级已释放 apt 锁并终止当天的操作。如果出现问题或故障,或者 UU 仍在运行,则您将看不到此行。

您可以看到,如果我在 06:35 运行手动升级sudo apt update,那么会有很多软件包需要升级。但如果我sudo apt upgrade在 06:38 运行,则不会升级任何软件包...因为无人值守升级已经完成了。

答案2

我敢打赌,每次 sudo apt update 完成时,Ubuntu 软件更新都会妨碍你。你应该打开软件更新设置,并确保将其设置为所有“从不”选项。我不认为这会抑制弹出窗口,但它应该可以阻止它尝试自动升级并锁定文件。

为了修复 Firefox,我会运行sudo apt install --reinstall firefox并查看是否能解决问题。如果它抱怨锁定,通常可以使用 将其删除sudo rm /var/lib/dpkg/lock

顺便说一句,对于你的脚本,你可以使用以下方法来加快速度sudo -- sh -c 'apt update; apt upgrade --autoremove -y'

相关内容