来自 sources.list.d 中 2 个不同 PPA 的相同包;如何强制从一个特定的 PPA 安装?

来自 sources.list.d 中 2 个不同 PPA 的相同包;如何强制从一个特定的 PPA 安装?

问题:

假设我有一个软件的 PPA(例如 Blender);http://ppa.launchpad.net/thomas-schiex/blender/ubuntu) 由于某些原因,包含 Python3.6 版本。

我想要实现的目标:

假设我想要一个“更好的” Python3.6 包,例如来自 python 专用 ppa,就我而言;http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu

问题:

如何apt选择要安装哪个软件包?有没有办法告诉我apt从所需的 ppa 中安装哪个软件包?
我猜它会选择最新的软件包(我错了吗?),但如果出于某些原因我想保留特定的旧版本怎么办?

使用 python3.6 的示例在这里“仅”是一个例子,这可能对任何包。

关于重复的注释:
即使评论中推荐的链接中的答案相同,切入点,即“问题”并不完全相同,许多人可能会通过此搜索结果而不是其他搜索结果找到答案。因此,在我看来,严格来说,答案有点重复,而不是问题。

答案1

正如您猜测的那样apt,将安装您的源中可用的最新版本。

例如:

$ apt-cache madison firefox

   firefox | 61.0.1+build1-0ubuntu0.18.04.1 | http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
   firefox | 61.0.1+build1-0ubuntu0.18.04.1 | http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
   firefox | 59.0.2+build1-0ubuntu1 | http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages

如您所见,有两个不同版本的 Firefox 可供安装,让我们检查一下要安装哪一个:

$ apt-cache policy firefox | head -3
firefox:
  Installed: (none)
  Candidate: 61.0.1+build1-0ubuntu0.18.04.1

如您所见,将要安装最新版本(它是安装的候选版本)

您可以使用:

sudo apt install package-name=version

例如:

sudo apt install firefox=59.0.2+build1-0ubuntu1

安装软件的旧版本。

作为替代方案渴望,你可以apt-mark阻止它升级:

sudo apt-mark hold firefox

相关内容