如何在 Ubunty 16.04 LTS 上安装 mono 4.0.5.1(不是最新版本)?

如何在 Ubunty 16.04 LTS 上安装 mono 4.0.5.1(不是最新版本)?

背景

我最近从 15.10 升级到了 16.04,但应用程序出现了问题。事实上,我很可能遇到了和这家伙

就我而言,我遇到了同样的 CumulusMX 问题:

Not working, 16.04: mono was Stable 4.4.2.11
Last working, 15.10: mono was Debian 3.2.8+dfsg-4ubuntu4

这似乎与我发现的以下信息一致这里

目前已知 Mono 4.2 无法与带有 USB 站的 Cumulus MX 配合使用,原因目前未知

简而言之,mono根据其他人的问题,我了解到支持我的气象站的最新版本是 4.0.5.1。这就是我想要安装的。

新安装 16.04

我已重新安装了 Ubuntu 并做了以下更改:

$ sudo touch /etc/apt/sources.list.d/mono-xamarin.list
$ sudo vi /etc/apt/sources.list.d/mono-xamarin.list

# Type in:
# deb http://download.mono-project.com/repo/debian wheezy/snapshots/4.0.5.1 main
# and save.

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A6A19B38D3D831EF
$ sudo apt update

我认为这将使我能够安装所需的mono版本,因为我得到以下结果:

$ apt-cache madison mono-devel
mono-devel | 4.2.1.102+dfsg2-7ubuntu4 | http://ca.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
mono-devel | 4.2.1.102+dfsg2-7ubuntu4 | http://ca.archive.ubuntu.com/ubuntu xenial/main i386 Packages
mono-devel | 4.0.5.1-0xamarin1 | http://download.mono-project.com/repo/debian wheezy/snapshots/4.0.5.1/main amd64 Packages
mono-devel | 4.0.5.1-0xamarin1 | http://download.mono-project.com/repo/debian wheezy/snapshots/4.0.5.1/main i386 Packages

但是,安装失败,并显示以下信息:

$ sudo apt install mono-devel=4.0.5.1-0xamarin1
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Certains paquets ne peuvent être installés. Ceci peut signifier
que vous avez demandé l'impossible, ou bien, si vous utilisez
la distribution unstable, que certains paquets n'ont pas encore
été créés ou ne sont pas sortis d'Incoming.
L'information suivante devrait vous aider à résoudre la situation : 

Les paquets suivants contiennent des dépendances non satisfaites :
 mono-devel : Dépend: libmono-cecil-private-cil (< 4.0.5.2) mais 4.2.1.102+dfsg2-7ubuntu4 devra être installé
              Dépend: mono-mcs (= 4.0.5.1-0xamarin1) mais 4.2.1.102+dfsg2-7ubuntu4 devra être installé
              Dépend: mono-gac (= 4.0.5.1-0xamarin1) mais 4.2.1.102+dfsg2-7ubuntu4 devra être installé
              Dépend: mono-xbuild (= 4.0.5.1-0xamarin1) mais 4.2.1.102+dfsg2-7ubuntu4 devra être installé
              Dépend: libmono-cil-dev (= 4.0.5.1-0xamarin1) mais 4.2.1.102+dfsg2-7ubuntu4 devra être installé
              Dépend: libmono-2.0-dev (< 4.0.5.1-0xamarin1.1~) mais 4.2.1.102+dfsg2-7ubuntu4 devra être installé
              Recommande: mono-csharp-shell mais ne sera pas installé
E: Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l'état ».

所以从这些结果来看,我明白我可能陷入了依赖的恐怖境地。这些结果也确实表明,我可能在尝试不可能的事情。

问题

我要做什么才能安装mono4.0.5.1?

答案1

最近遇到了类似的问题。这里的问题是,即使您指定了较低版本的 mono-devel,apt-get 仍会尝试安装其依赖项的最新版本,这当然是行不通的。

人们可以通过深入研究 apt 的内部结构并使用“apt_preferences”机制来规避这个问题。

对我来说,将包含以下内容的文件放入 /etc/apt/preferences.d 可以解决问题:

$ cat /etc/apt/preferences.d/mono
Package: /libmono.*/
Pin: release l=xamarin*
Pin-Priority: 990

Package: /^mono.*/
Pin: release l=xamarin*
Pin-Priority: 990

简单解释一下细节 - 对于名称中包含“libmono”或以“mono”开头的所有软件包,带有标签“xamarin[1,2,...]”的发行版是首选。这会导致忽略 ubuntu 中与 mono 相关的所有内容的较新(例如 4.2.1)软件包。

相关内容