如何让 apt pinning 安装不稳定发行版所需的最低要求

如何让 apt pinning 安装不稳定发行版所需的最低要求

我已多次尝试过这个 APT 固定过程但仍然无法让它做我想要的事情。

目前我正在运行 Ubuntu Karmic。我没有设置默认版本,因此 Karmic 的默认优先级为 500。我已将 Ubuntu Lucid 添加到我的源中,并在首选项文件中将其优先级设置为 400。

现在假设我想从 Lucid 安装最新的 Firefox-3.5,据我所知我有两个选择。

1:sudo apt-get 安装 firefox-3.5/lucid

这只会从 Karmic 中提取依赖项,并且通常会失败,因为某些支持包在 Karmic 中没有足够高的版本。

2:sudo apt-get 安装 firefox-3.5 -t lucid

这将从 Lucid 中提取所有必需的依赖项,甚至包括那些可以从 Karmic 中满足的依赖项。

我想要的是第三种选择,即在可以使用 Karmic 的地方使用 Karmic,而在必须使用 Lucid 的地方只使用 Lucid。

现在当然可以通过将选项 1 递归应用于每个未满足的依赖关系来手动完成,但这很快就会变得非常繁琐。

有没有什么方法可以操纵优先级和选项来实现我的目标?

答案1

答案是... 能力。

问题中所述的配置没有问题。但是当“apt-get install firefox-3.5/lucid”抱怨未满足依赖关系时,“aptitude install firefox-3.5/lucid”会抱怨,然后提出纠正问题,在我尝试过的每个例子中,修复都正是我所寻找的行为。

我当前系统上的 Hugin 就是一个很好的例子:

“apt-get install hugin -t lucid”想要安装 27 个软件包,全部来自 Lucid,其中大多数是库。

“apt-get install hugin/lucid” 抱怨 hugin 有未满足的依赖关系

“aptitude install hugin/lucid” 提供安装 Lucid 的 3 个软件包和 Karmic 的其他所有软件包

$ aptitude 安装 hugin/lucid
正在读取软件包列表...完成
构建依赖关系树       
正在读取状态信息...完成
初始化包状态...完成
以下包裹已破损:
  胡金
将会安装以下新软件包:
  autopano-sift{a} binfmt-support{a} cli-common{a} enblend{a} enfuse{a}
  freeglut3{一个} libboost-thread1.38.0{一个} libgdiplus{一个} libglade2.0-cil{一个}
  libglib2.0-cil{一个} libgtk2.0-cil{一个} libimage-exiftool-perl{一个}
  libmono-cairo2.0-cil{a} libmono-corlib2.0-cil{a}
  libmono-i18n-west2.0-cil{a} libmono-security2.0-cil{a}
  libmono-sharpzip2.84-cil{a} libmono-system2.0-cil{a} libpano13-1{a}
  libplot2c2{a} mono-2.0-gac{a} mono-gac{a} mono-runtime{a}
升级了 0 个软件包,新安装了 24 个,删除了 0 个,并且未升级 0 个。
需要获取 11.6MB 的档案。解压后将使用 37.1MB。
以下软件包具有未满足的依赖关系:
  hugin:依赖:hugin-tools (= 2009.2.0+dfsg-2ubuntu1) 但无法安装
以下操作将解决这些依赖关系:

安装以下软件包:
hugin-数据 [2009.2.0+dfsg-2ubuntu1 (lucid)]
hugin-tools [2009.2.0+dfsg-2ubuntu1 (lucid)]
libpano13-bin [2.9.14-2 (karmic、lucid)]

分数为 -17

接受这个解决方案吗?[Y/n/q/?]

答案2

Ubuntu 建议这样做源构建超过固定。例如,首先构建源依赖项:

sudo apt-get build-dep firefox-3.5

然后在你的 karmic 机器上构建清晰的版本:

sudo apt-get -b source -t lucid firefox-3.5

这不完全是你想要的,但也不是那么乏味。

相关内容