dr.*_*xon 4 debian headless upgrade
也许是一个愚蠢的问题,但是今天远程服务器停机了很长时间。当它恢复时,我意识到停机时间显然是由于系统升级,从 Debian Buster(稳定版)到 Bullseye(测试版)。
我有点困惑,因为我是这台服务器上唯一的超级用户,而且我已经有一段时间没有安排任何类型的更新了。我没有在生产机器上运行测试,也没有刻意将系统设置为自动升级操作系统版本。我确实会定期使用 apt 来更新和升级单个软件包,但我当然没有要求进行完整的版本升级。
我可能进行了任何明显的配置设置来触发这个 - 例如,无意中更改了我的 apt 源等?我不想再有任何意外的更新。(这是一个无头的 Minecraft 服务器,就其价值而言,当人们想玩时,停机时间很糟糕。)
有两件事可能导致这种情况。您可以使用以下方法找出哪个:
cat /etc/apt/sources.list /etc/apt/sources.list.d/*
Run Code Online (Sandbox Code Playgroud)
(1) deb http://ftp.debian.org/debian/ buster main
(2) deb http://ftp.debian.org/debian/ stable main
Run Code Online (Sandbox Code Playgroud)
Line(1)
和(2)
今天是等价的,但它们不会总是这样。有一天,stable
会指向bullseye
。发生这种情况时,您的机器也会自动更改。如果您想要控制,请使用 codename buster
。检查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
Run Code Online (Sandbox Code Playgroud)
如果您有类似上面的内容,那么 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 版本,我知道它存在于牛眼中,所以我将创建一行来添加一个牛眼存储库”。他们会马虎,但并非不可能。
那么如何恢复呢?此时有三个选项:
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
Run Code Online (Sandbox Code Playgroud)
切换之间upgrade
,dist-upgrade
,--fix-broken install
和autoremove
直到apt
完成成功无处不在。
要降级(这很可能会失败,我不能强调足够的):
首先备份一切。然后,创建/etc/apt/preferences.d/buster
:
Package: *
Pin: release n=buster
Pin-Priority: 1001
Run Code Online (Sandbox Code Playgroud)
然后像我们在步骤 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
Run Code Online (Sandbox Code Playgroud)
切换之间upgrade
,dist-upgrade
,--fix-broken install
和autoremove
直到apt
完成成功无处不在。
开心的时候删 /etc/apt/preferences.d/buster
归档时间: |
|
查看次数: |
1599 次 |
最近记录: |