如何防止安装比要求的版本更新的软件包?

alf*_*lfC 2 updates package-management apt nvidia software-installation

nvhpc我正在安装一个从第三方存储库调用的包。

为此,我使用推荐的方法,其中包括:

$ apt-get update && apt-get install --no-install-recommends -y --quiet ca-certificates
$ echo 'deb [trusted=yes] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /'
$ apt-get update -y
$ apt-get install --no-install-recommends -y  nvhpc-22-2
Run Code Online (Sandbox Code Playgroud)

事实证明,这会尝试安装nvhpc-22-3较新的版本。(我不想安装它,因为除其他外,我的虚拟机中没有两个版本的空间)。

同样奇怪的是,如果我显式安装nvhpc-22-3(或nvhpc),它仅安装版本 22.3,而如果我要求nvhpc-22-2安装,则会安装 22.2 和 22.3。(仅 22.3 或 22.2 就应该适合磁盘。)

我认为存储库或者apt-get正在尝试变得智能并安装新旧版本。 如何阻止安装新版本?(即专门称为nvhpc-22-3或 的包nvhpc)?

请注意,我传递参数是--no-install-recommends为了防止类似的事情发生,以防相关。

这是上面最后一个命令的输出:

$ apt-get install --no-install-recommends -y  nvhpc-22-2
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
nvhpc-22-2 nvhpc-22-3 perl ...
...
0 upgraded, 98 newly installed, 0 to remove and 14 not upgraded.
Need to get 5909 MB of archives.
After this operation, 20.5 GB of additional disk space will be used.
...
Selecting previously unselected package nvhpc-22-3.
Preparing to unpack .../94-nvhpc-22-3_22.3_amd64.deb ...
Unpacking nvhpc-22-3 (22.3) ...
Selecting previously unselected package nvhpc-2022.
Preparing to unpack .../95-nvhpc-2022_22.3_amd64.deb ...
Unpacking nvhpc-2022 (22.3) ...
Selecting previously unselected package nvhpc-22-2.
Preparing to unpack .../96-nvhpc-22-2_22.2_amd64.deb ...
Unpacking nvhpc-22-2 (22.2) ...
Run Code Online (Sandbox Code Playgroud)

mch*_*hid 5

这不是版本问题。它们实际上是两个不同的包,而不是同一包的两个不同版本。看来这nvhpc-22-3是 的依赖项nvhpc-22-2

无论出于何种原因,他们将其作为依赖项,因此您必须安装这两个软件包。最有可能的是,nvhpc-22-2它并不完整,并且nvhpc-22-3包含一些完整所需的内容nvhpc-22-2

无论如何,每个版本都有不同的名称,因此有关版本号的问题无关紧要(您不能使用 apt 固定到特定版本的典型方法)。如果您认为没有必要或者想了解为什么有必要,您可以联系供应商。

您可以通过运行以下命令来验证这一点:

apt-cache show nvhpc-22-2 | grep -i depends
Run Code Online (Sandbox Code Playgroud)

这应该表明这nvhpc-22-3是一种依赖性。除了依赖关系问题之外,Apt 并不智能,并且不会尝试安装非依赖关系的软件包,特别是当您使用该--no-install-recommends标志时。

最后,如果您认为这是一个错误,您还可以向软件供应商提交错误报告。