Ubuntu 18.04升级至20.04历程

Posted by wyj on April 27, 2020 / Edited on October 24, 2020

前言

我已经使用了两年的Ubuntu 18.04 LTS,也升级到了18.04.4,也装了HWE(HardWare Enablement stacks),然而这并不能避免其他软件显得十分陈旧:

  • python还停留在3.6,不符合Accesser运行的最低要求。
  • nodejs,以及GNOME Shell的gjs都版本较低,连BigInt(高精度)都不支持。
  • 来自winehq.org的源与18.04官方软件源存在版本冲突,导致Wine不能升级。
  • 主题审美停留在20世纪,与WinXP有的一拼,还需要手动安装communitheme
  • 不支持应用文件夹,需要手动在dconf-editor里面进行一些晦涩的操作来建立文件夹,而且只能使用英文的文件夹名。
  • $\dots$

所以更新至20.04就成了很迫切的需求。之前我在虚拟机里试用过几个月的20.04,完美解决了上面提到的所有问题。然而20.04也带来了他自己的问题:

  • 没有搜狗输入法支持
  • 桌面图标支持是残废

为了解决桌面图标问题,我之前专门写过一篇博文。这个解决方案可以说是近乎完美,我唯二的缺憾是没有“按照名称排序”和“解压到此处”这两个功能。但还是比自带的桌面图标功能强大一百万倍。

搜狗输入法这个是最难啃的问题。这是妨碍我升级的唯一阻碍。之前我也作出了许多尝试:

  • 系统自带的输入法在20.04已经比18.04的好很多了,然而还是离现代意义的输入法有很大距离。比如说,我希望输入“wsm”的时候得到“为什么”,而不是“王司马”。这可能是一个文言文输入法。
  • 尝试安装Google拼音。真的很棒,和搜狗拼音几乎一样智能,除了可有可无的云提示;然而,字库貌似不太全,不能打出来我自己的名字……
  • 尝试从低版本的源中安装搜狗拼音。在虚拟机里我完全成功了,安装很完美。可惜啊,在宿主机里出现了很大的依赖问题:如果要安装搜狗拼音,必须要移除VirtualBox、TeXStudio、Stellarium、KolourPaint等等很多软件。所以放弃了这个方案。

众所周知snap会自动更新。上周communitheme就自动变成了20.04的主题,我没有再改回来,就当成是提前适应一下吧。

升级过程

自从20.04发布的那一天开始,我就一直在运行update-manager,等它提示“… But Ubuntu 20.04 is available”。然而一直只有19.10的提示。于是我只好手动运行do_release_upgrade -d,却告诉我“只能从受支持的最新版本在最新的支持版本上可用”这句狗屁不通的话。Google了一圈,发现要把新版本的提示设置成“适用长期支持版本”。貌似我应该执行的是do_release_upgrade不带-d参数。

然后就告诉我“请先安装所有的更新”。这简直是在开玩笑,我已经有了依赖矛盾,不可能完成全部更新。然而转念一想,既然升级过程中会自动禁用第三方源,我索性现在就禁用了,不就没有依赖冲突的问题了吗?果然,禁用winehq.org的源之后就可以更新了。

然后就是我已经经历过不知道多少次的系统升级过程了。所有配置文件我都选择了“保持原有版本”,因为之前我改过vimrc,也优化过Chrome字体。然而我还是不太放心,选择了“使用diff比较差异”。万万没想到,直接一个diff: broken pipe甩我脸上。然后所有相关的配置就全部崩溃了。

随便执行一个命令都是broken pipe,也不能正常打开别的终端。这个状况接近于这篇作死博文里面的状况。我心态很崩,不知道该做什么,就只好让它自动进行下去。最后,不出意料地显示“升级失败”。但是好在它又自动运行了dpkg --configure -a,这次我再也不敢选择diff了,直接保留原有版本。这次成功了。

然后重启。这时的系统长这样:

升级之后

上面的图片暴露出来了两个问题:主题变成了Adwaita;还有一个下载失败框。解决方案:sudo snap remove communitheme然后换成Yaru主题;点击那个“现在执行此动作”,在闪退之前马上截屏,就可以看到执行的命令。使用tsocks翻墙执行这个命令即可。

首先清除低版本的gccclang。我之前手动装过clang-8,也一并卸载了。不要忘记使用update-alternatives重新设置ccc++editor三个链接。同时清除18.04.4的HWE,以后肯定还会再装20.04的HWE,但那是以后的事了。

然后是卸载已经无用了的Appfolders Management扩展。使用extensions.gnome.org来卸载就行了。

