一个Ansible兼容性问题的处理及其引发的Cinnamon不显示任务栏问题

起因

最近忙,水一篇吧。

今天跑一个用过很多次的playbook装一台机,结果碰到奇怪的错误:

ModuleNotFoundError: No module named 'ansible.module_utils.six.moves'

问了AI也没有什么头绪,只会告诉我是six库的问题,但是我试了本地端和远端的系统,six库都没问题。

当然也有说到是ansible或python版本问题,但也没说具体是什么问题。

解决

尝试了AI提供的什么指定python解释器之类的方法都没用,最后是放狗搜到一条issue说是因为跟python3.12不兼容造成的。

刚好我这个远程端就是ubuntu 24.04,带的python就是3.12。

issue里的人提供的方案是降级到python3.11,我试了在服务端另外装一个python3.11,然后指定用这个python跑ansible,但还是会有很多其它的问题,比如依赖缺失等。

最后只能升级本机的ansible,但是本机的ansible升级到最新还是太旧,仍然不支持Python3.12,只能再升级本机的python,从3.8升级到3.9,终于可以把ansible升级到更新的版本。

现在这个ansible的core版本是2.15的,仍然跟python 3.12不完全兼容,get-url等命令会出错,但至少不会再因为six库错误这种完全没法用。

新的问题

由于本机的系统是LinuxMint20,自带的Python3.8太老了,我就随手把默认Python切换到3.9,刚开始还没发现什么问题,结果重启之后发现桌面的任务栏不见了,很多热键也不能用了。

再次放AI放狗找原因,试了各种重置Cinnamon环境配置的方法都不管用,折腾一晚上才想起来会不会跟Python有关系。

把默认Python切回3.8再重启,就全都好了……

算了,老电脑一堆故障,也懒得再升级系统啥的,反正现在用公司新电脑,装的是Mint22,没这些问题。

推送到[go4pro.org]