rosdep -simulate --reinstall list is not same as real install
I want deploy my package to other PC, so I use
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO -s --reinstall
to get all dependency.
I will get a list
sudo -H apt-get install -y libeigen3-dev
sudo -H apt-get install -y freeglut3-dev
sudo -H apt-get install -y qtbase5-dev
sudo -H apt-get install -y libgflags-dev
sudo -H apt-get install -y libgeographic-dev
sudo -H apt-get install -y python-nose
sudo -H apt-get install -y libpcl-dev
sudo -H apt-get install -y libcurl4-openssl-dev
sudo -H apt-get install -y curl
sudo -H apt-get install -y libpugixml-dev
...
But after I install this list and copy my package install to target machine, I found it lost many dependency, so I copy the src and use
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
it shows it need to call following list
sudo -H apt-get install -y ros-melodic-urdf
sudo -H apt-get install -y ros-melodic-filters
sudo -H apt-get install -y ros-melodic-grid-map-msgs
sudo -H apt-get install -y ros-melodic-imu-tools
sudo -H apt-get install -y ros-melodic-perception-pcl
sudo -H apt-get install -y ros-melodic-tf
sudo -H apt-get install -y ros-melodic-jsk-recognition-msgs
sudo -H apt-get install -y ros-melodic-diagnostic-aggregator
...
Seem all ROS version dependent node or library is not installed by simulate
How do I get the all dependency by rosdep or any other tool can help??
Asked by sdyy on 2020-11-18 22:36:27 UTC
Answers
You've found a bit of a gap in the functionality. There are core rosdep rules and the ability to install ros packages as dependencies through rosdep which was extended later.
You can get the list of ROS packages that you need by asking for rospack depends <PACKAGE_NAME>
and that will give you the second list. With some munging to get to the debian names.
In general for this use case we generally just recommend invoking rosdep on the target machine as usual. Then you don't need to worry about parallel book-keeping the dependency lists. This is assuming you're installing from source.
For any production deployment it's highly recommended to build actual packages which will automatically install the dependencies for you automatically.
Asked by tfoote on 2020-11-19 22:08:10 UTC
Comments