在这记录下安装gazebo11的报错解决方案,本人遇到问题的过程:我在安装gazebo11后又卸载了全部相关的东西,然后用命令sudo apt upgrade
升级了下Ubuntu20.04里的一些东西,升级过程中弹出了选择 MySQL 的东西,貌似当时操作有误而损坏了 MySQL 的配置(这也是我后面一点点核查安装gazebo11的bug发现的),导致安装gazebo11报错。
先介绍下如何卸载干净gazebo的旧版本,然后按照官网的步骤安装目前最新版gazebo11
# 首先查看gazebo的版本,确定是旧版本
dpkg -l | grep gazebo
# 卸载gazebo旧版本及其相关插件
sudo apt remove gazebo9 gazebo9-common gazebo9-plugin-base libgazebo9:amd64 libgazebo9-dev:amd64 ros-melodic-gazebo-*
# 清理缓存及安装包
sudo apt autoremove
sudo apt autoclean
# 设置镜像
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
# 设置Key
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
# 安装gazebo,不含gazebo_ros_pkgs
sudo apt update
sudo apt install gazebo11
sudo apt install libgazebo11-dev
如果你可以顺利执行上面全部命令,那么是最好的。但我在执行sudo apt install gazebo11
时遇到了报错提示 “Dependency: libgazebo11 (= 11.11.0-1~focal) but it is not going to be installed …”,因此我尝试用sudo apt upgrade libgazebo11
来进行修复,然而又跳出类似的报错提示 “Dependency: libgdal (…) but it is not going to be installed …” ,我就一步步的用命名sudo apt upgrade xxx
来看会跳出什么报错声明,其中xxx
是其跳出来的内容(比如 “libgdal” )…直到最后跳出报错“libmysqlclient21 : Breaks: libmysqlclient21:i386 (!= 8.0.29-1ubuntu20.04) but 8.0.29-0ubuntu0.20.04.3 is to be installed libmysqlclient21:i386 : Breaks: libmysqlclient21 (!= 8.0.29-0ubuntu0.20.04.3) but 8.0.29-1ubuntu20.04 is to be installed”,此时突然发现跟 MySQL的client有关,于是打算卸载了MySQL的全部(毕竟我本地的MySQL也没存储什么数据,如果有重要的数据请先备份下)。
接着按👉重装MySQL(点我跳转)的方法操作后,再次按上述安装gazebo的方法安装gazebo11便成功了,虽然在探索的时候这个bug处理挺久的(因为除了上述的方法,我还尝试了降低Ubuntu内核、将libmysqlclient21的版本从8.0.29-0ubuntu0.20.04.3 卸载后转为8.0.28-0ubuntu0.20.04.4,因为考虑到我的是Ubuntu20.04.4),然后还反复看github的issue和外文参考解决方法,但是只要坚持查找bug所在之处一定会有发现,最后通过自己的判断成功解决了bug