Linux

apt vs apt-get 錯誤程式碼

  • November 24, 2016

我這裡有奇怪的東西,什麼時候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手動升級腳本,但這改變了情況。有人了解錯誤程式碼等以便幫助我嗎?

這顯然是故意的,請參見#778357:退出程式碼 0 表示成功或暫時錯誤,其他任何內容都表示永久錯誤。

apt手冊頁所示:

腳本用法和與其他 APT 工具的區別

命令行apt(8)被設計為最終使用者工具,它可能會改變版本之間的行為。雖然它盡量不破壞向後兼容性,但如果更改似乎有利於互動式使用,也不能保證。

的所有功能apt(8)都可以在專用的 APT 工具中使用,例如apt-get(8)apt-cache(8)apt(8)只是更改某些選項的預設值(請參閱apt.conf(5)特別是二進制範圍)。因此,您應該更喜歡在腳本中使用這些命令(可能啟用了一些附加選項),因為它們盡可能保持向後兼容性。

所以你不應該apt在腳本中使用。

(奇怪的是你有apt/usr/local/bin鑑於你安裝了一個最新的apt包,你可能也有它/usr/bin!)

引用自:https://unix.stackexchange.com/questions/323015