Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags. |
Administrando dependências do sistema
Description: Explica como usar rosdep para instalar dependências do sistema.Tutorial Level: INTERMEDIATE
Next Tutorial: Dicas de Roslaunch para projetos grandes
Contents
Show EOL distros:
Dependências do sistema
Pacotes do ROS às vezes requerem bibliotecas externas e ferramentas que são oferecidas pelo sistema operacional e não são pacotes do ROS. Essas bibliotecas e ferramentas geralmente são chamadas de dependências do systema, ou system dependencies. Em alguns casos, essas dependências ainda não estão instaladas no sistema. ROS oferece uma ferramenta, rosdep, que pode ser usada para baixar e instalar dependências do sistema.
Pacotes do ROS devem declarar que eles precisam dessas dependências do sistema no arquivo package.xml. Vamos dar uma olhada no arquivo do pacote turtlesim:
$ roscd turtlesim
E depois,
$ cat package.xml
<package> ... ... <build_depend>message_generation</build_depend> <build_depend>libqt4-dev</build_depend> <build_depend>qt4-qmake</build_depend> <build_depend>rosconsole</build_depend> <build_depend>roscpp</build_depend> <build_depend>roscpp_serialization</build_depend> <build_depend>roslib</build_depend> <build_depend>rostime</build_depend> <build_depend>std_msgs</build_depend> <build_depend>std_srvs</build_depend> </package>
Como pode ver, o turtlesim precisa dessas bibliotecas e pacotes.
$ cat manifest.xml
<package> ... ... <rosdep name="libqt4-dev"/> <rosdep name="qt4-qmake"/> </package>
As you can see turtlesim needs libqt4-dev and qt4-qmake.
$ cat manifest.xml
<package> ... ... <rosdep name="libqt4-dev"/> <rosdep name="qt4-qmake"/> </package>
As you can see turtlesim needs libqt4-dev and qt4-qmake.
$ cat package.xml
<package> ... ... <buildtool_depend>catkin</buildtool_depend> <build_depend>geometry_msgs</build_depend> <build_depend>qtbase5-dev</build_depend> <build_depend>message_generation</build_depend> <build_depend>qt5-qmake</build_depend> <build_depend>rosconsole</build_depend> <build_depend>roscpp</build_depend> <build_depend>roscpp_serialization</build_depend> <build_depend>roslib</build_depend> <build_depend>rostime</build_depend> <build_depend>std_msgs</build_depend> <build_depend>std_srvs</build_depend> <run_depend>geometry_msgs</run_depend> <run_depend>libqt5-core</run_depend> <run_depend>libqt5-gui</run_depend> <run_depend>message_runtime</run_depend> <run_depend>rosconsole</run_depend> <run_depend>roscpp</run_depend> <run_depend>roscpp_serialization</run_depend> <run_depend>roslib</run_depend> <run_depend>rostime</run_depend> <run_depend>std_msgs</run_depend> <run_depend>std_srvs</run_depend> </package>
Como pode ver, o turtlesim precisa de dependências do sistema como libqt5-core and qt5-qmake.
rosdep
rosdep é uma ferramenta que você pode usar para instalar dependências dos seus pacotes de ROS, tanto outros pacotes de ROS quanto dependências do sistema.
Uso:
rosdep install [package]
Para baixar e instalar as dependências do turtlesim:
$ rosdep install turtlesim
Se você está seguindo os tutorials, esta é provavelmente a primeira vez que você usa rosdep. Quando rodar este comando pela primeira vez, você verá uma mensagem de erro:
ERROR: your rosdep installation has not been initialized yet. Please run: sudo rosdep init rosdep update
Rode os dois comandos sugeridos e depois tente instalar as dependências do turtlesim novamente.
Se você instalou turtlesim de binaries, você verá uma mensagem indicando que todas as dependências já tinham sido instaladas com sucesso:
All required rosdeps installed successfully
Senão, você verá o resultado do 'rosdep' instalando as dependências:
set -o errexit set -o verbose if [ ! -f /opt/ros/lib/libboost_date_time-gcc42-mt*-1_37.a ] ; then mkdir -p ~/ros/ros-deps cd ~/ros/ros-deps wget --tries=10 http://pr.willowgarage.com/downloads/boost_1_37_0.tar.gz tar xzf boost_1_37_0.tar.gz cd boost_1_37_0 ./configure --prefix=/opt/ros make sudo make install fi if [ ! -f /opt/ros/lib/liblog4cxx.so.10 ] ; then mkdir -p ~/ros/ros-deps cd ~/ros/ros-deps wget --tries=10 http://pr.willowgarage.com/downloads/apache-log4cxx-0.10.0-wg_patched.tar.gz tar xzf apache-log4cxx-0.10.0-wg_patched.tar.gz cd apache-log4cxx-0.10.0 ./configure --prefix=/opt/ros make sudo make install fi
rosdep roda o script acima e sai quando termina.