原本系统是连接了客户VPN后再端开后,整个ubuntu会断网,每次都要重启很麻烦;萌生升级的想法。
1、系统更新sop
1)确认本地ubuntu系统信息
使用命令lsb_release -a,这里是我升级后的。查询后可以升级为22.04,于是开始动手。
ubuntu@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
2)本地软件更新
本地更新需要确认本地的所有软件都是最新的版本:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade -y
在更新的时候出现报错:
部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。
有个软件的PPA一直在报错,是之前安装的Bcompare软件,之前因为一些骚操作,导致public key有问题,显示没有Release文件供数据更新。
cd /etc/apt/sources.list.d/
直接删掉了相关的***.list以及***.list.save
再去更新就圆满完成!
接下来,使用命令删除所有不需要的包:
sudo apt-get autoremove
接下来,使用命令清理APT包缓存:
sudo apt-get clean
之后reboot命令重启系统更新所有应用
3)执行升级检测命令
查看可升级的版本:
sudo do-release-upgrade -c
sudo do-release-upgrade -d
执行后出现报错:
正在检查新版 Ubuntu 没有可用的 LTS 开发版本 升级到最新的 非 LTS 开发版本需要设置
这个是因为本地设置问更新LTS版本,设置Prompt的值为normal即可:
sudo gedit /etc/update-manager/release-upgrades
将文件中的值设置为normal即可;这里有个疑问为啥在23年11月检索不能升级为22.04的LTS版本呢?
接下来就是升级的过程,时不时需要操作下“确认”,时间还好。
4)重启内核配置
重启第一次加载,卡在了kernel阶段,报错:
Ubuntu - end Kernel panic - not syncing : VFS: Unable to mount root fs on unknown-block(0,0)
感觉是内核的问题,于是重启ubuntu,因为我的电脑是UEFI启动,于是同时按下shift和F8进入grub引导界面,选择ubuntu高级,选择启动的内核为非recovery的新内核即可;系统可正常开机。
信息check升级成功!
2、更新后适配
1)关于python
开机后拉取项目代码,出现报错:
/usr/bin/env: ‘python’: No such file or directory
我本地不可能没有安装python,于是想确认python的位置:
which python //但是居然报错了,看提示于是接着输入
which python3 //我用的python一直都是python3但是之前可能可以连接到python的路径,新版本不行
那问题应该是很清晰了,版本更新后对于解释器有一定的要求,每一次用python都改一下:
将运行的程序开头的声明 #! /usr/bin/env python 改为 #! /usr/bin/env python3 ;
这个方法不现实,项目脚本很多,于是想到了另一个方法软连接:
sudo ln -s /usr/bin/python3 /usr/bin/python
果然再去执行repo init就没有报这个问题,但是出现了新的报错
ModuleNotFoundError: No module named ‘formatter‘
这问题看上去是python接口出现了一些偏差,百度发现Google已经官方解决了这个问题:
help: switch from formatter module to textwrap (303282) · Gerrit Code Review (googlesource.com)
参考提交本地修改下subcmds/help.py ,就可以解决问题!
发现更新后很多东西会有问题,因此陆陆续续会加更一些:
a、libtinfo.so.5找不到
编译报错:
/vendor/qcom/non-hlos/qcom_tools/LLVM/12.1.3.0/bin/clang: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
说是loading不到libtinfo.so瞅着就是环境的问题,find -name 找一下库的路径,然后连接过去就行:
sudo ln -s /lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/libtinfo.so.5
这里我百度的时候看是搜索的ibncurses.so.6,连接过去的,但是我本地搜索libtinfo也是能找到6的版本,感觉连接过去应该也可以的。