Debian

我使用的是 Debian stable - 我是如何使用 Bullseye 的?

  • March 13, 2021

也許是一個愚蠢的問題,但今天遠端伺服器停機了很長時間。當它恢復時,我意識到停機時間顯然是由於系統升級,從 Debian Buster(穩定版)到 Bullseye(測試版)。

我有點困惑,因為我是這台伺服器上唯一的超級使用者,而且我已經有一段時間沒有安排任何更新了。我沒有在測試中執行生產機器,也沒有故意將系統設置為自動升級作業系統版本。我確實定期使用 apt 來更新和升級單個軟體包,但我當然沒有要求進行完整的版本升級。

我可能為觸發此問題而進行的任何明顯配置設置 - 例如,無意中更改了我的 apt 源等?我不想要更多意外的更新。(這是一個無頭的 Minecraft 伺服器,物有所值,當人們想玩時,停機時間很糟糕。)

有兩件事可能導致這種情況。您可以使用以下方法找出哪個:

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 月 6 日開始busterbullseye

  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有一個奇怪的條目?可能是您添加了一行,因為您想要僅在靶心中可用的最新版本的軟體包。在這種情況下,您可能已經添加了該行,apt updateapt install -t testing some-package. 但問題是,除非您刪除該行並執行另一行apt update,或添加一個APT::Default-Release,否則您已準備好升級到testing,

另一種選擇是第三方軟體。Debian 官方存檔中不存在的軟體通常會為您提供*.deb安裝程序。我已經看到*.deb檔案包含一個自定義/etc/apt/sources.list.d/*.list,以便您獲得更新。他們不難說“我需要這個依賴的版本 X,而且我知道它存在於靶心中,所以我將創建一行來添加靶心回購”。他們會馬虎,但並非不可能。


那麼如何恢復呢?此時有三個選項:

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 install``autoremove``apt

降級(這很可能會失敗,我怎麼強調都不為過):

首先備份所有內容。然後,創建/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 install``autoremove``apt

開心的時候刪/etc/apt/preferences.d/buster

引用自:https://unix.stackexchange.com/questions/561942