如何在理解相关风险的前提下,将Debian experimental软件源添加到Ubuntu系统中?

这个问题之前已经被问过了,但是这个问题中的答案意图说明为什么那是一个不好的主意。 如何将Debian实验性仓库添加到Ubuntu? 实际上并没有提供真正的答案,因为实际问题是离题的。所以,对于敢于尝试的人来说,你如何将Debian实验性仓库添加到Ubuntu?
谢谢。
3个回答

对于这个长回答,我很抱歉,但之前的回答都有一些错误,所以我希望这次尝试能够为大家提供一点帮助。

除了 "实验性" 之外,Debian 还有几个被称为 "发布版" 的软件包流。每个这样的发布版都有它自己的名字。当前的稳定版本刚刚发布,名为 "buster"。在此之前,现在称为 "旧稳定版" 的是 "stretch",在此之前是 "jessie" 的 "旧旧稳定版"。2013 年 5 月发布的 "wheezy" 还将看到另一年的长期支持 (https://wiki.debian.org/LTS)。目前正在开发的版本始终被称为 "测试版",它也总是有一个将在发布时被称为 testing 的名称,现在就是 "bullseye"。还有一个发布版,开发人员上传新软件包到该版本中,这就是 "不稳定版",永久运行在 "sid" 名下。如果未分配任何关键错误,那么上传到 sid 的包将在出现后的头几天自动转移到测试版(上传者会说有多少天)。对于非关键机器来说,运行测试版或不稳定版是完全可以的。"不稳定" 指的是软件包变化很大,而不是 "崩溃的软件"。

实验性的特殊之处在于:
- 它只有一个名字“实验性”,没有分配给玩具故事角色 - 它有两种用途,一是作为永久存储库,用于存放不适合公众使用的软件包;二是作为发布最终确定和新上传暂停("冻结")期间的临时存储库。 - 当不稳定版本中出现更新版本的软件时,实验性中的软件包会自动删除。
Debian 开发者通常希望测试版或不稳定版的用户安装实验性中的软件包。稳定版的用户可能需要更新库。最近的 Ubuntu 版本应该可以直接安装 Debian 实验性中的软件包,你只需添加以下内容:
 deb http://httpredir.debian.org/debian/ experimental main contrib non-free

将其添加到/etc/apt/sources.list中,但这不是我推荐的做法。这取决于更新所带来的软件包数量以及对特定版本库的依赖关系。如果apt-get建议安装的软件包太多,那么如果您担心对其他二进制文件产生负面影响,请停止安装。

相反,我建议您自己编译软件。您可以添加

 deb-src http://httpredir.debian.org/debian/ experimental main contrib non-free

将以下内容添加到sources.list文件中(可以替代或作为二进制软件包源描述的先前提到的行),然后在执行apt-get update命令之后执行。
 apt-get build-dep wantedpackagename # installs build dependencies
 apt-get source --compile wantedpackagename # fetches source and builds

如果正确的版本被下载,你会在下载时看到。对于二进制文件,尚未尝试使用apt-get source从实验部分检索,您可能还需要在apt-get install中指定"-t experimental"作为附加标志来从Ubuntu获取。使用apt-cache show wantedpackagename,您可以查看系统可用的所有软件包版本。
从源代码构建时,绝对不会对您的系统造成任何风险,因为您将所有库保留在您的常规发行版已经提供的版本上。因此,不应该有任何副作用。如果构建失败,则可能是因为无法事先匹配构建依赖关系而导致的。通过匹配构建依赖关系,您可以决定向软件包维护者报告构建失败,并改进他的构建说明,可能继续共同处理该软件包。软件包维护者通常会对建设性的反馈非常高兴,所以不要害羞。

1很好的回答。我要补充一点,在添加了软件源之后,我只是用它来安装一些实验性的软件包,以解决依赖关系,这些软件包是使用实验性软件源提供的。例如,它让我在Ubuntu上获取到了Qt 5.9的软件包,这对于构建我的软件是必需的。然而,我绝不会梦想在系统更新中使用它。 - Anon

如果您已经了解与此相关的风险,那么您可以按照以下步骤操作:
1. 使用命令sudo touch /etc/apt/apt.conf.d/debian_repos.conf 2. 使用命令sudo nano /etc/apt/apt.conf.d/debian_repos.conf 3. 添加您的存储库(例如:deb http://deb.debian.org/debian/ oldstable main contrib non-free) 4. 按下CTRL + X 5. 输入Y 6. 使用命令apt-get update 7. 使用命令sudo apt-get install (包名)
我强烈建议您不要这样做,因为会影响稳定性、安全性和更新冲突。
要固定默认发行版的更新,请创建一个文件sudo touch /etc/apt/preferences.d/unstable,并将以下内容粘贴到其中:
Package: *
Pin: release v=12.04, l=Ubuntu
Pin-Priority: 1000

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

保存并关闭。
这应该只从Debian软件源安装更新,如果在Ubuntu软件源中找不到的话。
来源:

他想要实验性的,而不是杰西。 - ravery
@ravery - 是的,我知道。我给了一般性的指示,所以他可以添加任何他想要的仓库。请注意我写作中的“例如”。 - AnotherKiwiGuy
@ravery - 是的,我知道。你为什么这么着急呢? - AnotherKiwiGuy
  1. 你的回答没有添加仓库,而是替换了他的仓库。
  2. 你指错了仓库。
- ravery
@ravery - 这是一个完整的答案,向他展示了如何以任何方式添加自己的存储库。它解决了你的回答没有涉及到的部分更新问题。它并不替换他的存储库,而是创建一个新的配置文件。这个存储库只是一个通用的例子。请继续前进。 - AnotherKiwiGuy

打开 /etc/apt/sources.list 并添加以下行:
deb http://ftp.us.debian.org/debian/ Sid main contrib

注意:如果不在美国,请更换与您所在国家相适应的镜像以获得更快的下载速度。

注意:实验性软件包可能非常不稳定。将Debian调整与Ubuntu调整混合使用可能会使这一问题更加突出。


这将添加“sid”,也就是“不稳定版”,而不是“实验版”。 - smoe
@smoe 那么哪个是实验性的呢?在你提供的四个选择中(oldstable、stable、testing、unstable),我认为我已经正确地识别出来了。 - ravery
@ravery 请查看 https://wiki.debian.org/DebianExperimental - chaskes