应该是由于python3-pip被卸载了,所有的python模块都要重装一遍。由于之前已经给pip3换过源了,这还是挺快的。

接下来要恢复被禁用了的第三方源。恢复之后就可以完成Wine的升级了。奇怪的是anbox的PPA源最高只支持19.04,作为一个现在还在活跃维护着的软件,不能理解这一点。只好仍然使用原来的版本。

去除20.04的Dock下方碍事的挂载盘图标。我日常把Win10的C盘和D盘永久挂载着(因为虚拟机和以撒视频都存储在上面),这个图标只会妨碍视线。按照这里说的,执行

gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts false

完全复制我的这篇博文里面做的所有事,增强桌面图标功能。

gtksourceview-3.0升级成了gtksourceview-4不能直接复制旧的gedit主题。如果贸然复制了,Markdown的高亮全部会失效。所以我用新的Classic主题重新魔改了一份。

之前装的pypy3是使用旧的snap加速方法实现的,所以不能正常升级。需要额外执行

sudo snap refresh pypy3 --amend 

由于Jekyll的升级,我的博客中有几处写法被弃用了。稍微修改了一下符合新标准。

由于不想破坏依赖关系,没有安装搜狗输入法,就安装了Google拼音作为替代。后来发现这个Google拼音还是不够智能,比如说词库太小;我手动输入的词语很难排进候选词的前列;也打不出我自己的名字,又翻了一翻,找到了fcitx-libpinyin,解决了刚才说的问题,就把Google拼音卸掉了。

百度网盘客户端貌似不能正常打开,不知道原因,也不知道是不是20.04才有的问题。后来发现把~/baidunetdisk*删掉就好了。

最后按照惯例放摆拍图一张,可以和升级到18.10时的摆拍图对比一下。

更新:搜狗输入法回来了!

【注:现在搜狗输入法的正常版本已经来了,可以忽略下面的内容,直接跳到下一节

今天v2ex上面又出现了一个和Ubuntu 20.04有关的主题,其中有人提到了两篇文章:第一篇第二篇。我就重燃起希望。

首先尝试了第一篇文章里面提到的方法。怎么说是从Ubuntu kylin里面打包的啊?还TM“内置的搜狗输入法”?我之前还为了这个特地安装了Ubuntu kylin 20.04,在里面安装了mlocate,搜遍了整个系统也没有找到sogou这个关键词。我还不放心,换用find再次搜索了一遍,还是什么都没有!然后又去优麒麟的官方源上找了一圈,只有一个无法安装的deb。然后试着从自带的软件商店里面装,也安装失败。所以当时就放弃了。所以我现在也不是很相信。

第一篇文章反复提到一个UOS软件源的链接,里面倒是的确有两个deb。我在虚拟机里面试验了一下,两个都失败了。果然不可信。

只好尝试第二篇文章里的方法了。我点进去一看,是一个我之前一直关注着的帖子,震惊地发现在我放弃这个帖子之后的那一天就有了新的干货回复!照着尝试了一下,看见要注册什么gitee账号才能下载,我就不愿意了。然而找到了github的下载地址,于是我直接从github上面下载了。下载之后首先在虚拟机上尝试安装,成功了。

接下来就放心地安装在宿主机了。安装成功之后就把fcitx-libpinyin删除了(没卸载,以防万一)。这个打包的deb貌似改动很大:

  • 中文的括号自动补全!这是手机版很久之前就有的功能,非常方便,然而貌似在c4droid里面会出bug,我就在手机上关掉了这个功能。虽然英文的括号没有自动补全,然而这个和gedit的括号补全插件恰好功能互补,就不需要了。
  • 没有魔改fcitx-qimpanelsogou-qimpanel!这意味着可以兼容别的fcitx输入法,而不是被搜狗的流氓软件绑架。同时带来了一个好处:GNOME扩展Topicons Plus不会在右上角显示两个重复的输入法图标了。
  • 唯一的缺点是字体比较模糊,看着不太爽。至于什么登陆账户之类的功能,我没有需求。我只需要自定义的词库就够了。

一个小小的语法糖:安装缺失依赖的A.deb不需要先sudo dpkg -i A.debsudo apt install -f,可以直接运行

sudo apt install ./A.deb

这也是我今天才发现的。

更新:正确安装搜狗输入法

和snz一样,我的搜狗输入法也经常崩溃;于是killall fcitx;fcitx start &成为了我最经常使用的命令。并且前面说了字体也有点模糊。但是今天我心血来潮去官网上看了下,居然有新版本了。于是我就把sogouimebs卸了,换成了新版本,不知道现在还会不会崩溃。