9

升级Debian操作过程的总结

 3 years ago
source link: https://blog.csdn.net/yanxiangtianji/article/details/88076340
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

升级Debian操作过程的总结

关于升级Debian的主版本,官方有非常详细的文档:https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.html

其中关键操作为升级当前系统中的包至最新版,然后修改/etc/apt/sources.list为新版本的内容,并执行:

apt update
apt upgrade
apt dist-upgrade

当然还有其他一些事情,每次都看很麻烦,而且并不是文档中的每一步都必须,我总结其中核心思路如下。

  1. 清理不必要的软件包。
    目的:减少需要下载的内容从而缩短升级时间,降低出现依赖问题的可能性。
    方法:先手动清除不必要的软件,然后参考我之前关于清理Debian/Ubuntu系统上冗余包的文章,删除掉冗余包、废弃包。简单来说就是执行下面两个命令。如果情况比较复杂(aptitude认为依赖关系复杂,无法稳妥地完全自行完成,提示用户是否要接受它计算出的一个解决方案),可以接受建议方案并再次执行直到没有包能被删除。
sudo aptitude purge "~o"
# dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge
sudo aptitude purge "~c"
  1. 升级当前系统中的软件包。
sudo apt update
sudo apt upgrade
  1. 检查。
    强烈建议在升级前对已经安装的包进行检查,并解决所有hold的包(卸载或上网查询具体方案)。
# 检查安装的包的一致性(正常情况下无输出)
dpkg -C
# 查看无法升级(on hold)的包(正常情况下无输出)
apt-mark showhold

参考:https://linuxconfig.org/how-to-upgrade-debian-8-jessie-to-debian-9-stretch

  1. 更新sources.list。
    修改/etc/apt/sources.list文件(建议提前备份)之中关于当前版本的部分为新版本的部分。通常只需修改版本名称为新的,例如升级Debian 8到Debian 9需要将jessie改为stretch。
    也可以直接使用官网提供的版本进行覆盖:https://wiki.debian.org/SourcesList 。
# 修改sources.list
sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list
  1. 升级。
    先更新包数据库,然后更新外围软件包,最后更新关键包。
    需要有人值守:因为部分软件的配置文件会出现变化,需要手动确认使用哪个版本。
    切记:这个过程中不要中断,否则可能导致包关系异常或包管理系统损坏。
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
  1. 重启。
    通常新版本会更使用新的内核,重启是为了使用新的内核image,同时方便删除旧的版本。
  1. 清理作废的包。
    升级后,很多旧版本的包将不再需要。除了apt-get autoremove可以删除的,还有一些需要使用更底层的dpkg工具进行删除。
sudo apt-get autoremove
sudo aptitude purge "~o"
# dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge
sudo aptitude purge "~c"
  1. 清理下载缓存。
sudo apt-get clean

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK