以下软件包已被保留 - 可以安全地强制安装吗?

Abh*_*til 11 upgrade package-management apt

在执行时sudo apt upgrade,我收到以下错误(或警告,不确定它是什么):

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  libnvidia-cfg1-440 libnvidia-compute-440 libnvidia-compute-440:i386 libnvidia-decode-440 libnvidia-decode-440:i386 libnvidia-encode-440 libnvidia-encode-440:i386
  libnvidia-extra-440 libnvidia-fbc1-440 libnvidia-fbc1-440:i386 libnvidia-gl-440 libnvidia-gl-440:i386 libnvidia-ifr1-440 libnvidia-ifr1-440:i386
  nvidia-compute-utils-440 nvidia-driver-440 nvidia-kernel-common-440 nvidia-kernel-source-440 nvidia-utils-440 xserver-xorg-video-nvidia-440
0 upgraded, 0 newly installed, 0 to remove and 20 not upgraded.
Run Code Online (Sandbox Code Playgroud)

我找到了解决方案(运行sudo apt install <package-name>)。我也发现了为什么会这样。这是因为新版本有未满足的依赖关系。

但我的疑问是,这样做是否安全sudo apt install <package-name>,或者系统会在几天内处理它。如果是这样,那么需要多少天才能自行解决?

编辑 1:
我当前的 Nvidia 驱动程序是 440。

Pab*_*chi 18

您看到此消息的原因通常有四个:

\n
    \n
  • 升级程序需要添加使用--with-new-pkgs upgrade。如果没有这个,apt upgrade将不会添加或删除新的包。

    \n
  • \n
  • 升级过程需要删除软件包:仔细检查您的 apt 配置,哪些软件包将被删除,分析可能的后果,检查您的 backups\xe2\x80\xa6,然后:apt full-upgrade。将根据需要添加或删除软件包以完成升级。

    \n
    \n

    apt full-upgrade仅当您的存储库有问题时才是危险的/etc/apt/sources.list*。很高兴知道full-upgrade升级所有软件包,但使用默认存储库,这应该没问题。使用full-upgrade可能会很危险,因为您可能会错过安全更新。来源

    \n
    \n
    \n

    apt full-upgrade可以删除和添加软件包,但这并不危险。如果您的sources.list 文件有问题,任何软件包安装命令都可能导致严重损坏!常规apt upgrade命令将从任何启用的软件源安装任何软件包;full-upgrade这种方式并不是独一无二的。来源

    \n
    \n
  • \n
  • 相关软件包被标记为保留:(sudo apt-mark showmanual | grep nvidia例如),列出的软件包之一是apt upgrade?列出的麻烦软件包。在这种情况下,应该分析谁/为什么这些包被这样标记。

    \n
  • \n
  • 这取决于不可用的软件包或版本:这可能是临时问题或容易配置错误。

    \n
      \n
    • 这种临时情况有时可能与分阶段更新有关(也在此处):

      \n
      \n

      一旦更新发布到 -updates,更新就会分阶段进行,以便逐步向不断扩大的 Ubuntu 用户子集提供更新。此过程使我们能够自动监视回归并在发现任何情况时停止更新过程。

      \n

      Phased-Update-Percentage 最初设置为 10%,并运行一个作业(每 6 小时)检查回归情况,如果没有发现,则分阶段更新百分比将增加 10%。因此,更新将在 54 小时或大约 2 天后完全分阶段进行。

      \n

      Update Manager 是目前唯一支持分阶段更新的包管理器。任何其他更新机制都会安装所有更新,无论分阶段更新百分比如何。

      \n
      \n
    • \n
    \n
  • \n
\n

其他注意事项

\n
    \n
  • 不确定使用full-upgrade?尝试一下--dry-run。来自apt 手册

    \n
    \n

    -s, --simulate, --just-print, --dry-run, --recon, --no-act:\n无操作;对基于当前系统状态将发生的事件进行模拟,但不会实际更改系统。

    \n
    \n
  • \n
  • dist-upgrade不会更新整个发行版(如do-release-upgrade)。这是用词不当。full-upgrade是等价的。避免使用dist-upgrade.

    \n
  • \n
  • 使用apt命令,这apt-get.

    \n
  • \n
\n
\n

有时sudo ubuntu-drivers install可能会尝试降级您的 NVIDIA 驱动程序。我不知道为什么。

\n

  • @PabloBianchi - 这是一个_用户体验_错误,因为它说事情已被保留,但没有说明原因,因此会引起混乱。原因是因为“分阶段更新”(例如,参见 https://askubuntu.com/q/601/222533 以及那里的评论,链接到进一步的问题),但用户界面中没有任何指示。因此,我们在 askubuntu 上有这样的问题……因为它令人困惑。如果它说“由于分阶段更新而被保留”(也有或没有“(有关分阶段更新的更多信息,请参阅_&lt;url&gt;_)”),那就不会那么令人困惑了。 (4认同)
  • 是的,当我执行“sudo apt-get full-upgrade”时,我仍然得到“以下软件包已被保留”。在我看来,底线是这是一个用户体验错误,因为 apt/apt-get 没有给出有关_为什么_包被保留的指示。我会尝试在适当的位置找到错误,或者在必要时报告错误(我需要找到...) (2认同)