这可能是一个错误,但这已经困扰了我几天了。
之间的差异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
我唯一可以得出的结论是,apt upgrade
它与完全相同,apt full-upgrade
这也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
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句