为什么 /usr/lib/update-notifier/apt-check 与 apt-get upgrade 不一致?

我已经安装了最新的Ubuntu系统(13.10)。
当我运行/usr/lib/update-notifier/apt-check命令时,它返回7:0,即有7个可用的更新,但没有安全更新。
然而,当我尝试升级时,出现以下错误:
sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
  linux-generic linux-headers-generic linux-image-generic
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

有人可以解释为什么以及如何使 apt-check 返回正确的值吗?如果 apt-check 返回了 3:0,那似乎是有道理的,但是 7 是从哪来的呢?

顺便说一下,apt-check 可以使用 sudo apt-get install update-notifier 进行安装。

1个回答

/usr/lib/update-notifier/apt-check 

实际上等同于返回的统计数据

apt-get -s dist-upgrade | grep "^[[:digit:]]\+ upgraded"

不返回翻译文本
apt-get upgrade|grep "^[[:digit:]]\+ upgraded"

例如。
/usr/lib/update-notifier/apt-check --human-readable

返回
22 packages can be updated.
0 updates are security updates.

whereas

apt-get -s dist-upgrade | grep "^[[:digit:]]\+ upgraded"

返回

18 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.

其实是18+4,总共等于22
来自apt-get手册:
upgrade
       upgrade is used to install the newest versions of all packages
       currently installed on the system from the sources enumerated in
       /etc/apt/sources.list. Packages currently installed with new
       versions available are retrieved and upgraded; under no
       circumstances are currently installed packages removed, or packages
       not already installed retrieved and installed. New versions of
       currently installed packages that cannot be upgraded without
       changing the install status of another package will be left at
       their current version. An update must be performed first so that
       apt-get knows that new versions of packages are available.

   dist-upgrade
       dist-upgrade in addition to performing the function of upgrade,
       also intelligently handles changing dependencies with new versions
       of packages; apt-get has a "smart" conflict resolution system, and
       it will attempt to upgrade the most important packages at the
       expense of less important ones if necessary. So, dist-upgrade
       command may remove some packages. The /etc/apt/sources.list file
       contains a list of locations from which to retrieve desired package
       files. See also apt_preferences(5) for a mechanism for overriding
       the general settings for individual packages.

来源


1谢谢,那很有道理。考虑到最新的长期支持版本将在几周后发布,我会忍耐一下,等到那时再解决这个问题。 - Luke Cousins