apt full-upgrade vs apt upgrade 冗餘
這可能是一個可能的錯誤,但它已經困擾我幾天了。
apt-get upgrade
和之間的區別apt-get dist-upgrade
現在是眾所周知和公認的,即升級安裝/升級而dist-upgrade
能夠安裝/刪除/升級如果軟體包刪除恰好是安裝或升級另一個軟體包所必需的。可以通過以下方式輕鬆發現包中的差異(以下是一種快速而骯髒的方法,需要在終端中輸入 sudo 密碼才能進行複制粘貼。另外,由於我有幾個包和驅動程序,我自己修補了一些需要保留的功能,因此我將 OR 包含在僅提取要安裝的
awk
和要升級的,而不是列出要保留的那些,但是即使apt upgrade
輸出中不存在這些行,以下內容也應該起作用):$echo -e 'n' | sudo apt-get dist-upgrade | awk ' /be installed|be upgraded/{f=1;next}; /not upgraded|kept back/{f=0}f' | awk ' BEGIN {RS=" ";} {print $0} ' | grep . > apt_get_dist_list $echo -e 'n' | sudo apt-get upgrade | awk ' /be installed|be upgraded/{f=1;next}; /not upgraded|kept back/{f=0}f' | awk ' BEGIN {RS=" ";} {print $0} ' | grep . > apt_get_upgrade_list
當我將兩個輸出與:
$diff apt_get_dist_list apt_get_upgrade_list | grep -E '<|>'
就我而言,我得到以下資訊:
< gir1.2-nm-1.0 < libcpupower2 < linux-kbuild-5.2 < blueman < linux-cpupower < linux-headers-amd64 < linux-image-amd64 < pdf-parser
這使得差異非常明顯,特別是考慮到
linux-header-*
和linux-image-*``apt-get dist-upgrade
現在,如果我重複相同的
apt upgrade
過程apt full-upgrade
$echo -e 'n' | sudo apt upgrade | awk ' /be installed|be upgraded/{f=1;next}; /not upgraded|kept back/{f=0}f' | awk ' BEGIN {RS=" ";} {print $0} ' | grep . > apt_upgrade_list $echo -e 'n' | sudo apt full-upgrade | awk ' /be installed|be upgraded/{f=1;next}; /not upgraded|kept back/{f=0}f' | awk ' BEGIN {RS=" ";} {print $0} ' | grep . > apt_fullupgrade_list
並比較:
$diff apt_get_dist_list apt_fullupgrade_list | grep -E '<|>'
正如預期的那樣,我一無所獲,因為
apt full-upgrade
並且apt-get dist-upgrade
旨在以相同的方式表現,但是當我比較時:$diff apt_get_upgrade_list apt_upgrade_list | grep -E '<|>'
我得到與比較時相同的輸出
apt-get upgrade with apt-get dist-upgrade
。> gir1.2-nm-1.0 > libcpupower2 > linux-kbuild-5.2 > blueman > linux-cpupower > linux-headers-amd64 > linux-image-amd64 > pdf-parser
我能得出的唯一結論是 that
apt upgrade
is exactly the same asapt full-upgrade
which also make it as 相同apt-get dist-upgrade
,這最終意味著不僅是apt upgrade
多餘的,而且更令人擔憂的是目前apt
不允許相同的行為作為apt-get upgrade
.
它們不是多餘的;還有一個額外的微妙之處:
apt-get upgrade
只會升級目前安裝的包;apt upgrade
將升級目前安裝的包並安裝由更新的依賴項引入的新包;- 各種
dist-upgrade
和full-upgrade
變體將升級目前安裝的包,安裝作為依賴項引入的新包,並刪除被升級包破壞的包。換一種方式:
命令 升級 安裝 消除 apt-get upgrade
是的 不 不 apt upgrade
是的 是的 不 apt-get dist-upgrade
等apt full-upgrade
。是的 是的 是的 實際上,
apt upgrade
它比apt-get upgrade
(預設情況下)更安全,因為它允許在 ABI 更改時自動安裝更新的核心。請參閱apt-get upgrade 阻止核心更新。在 Debian 9 上應用更新的官方說明是什麼?例如。
apt-get upgrade
可以被告知行為apt upgrade
與--with-new-pkgs
選項相同。這也可以使用 APT 配置文件進行配置;你可以看到apt
的具體設置apt-config dump | grep '^Binary::apt
(這裡涉及的設置是APT::Get::Upgrade-Allow-New
)。