有没有办法防止sources.list有混合版本条目?

有没有办法防止sources.list有混合版本条目?

我使用了两者testingbuster我猜sid在我的/etc/apt/sources.list文件中出于过去的原因,我把我的 Debian 变成了弗兰肯德比安。据我在网上搜索,没有办法恢复它,所以我从头开始重新安装了Debian。

有没有一种行之有效的方法可以防止我将来再犯这样的错误(!)?例如,sources.list在更新或安装之前首先检查以确保不存在混合版本条目的触发器?

答案1

sources.list只能手动修改。

曾几何时buster是该套件的代号testing。如果您是buster在这段时间安装的,您可能会将testing/buster视为等效项并任意使用其中之一。然而,当buster成为stable、 和testing成为时bullseye,你就会看到它们的分歧。

我见过人们犯过同样的错误,混淆了stable套件和stretch代号。只要stretch是,此功能就有效stable,但一旦转换发生,任何带有 的源都会stable自动升级到buster,而任何带有 的源stretch仍保持相同版本。

以下是有关何时使用代号和套件的一些建议:

  • 始终使用代号(即buster)而不是stable。使用稳定分布的要点是apt upgrade没有风险。如果你使用stable,那么每隔大约 2 年你就会得到一个惊喜。
  • 如果您想要滚动分发,请使用testing.有一些每次你都会冒风险apt upgrade,但你不会受到发布周期的影响(一些更新可能会在冻结期间延迟)。
  • 如果您正在预览下一个版本(即 Debian 11 bullseye),请使用代号bullseye。您将处于滚动周期(如测试),直到该代号发布。那你就稳定了。在我的组织中,我们使用稳定版,但我总是有一些机器与下一个版本挂钩,这样我们升级时就不会感到意外。

如果你真的想保护自己(也许你的sudoers机器上有几个),有几个选择:

  1. apt.conf:/etc/apt.conf.d/00local添加:
APT::Default-Release "buster";

man apt.conf将此描述为:

如果有多个版本可用,则安装软件包的默认版本。包含发行名称、代号或发行版本。示例:“稳定”、“测试”、“不稳定”、“破坏者”、“靶心”、“4.0”、“5.0*”。

  1. 固定:我不会在这里详细介绍,但固定是强制特定包的特定版本的一种非常明确的方法。它真的会搞乱系统。man apt_preferences详情请参阅。

答案2

虽然没有设置可以阻止更新,具体取决于sources.list.您可以使用易于固定控制如何从多个源选择包的行为,包括强制不从特定源安装包。

Apt 固定允许您根据包的名称、源包名称、版本或要从中安装包的源存储库的属性来设置包的优先级。查看当前全局的优先运行情况apt-cache policy

例如,当放入以下内容时,/etc/apt/prefereneces/00default-release将导致来自buster、buster-updates 和buster-security 的软件包成为首选,来自buster-backports 和非Debian 源的软件包将具有其正常行为。最后,如果 Debian 源中的任何其他软件包已安装且无法从其他源获取,则这些软件包将是可卸载和删除的。

Package: *
Pin: release n=buster,o=Debian
Pin-Priority: 990
Package: *
Pin: release n=buster-updates,o=Debian
Pin-Priority: 990
Package: *
Pin: release o=Debian
Pin-Priority: -10

当 Bullseye 发布时,您将编辑源代码,然后编辑该文件以在升级之前buster更改为该文件。bullseye

我目前正在使用 bullseye 并配置了以下 apt pinning。它优先考虑来自 Debian 的 bullseye 软件包,其次是来自第三方来源的 bullseye 软件包,然后是来自 Debian 的除实验性软件包之外的任何其他软件包。最后,所有其他包的默认优先级为 500,随后是实验性的,默认优先级为 1。

Package: *
Pin: release n=bullseye,o=Debian
Pin-Priority: 990
Package: *
Pin: release n=bullseye
Pin-Priority: 900
Package: *
Pin: release a=experimental
Pin-Priority: 1
Package: *
Pin: release o=Debian
Pin-Priority: 600

最后,我不使用 APT::Default-Release 的原因是因为固定可以提供更多控制。APT::Default-Release "buster";只是以下 apt pinning 条目的快捷方式。

Package: *
Pin: release n=buster
Pin-Priority: 990

相关内容