TOC

Ubuntu 从 18.10 升级到 19.04 过程中出现的三个问题

Ubuntu 19.04 与 4/19 发布,生命周期 9 个月。我提前两个月就定着日程在等,总是克制不住追新的冲动,哈哈。

好像主要就是:

  1. 内核升级到 5.0(4.x 升级到 5.0 其实没有什么大变化,主要是老人家高兴)
  2. GNOME 3.32,之前是 3.30
do-release-upgrade

由于审计过程中意外中断,导致出现了一些问题,这里做个记录。
声明:这些问题,是非正常升级流程出现的,不是说是 Ubuntu 的问题。

问题 1,升级中断

不知道是虚拟终端被我错误关闭,还是出现了异常,总之,就是中断了。
我怀着侥幸的心理,重启,结果:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0, 0)

幸好,重启后发现换一个内核还能工作,不过卡在登录界面。

我判断应该是部分包没有安装完成所致。

进入旧内核的修复模式(Recovery Mode),执行了以下两项:

  • dpkg Repair broken packages
  • grub Update grub bootloader

然后 resume,幸好,正常启动,谢天谢地,免去重装。每次重装,更新,安装,配这配那,至少要花大半天,还有之后半个月内的打磨照成的效率损失。
虽然自己写了一些记录,做了一些备份,但主要目的也只是说能保住环境恢复,时间总是要花的。

问题 2,左 Shift 切换输入法

修复包的时候,有一个交互窗口,让我选择切换输入法的快捷键,当时我没在意,随便按了一下,跳过,没想到选中了 左 Shift(当时不知道)。
结果进入系统之后,所有的 左 Shift 的快捷键都失效了。后来发现输入法一直在切换。
设置 > 区域和语言 > 输入源 > 设置,看到 左 Shift 果然被用作切换输入法了。
设置 > 设备 > 键盘 > 键盘快捷键,找不到这项设置,也就无从重置了。

最后在 StackOverflow 中找到 解决方案

$ gsettings list-keys org.gnome.desktop.input-sources
xkb-options
mru-sources
show-all-sources
current
per-window
sources
$ gsettings get org.gnome.desktop.input-sources xkb-options
['grp:lshift_toggle', 'grp_led:scroll']
$ gsettings reset org.gnome.desktop.input-sources xkb-options
$ gsettings get org.gnome.desktop.input-sources xkb-options
@as []

问题 3,部分 Python 程序无法运行

安装的一些 Python 程序,由于指定 python3python3.6 切换到 python3.7,全部用不了,类似这样:

$ fuck
Traceback (most recent call last):
  File "/home/markjour/.local/bin/fuck", line 7, in <module>
    from thefuck.entrypoints.not_configured import main
ModuleNotFoundError: No module named 'thefuck'
$ type fuck
fuck is /home/markjour/.local/bin/fuck
$ head -n1 /home/markjour/.local/bin/fuck
#!/usr/bin/python3
$ type python3
python3 is /usr/bin/python3
$ ll /usr/bin/python3
lrwxrwxrwx 1 root root 9 2019-03-26 18:25:14 /usr/bin/python3 -> python3.7

重装了事:

pip3 download pipenv cheat ipython twine thefuck
pip3 install --user pipenv cheat ipython twine thefuck

PS--user 会安装到 ~/.local/lib/python3.7/site-packages

PS:查看一下安装目录,与本文无关:

$ locate /site-packages /dist-packages | grep -E '/(site|dist)-packages$' | grep -Ev 'virtualenvs/|venv/|snap/'
/home/markjour/.local/lib/python2.7/site-packages
/home/markjour/.local/lib/python3.6/site-packages
/home/markjour/.local/lib/python3.7/site-packages
/usr/lib/python2.7/dist-packages
/usr/lib/python3/dist-packages              # mitmproxy
/usr/lib/python3.5/dist-packages            # mitmproxy
/usr/local/lib/python2.7/dist-packages
/usr/local/lib/python2.7/site-packages      # 空
/usr/local/lib/python3.6/dist-packages
/usr/local/lib/python3.7/dist-packages

其他问题

We cannot detect a running copy of GNOME on this system, so some parts of the interface may be disabled.

https://extensions.gnome.org/local/

暂时原因不明,我也懒得处理,过段时间再看。

经验教训

由于追新升级,这样的情况从业以来已经发生好几次了,对于运行正常没有问题的环境,升级时还是要保持谨慎态度,哪怕不是生产环境。

  1. 以后 Ubuntu 发布新的 LTS 之后,隔半年,再升级(偶数年的四月份)
  2. 做好必要的备份,编写并完善部署脚本

操作系统真的不需要频繁更新,能用就好。