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

为什么 /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.

然而

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.

来源

相关内容