apt 与 apt-get 错误代码

apt 与 apt-get 错误代码

我这里有奇怪的东西,被apt什么东西锁住了。错误代码分别不匹配。apt update似乎总是返回 success 0,而apt-get update返回正确的错误代码。

vlastimil@vb-nb-mint ~/Development/bash $ sudo apt-get update
Reading package lists... Done
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/

vlastimil@vb-nb-mint ~/Development/bash $ echo $?
100

vlastimil@vb-nb-mint ~/Development/bash $ sudo apt update
Reading package lists... Done
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/

vlastimil@vb-nb-mint ~/Development/bash $ echo $?
0

apt的位置:

vlastimil@vb-nb-mint ~/Development/bash $ which apt
/usr/local/bin/apt

apt的版本:

vlastimil@vb-nb-mint ~/Development/bash $ apt-show-versions apt
apt:amd64/xenial-updates 1.2.12~ubuntu16.04.1 uptodate

我原本想用于apt手动升级脚本,但这改变了情况。有人了解错误代码等来帮助我解决这个问题吗?

答案1

这显然是故意的,请参阅#778357:退出代码 0 表示成功或暂时错误,其他任何值表示永久错误。

正如手册页中所示apt

脚本用法以及与其他 APT 工具的差异

命令apt(8)行被设计为最终用户工具,它可能会改变版本之间的行为。虽然它试图不破坏向后兼容性,但如果更改看起来有利于交互使用,则不能保证这一点。

的所有功能都apt(8)可以在专用 APT 工具(例如apt-get(8)和)中使用apt-cache(8)apt(8)只是更改某些选项的默认值(apt.conf(5)具体请参见二进制范围)。因此,您应该更喜欢在脚本中使用这些命令(可能启用一些附加选项),因为它们尽可能保持向后兼容性。

所以你不应该apt在脚本中使用。

(很奇怪,你有aptin /usr/local/bin;考虑到你安装了最新的apt软件包,你可能也有它/usr/bin!)

相关内容