我这里有奇怪的东西,被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
在脚本中使用。
(很奇怪,你有apt
in /usr/local/bin
;考虑到你安装了最新的apt
软件包,你可能也有它/usr/bin
!)