Ubuntu 20.04升级至22.04历程

Posted by wyj on June 21, 2022

我已在前篇文章中介绍过了22.04的一些优点与缺陷,在那篇文章中已经提到/解决的问题就恕不赘述了。目前实际使用下来,发现升级的优点也差不多就是这些,但缺点暴露了更多,还是有点失望的。

先写一下新发现的22.04的优点:

  • 升级过程中重装了新版的TIM,也重装了Windows的字体,让TIM能发图片了,字体也没那么丑了;
  • 我的新耳机在20.04上音质就像是听广播一样(估计是驱动不行),在22.04上就能正常使用了(与Windows和手机表现一样);
  • 搜狗输入法实际上升级完了直接就能用,也不需要重装,更不需要换输入法。

后面就全是恶心之处了,升级请谨慎。

升级过程

这几天SSR很不稳定,于是我先去折腾了科学上网,没有靠谱的科学上网的话升级过程中很容易出问题(至少升级到20.04的流程里确实需要)。我学会了用clash,发现它确实比electron-ssr好用不少。

很奇怪,和升级到20.04流程不一样,(至少在目前)升级到22.04是需要do-release-upgrade-d参数的。其余就是正常的Ubuntu升级流程了,除了由于我家里的网比较慢,下载更新花了三个小时。

这次我学乖了,遇到更新配置文件一律跳过,最后居然只报了一个安装失败,而且sudo apt --fix-broken install就解决了,让人以为会很顺利,没想到磨难才真正开始。

进入图形界面

我当时带着这个安装失败直接重启了,结果进不去图形界面,连tty都进不去。我完全没有办法,暴力关电源重开,直接进recovery mode,结果还是进不了图形界面,但是tty能用了。在tty下我修复了安装失败,并且跑了apt upgrade(这也消耗了大量时间),然后我试图sudo service gdm3 restart进图形界面再次失败,被迫重启,总算进了图形界面。

扫尾工作

扩展

由于我现在是Dash to Panel用户,之前的删除回收站图标、删除挂载磁盘图标的过程都可以省略了。这些扩展在升级过程中是必须重装的,因为GNOME Shell的版本变了,扩展也必须改版本。

TopIcon的事我已经轻车熟路了,直接装TopIconsFix就行了。然而出现了我在fresh install中没有碰到的第一个问题:桌面图标没能显示!Ubuntu 22.04是自带桌面图标的功能的,而且我试图安装扩展网站上的Desktop Icons NG(DING)的时候它也说我已经装了,不让我再装;问题是我在各种管理扩展的地方看不到这个Ubuntu的私货扩展,搜了半天才搜到能用sudo apt install gnome-shell-extension-desktop-icons-ng手动安装Ubuntu 22.04本来应该自带的桌面图标扩展,于是我就这么做了,确实起效了。

然而这个Ubuntu自带的扩展功能相比之前用的Desktop Icons NG(DING)还是欠缺了一些的。虽然能排序图标了,但是不能在屏幕的另一测显示挂载了什么磁盘,还是有点不爽的。

QQ和微信

因为我把软件源删掉了,貌似他们的依赖包被apt autoremove了。这两个我都是重装的,而且微信出了依赖问题(然而又是sudo apt --fix-broken install就能解决的问题)。但是重装之后仍然保持原来的数据(比如记住账号、下载的文件),因此很方便。

过程中我当然加上了星火商店的软件源,于是发现腾讯会议也更新了,很高兴。这个学期被垃圾疼逊会议气死了,Linux版全损音质,在虚拟机里Windows又不能用麦克风,我的手机又不能连接我的耳机,这让我非常尴尬。希望这次更新能解决全损音质的问题。

Firefox

众所周知,Ubuntu 22.04最臭名昭著的一点就是自带的浏览器Firefox变成了snap。我升级系统的过程中不出所料安装失败了;启动之后试图安装,也是下载龟速,等个半小时才下一半,然后就马上断线,下载失败,snap真是气死人。最后发现是改用了clash之后需要把snap用的代理协议从socks5改成socks5h(和curl一样),然后就飞速下完并安装成功了。

截图

众所周知,GNOME的功能只会越改越少,并且越做越垃圾。GNOME 42的标志性的新截屏特性就是个恶心的范例:它的截屏会打断你在干的事不说,保存的位置也变了,还对新的保存位置毫无提示,让第一次用的人体验极差。这属实是个脑瘫设计,玩游戏的时候肯定要截一大堆图,总不可能每截一张图就被打断一次吧?这个新截图功能,相当于你用vim的时候输入冒号,它就不让你继续输入命令了,必须从s,w,q,p之类的命令中拿鼠标选择一个。设计者属实是脑子里进太平洋了。

但还好我们可以手动回到老版本的行为。只需要在“设置”-“键盘”里删除所谓“(sha)(bi)式截图”的三个快捷键,然后手动添加三个快捷键就行了:Print执行gnome-screenshot;Shift+Print执行gnome-screenshot -a;Alt+Print执行gnome-screenshot -w,这样截图就和Ubuntu 20.04上一模一样了。

锁屏

我本以为万事大吉了,就扣下笔记本去洗澡,洗完澡回来发现寄了:打开笔记本时就黑屏了。被迫强关,然后尝试了几次,发现这个该死的22.04在笔记本扣下再打开时就总会黑屏。这是个非常严重的问题,我以为系统越新对硬件支持也就越好,没想到会出现这样的从18.04到20.04都没见过的bug。我试过把锁屏从挂起改成关机,虽然问题是解决了,但拔掉电源一晚上之后就没电自动关机了,看来这不是个长久的解决办法。最后我从这个回答里明白了这是470版本的NVIDIA驱动的问题,换成510版本之后成功解决。

终端行高

这个问题是最难解决的,因为我并不想换成别的终端,也不想浪费自己屏幕的空间,更不想更改系统语言或者字体。vte的maintainer居然认为终端从系统默认字体而不是终端自己用的字体里提取终端用的行高是个正常而合理的行为,并且过了九个月还是开着issue不修复,这实在是不可理喻。我只能自己动手丰衣足食了。

编译最新版的vte,但是把这个垃圾commit中干的垃圾事revert掉;然后编译安装gnome-terminal即可。要把生成的_build/src/gnome-terminal-server复制到/usr/libexec_build/src/gnome-terminal复制成/usr/bin/gnome-terminal.real(当然,你不能在gnome-terminal里cp,建议使用Alt+F2),然后重新登录就正常了。

最后按照惯例,放个截图,显示升级的效果: