I’m setting up for my course in a couple weeks, and re-testing the Noetic ROSJet that I share with my students as a template. (I know Noetic isn’t the most recent, but our robots run Noetic, and we don’t have reason to update these at present). I’ve created a new Noetic RosJet, but also needed to install some other ROS packages. This triggers an upgrade of ROS Gazebo, which brings me to the issue.
Updating the ros-noetic-gazebo-ros package results in an error
Unpacking ros-noetic-gazebo-ros (2.9.2-1focal.20221209.220257) over (2.9.2-1focal.20210727.073131) ...
dpkg: error processing archive /var/cache/apt/archives/ros-noetic-gazebo-ros_2.9.2-1focal.20221209.220257_amd64.deb (--unpack):
unable to make backup link of './opt/ros/noetic/lib/gazebo_ros/gzserver' before installing new version: Invalid cross-device link
From investigations, it appears to be a result of the /opt/ros/noetic/lib/gazebo_ros/gzserver file being mounted from an external location:
You are right. The error comes from this gzserver file that was indeed mounted from an external location.
This is a custom file that adds the “--verbose” option to gazebo by default.
I see that if we do not mount that file from an external location, you would be able to upgrade ROS Noetic, but the problem is that you would have to do that each time you open the rosject again.
So my question is:
Could you tell us the specific package you want to upgrade? Because maybe we could upgrade from our side so that you wouldn’t have to upgrade every time you open the rosject (since installation changes made in the rosjects are not persisted).
I would personally prefer a general noetic upgrade, for consistency with our on-robot versions of the ros packages. I also know from past experience that some students like trying our other packages (such as cartographer), so trying to install any other package might result in the same issue.
The packages that I setup by default for the students are below. I know some are already installed, but this is the full list: