我使用的是 Debian stable - 我是如何使用 Bullseye 的?
也許是一個愚蠢的問題,但今天遠端伺服器停機了很長時間。當它恢復時,我意識到停機時間顯然是由於系統升級,從 Debian Buster(穩定版)到 Bullseye(測試版)。
我有點困惑,因為我是這台伺服器上唯一的超級使用者,而且我已經有一段時間沒有安排任何更新了。我沒有在測試中執行生產機器,也沒有故意將系統設置為自動升級作業系統版本。我確實定期使用 apt 來更新和升級單個軟體包,但我當然沒有要求進行完整的版本升級。
我可能為觸發此問題而進行的任何明顯配置設置 - 例如,無意中更改了我的 apt 源等?我不想要更多意外的更新。(這是一個無頭的 Minecraft 伺服器,物有所值,當人們想玩時,停機時間很糟糕。)
有兩件事可能導致這種情況。您可以使用以下方法找出哪個:
cat /etc/apt/sources.list /etc/apt/sources.list.d/*
- 使用套件而不是代號:
(1) deb http://ftp.debian.org/debian/ buster main (2) deb http://ftp.debian.org/debian/ stable main
Line
(1)
和(2)
今天是等價的,但它們並不總是如此。有一天,stable
會指向bullseye
。發生這種情況時,您的機器也會自動更改。如果您想控制,請使用 codenamebuster
。檢查testing
套房。從2019 年 7 月 6 日開始buster
。bullseye
- 多個分佈:
(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 update
則apt 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