我之前使用的是 Debian stable - 我怎么最终选择了 Bullseye?

我之前使用的是 Debian stable - 我怎么最终选择了 Bullseye?

也许是一个愚蠢的问题,但今天远程服务器长时间停机。当它恢复时,我意识到停机显然是由于系统升级所致,从 Debian Buster(稳定)到 Bullseye(测试)。

我有点困惑,因为我是这台服务器上唯一的超级用户,而且我有一段时间没有安排任何类型的更新。我没有在生产机器上进行测试,也没有故意将系统设置为自动升级操作系统版本。我确实定期使用 apt 来更新和升级单个软件包,但我当然没有要求进行完整的版本升级。

我可能做了任何明显的配置设置来触发此操作 - 例如,无意中更改我的 apt 源等?我不想再有任何意外的更新。 (就其价值而言,它是一个无头的《我的世界》服务器,当人们想玩时,停机是很糟糕的。)

答案1

有两件事可能会导致这种情况。您可以使用以下方法找到:

cat /etc/apt/sources.list /etc/apt/sources.list.d/*
  1. 使用套件代替代号:
(1) deb http://ftp.debian.org/debian/ buster main
(2) deb http://ftp.debian.org/debian/ stable main

Line(1)(2)今天是等价的,但它们不会永远是等价的。有一天,stable会指向bullseye。当这种情况发生时,你的机器也会自动改变。如果您想要控制,请使用 codename buster。检查套房testing。 2019 年 7 月 6buster日改为bullseye

  1. 多重分布:
(1) deb http://ftp.debian.org/debian/ buster main
(2) deb http://ftp.debian.org/debian/ bullseye main
(3) deb http://ftp.debian.org/debian/ testing main

如果您有类似上面的内容,那么 Debian 可能会看到每个软件包的多个版本。除非您已在 中APT::Default-Release设置/etc/apt/apt.conf或明确固定优先级,否则将选择包的最新版本/etc/apt/preferences.d/


下一个问题是为什么你sources.list有一个奇怪的条目?您可能添加了一行,因为您想要仅在 bullseye 中可用的最新版本的软件包。在这种情况下,您可能已添加该行,apt update然后apt install -t testing some-package.但问题是,除非您删除该行并执行另一行apt update,或添加一行APT::Default-Release,否则您将准备好升级到testing

另一种选择是第三方软件。对于 Debian 官方存档中不存在的软件,通常会为您提供*.deb安装程序。我见过*.deb档案包含一个自定义内容/etc/apt/sources.list.d/*.list,以便您获得更新。他们不难说“我需要这个依赖项的 X 版本,而且我知道它存在于 bullseye 中,所以我将创建一行来添加 bullseye 存储库”。他们可能会马虎,但并非不可能。


那么如何恢复呢?此时有三个选择:

1:完成升级 - 最简单/最快

2:降级 - 最难/最不可能成功

3:重新安装 - 最可靠/最少停机时间

完成升级,首先显然要修复你的/etc/apt/sources.list[.d/].然后:

# Make everything 'bullseye'
sudo sed -i                  \
  -e 's/buster/bullseye/g'   \
  -e 's/unstable/bullseye/g' \
  -e 's/stable/bullseye/g'   \
  -e 's/testing/bullseye/g'  \
  -e 's/sid/bullseye/g'      \
  /etc/apt/sources.list      \
  /etc/apt/sources.list.d/*

# Upgrade
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo apt --fix-broken install
sudo apt autoremove

upgrade在、和之间切换dist-upgrade,直到所有位置都成功完成。--fix-broken installautoremoveapt

降级(这很可能会失败,我怎么强调都不为过):

首先备份一切。然后,创建/etc/apt/preferences.d/buster

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

然后像我们在步骤 1 中所做的那样升级

sudo sed -i                \
  -e 's/bullseye/buster/g' \
  -e 's/unstable/buster/g' \
  -e 's/stable/buster/g'   \
  -e 's/testing/buster/g'  \
  -e 's/sid/buster/g'      \
  /etc/apt/sources.list    \
  /etc/apt/sources.list.d/*

# Upgrade
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo apt --fix-broken install
sudo apt autoremove

upgrade在、和之间切换dist-upgrade,直到所有位置都成功完成。--fix-broken installautoremoveapt

高兴的时候删掉/etc/apt/preferences.d/buster

答案2

除此之外,还为任何受到类似影响的人提供了答案。
我一直在摸不着头脑,不知道自己是如何最终成为靶心的,直到我发现:

deb https://dl.winehq.org/wine-builds/debian/ sid main
deb-src https://dl.winehq.org/wine-builds/debian/ sid main

不知何故,我要么心不在焉地将其添加到酒中/etc/apt/sources.list,要么酒以我同样心不在焉的方式赞同。具体来说,我没有使用标准的 wine 构建,而是使用最新的不稳定版本来测试项目的某些内容。

相关内容