![将我的 Debian 服务器升级到 Wheezy 只是为了安装 Mono](https://linux22.com/image/584877/%E5%B0%86%E6%88%91%E7%9A%84%20Debian%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8D%87%E7%BA%A7%E5%88%B0%20Wheezy%20%E5%8F%AA%E6%98%AF%E4%B8%BA%E4%BA%86%E5%AE%89%E8%A3%85%20Mono.png)
我希望能够使用mod-mono-server4
该方法在 Mono 上运行 .NET 4.0 应用程序。
我目前正在运行一个带有 squeeze 的 debian 服务器,其 mono 版本如下:
$ mono --version
Mono JIT compiler version 2.6.7 (Debian 2.6.7-5)
不包括mod-mono-server4
。
根据http://mono-project.com/DistroPackages/Debian这是我能拥有的最新版本的 mono,因此看起来我需要使用 Wheezy 上的“测试”版本来获取版本 2.10.8.1。所以我的问题是,如何升级到测试版本,这是否不建议?我的服务器目前运行着几个网站,无论如何都不是测试服务器。
我假设我需要添加一些新的或修改当前的存储库,/etc/apt/sources.list
但这会影响我的服务器上安装的其他东西吗?
答案1
您可以在 /etc/apt/preferences 中像这样设置固定:
Package: *
Pin: release a=stable
Pin-Priority: 700
Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 300
Package: *
Pin: release o=Debian
Pin-Priority: -1
之后,您可以将测试 repo 添加到 /etc/apt/sources.list 和 aptitude 更新。
包固定允许您安装选定的包及其依赖项,从而使系统的其余部分保持稳定。
用于aptitude -t testing install mono
设置包的测试版本。
混合不同的存储库时应该小心,因为您可能会得到破坏的软件包组合或最终导致系统混乱。
答案2
简而言之,不要。
更长的版本:如果您将 Debian 版本设置为安装包,dpkg 也会尝试从新版本安装该包的所有依赖项。然后,它还会尝试安装其他依赖项,其中一半会与您现有包所需的依赖项发生冲突。
例如,如果您正在安装的软件包没有库依赖项并且几乎是原子的(例如一个小型的 Web 应用程序),那么您可能可以摆脱这种情况,但基本上,对于任何更复杂的东西,您最终都会陷入依赖地狱。
有一件事你能尝试 squeeze-backports。这是一个比 squeeze 附带的版本更小的流行软件包的存储库。由于它们是针对 squeeze 附带的库进行编译的,因此您不会遇到依赖性问题。
看:http://backports-master.debian.org/关于如何配置 apt 来使用它,但对于维护人员是否为任何给定的包构建反向移植版本,这有点像彩票。
答案3
另一件值得尝试的事情是 apt-get 所需包的源代码并根据库的 squeeze 版本进行编译。
您可能会遇到一堆编译错误,需要处理它们。
结果将是一个反向移植的包。
如果您熟悉如何创建 Debian 软件包,那么这并不难。
这手动的是一个良好的开端。
答案4
为 wheezy 添加 deb-src(仅限 deb-src!)行并使用“apt-get -b source”有时可以将软件包重新编译到较旧的发行版中。您可能必须以相同的方式安装依赖项。