gazebo: symbol lookup error - ignition math / libignition issue after upgrade from 9.0 to 9.13
Hello,
I installed Gazebo9 version 9.13 on Ubuntu 18.04 (alongside ROS Melodic) and now I get this error:
gazebo: symbol lookup error: /usr/lib/x86_64-linux-gnu/libgazebo_common.so.9: undefined symbol: _ZN8ignition10fuel_tools12ClientConfig12SetUserAgentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
The typical solution did not work for me. All these did not fix the error:
sudo apt upgrade libignition-math2
sudo apt upgrade libignition-math2*
sudo apt upgrade libignition-math4
sudo apt upgrade libignition-math4*
sudo apt upgrade libignition-fuel-tools*
sudo apt upgrade libignition*
This error came about when i tried to update Gazebo 9 from version 9.0 to 9.13. I did this by downloading all the deb files from http://gazebosim.org/download and running the following commands (in order):
sudo dpkg -i libgazebo9_9.13.0-1~bionic_amd64.deb
sudo dpkg -i gazebo9-common_9.13.0-1~bionic_all.deb
sudo dpkg -i gazebo9_9.13.0-1~bionic_amd64.deb
sudo dpkg -i gazebo9-plugin-base_9.13.0-1~bionic_amd64.deb
sudo dpkg -i gazebo9-doc_9.13.0-1~bionic_all.deb
sudo dpkg -i libgazebo9-dev_9.13.0-1~bionic_amd64.deb
sudo dpkg -i gazebo9-dbg_9.13.0-1~bionic_amd64.deb
Some people solved the issue with the line LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libignition-fuel_tools2.so.2 gazebo
(https://bugs.launchpad.net/ubuntu/+so...), so I downloaded the packages from http://gazebosim.org/distributions/ig... and ran the command:
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libignition-fuel_tools2.so.2 gazebo
and everything works. How do I now modify my system so that I dont need to preload the so file? What is the right way?
*******EDIT #1*********
One way is to rename the links to libignition-fuel_tools1.so.1.0.0
which are libignition-fuel_tools1.so
and libignition-fuel_tools1.so.1
to something else (I didn't delete them, I added zzz at the begining of the name); then make two copies of a link to libignition-fuel_tools1.so.2.0.0
and rename them as libignition-fuel_tools1.so
and libignition-fuel_tools1.so.1
. Now any calls to lib version 1.0 are actually calls to version 2.0.
This works, but is this the right way to handle this issue?
Thanks