将Debian Sid添加为软件包仓库?

我正在运行12.04 Precise beta(从11.10 Oneiric升级而来),并在我的/etc/apt/source.list文件中添加了以下行:

deb http://http.us.debian.org/debian unstable main contrib non-free

为了获得一个我所需要的但在精确仓库中无法找到的软件包(Octave 3.6)的更新版本,我使用了另一个源。
这个方法很有效,但现在当我想要升级时,有大量的软件包需要更新。我猜这是因为sid有许多软件包的新版本,而精确仓库没有。
我暂时禁用了sid仓库,现在一切正常运行 - 但我很好奇如果允许所有这些升级会发生什么?会破坏我的系统吗?Ubuntu Precise和Debian Sid仓库的结构是否有根本的不同?

我认为我们可能忽略了一个问题,那就是如何添加签名密钥,以便Ubuntu可以信任来自Debian Sid的软件包。所有其他答案似乎都在说“不要这样做”。 - jmort253
6个回答

你正在混合两个不同发行版的软件包。出于各种原因,这是一个坏主意:
- 安全性。 - 稳定性。 - 冲突的更新,你现在就遇到了这个问题。 - 如果你让上述更新通过,你会遇到前两个问题,然后如果有内核更新,你将陷入严重麻烦!
此外,这使得获取准确的错误报告或堆栈跟踪几乎不可能,如果不是完全不可能。
简而言之,如果你需要Debian sid,请运行sid。否则,请运行Ubuntu,并通过PPAbackports添加你想要的较新软件。
更多解释请参考:

2可以使用Debian软件源来获取更新的软件,这是完全没问题的。有时候没有其他选择,因为PPA或者后备库中并没有你所需要的版本。有时候你需要它来获取最新的硬件驱动程序。只是不要将Debian软件源作为标准软件源使用,只在特殊情况下使用即可。 - excalibur1491

如果您需要的软件包在您的Ubuntu版本中当前不可用,那么这可能是必要的。
我的建议是使用apt-pin
我创建了/etc/apt/preferences.d/unstable文件,并添加了以下内容。
Package: *
Pin: release v=12.04, l=Ubuntu
Pin-Priority: 1000

Package: *
Pin: release a=unstable
Pin-Priority: 600

这确保了基本分发始终优先。如果一个软件包不可用,将选择不稳定版本。

1一个非常被低估的答案。apt-pin 是处理从不稳定分支安装软件而不破坏当前系统的方法。感谢 @koppor 分享这个方法,8年过去了,它仍然是正确的方式。 - Lockszmith

如果你这样做,起初可能看起来是有效的。但实际上,这意味着你在Ubuntu定制/更改软件包之前就获取到了它们。
从两者中各取一部分会大大减少双方解决问题的能力。Debian用户无法提供太多帮助,因为你的发行版很大程度上是基于Ubuntu的。同样,Ubuntu用户也无法提供太多帮助,因为你的发行版中有一些Debian的元素。
如果你想将软件包添加到ppa/repo中,这是一个很好的方法。但从整个发行版的角度来看,我认为这可能不是一个好主意。

如果你想安装第三方的deb软件包,我建议你一个一个地下载它们,然后使用gdebi一个一个地安装(当然,你首先要安装gdebi)。
Gdebi是一个很好的手动安装deb软件包的工具。Gdebi会告诉你所需应用程序的依赖关系链,并且你可以安全地安装它们。如果最终你没有满足所有的依赖关系,最好和更安全的方式是从源代码进行安装。

或者你可以直接使用dpkg... - strugee


在哪里可以找到libwebsockets PPA呢?http://packages.debian.org/sid/armhf/libwebsockets-dev/download提供了要添加的存储库。 - Necktwi

机会是事情可能会出错。不推荐。
使用Debian进行开发——长篇阅读——我们只能说它们一起工作。 Ubuntu如何运作

没错,这样也行。不过出于某种原因,在Ubuntu上我需要的驱动程序在Debian中可用。 - Yehuda