ROS를 개발하다보면 여러가지 패키지들을 사용해야 하고, 또한 오픈소스로 공개되어 있는 (주로는 github 등에서 받아오는) 패키지를 받아 빌드하여 사용해야할 경우가 생긴다.
이때 빌드하려는 패키지가 사용하는 의존 패키지들을 설치해줘야 빌드가 제대로 될 수 있는데, 이를 일일이 설치하는 것부터가 일이 되는 경우가 있다. README.md 파일에 이런 패키지들을 설치해야 합니다라고 알려주고 설치방법을 다음과 같이 패키지 리스트와 같이 알려 주는 경우도 있다.
$ sudo apt install package1 package2 ...
ROS에선 이를 쉽게 해결하기 위해서 rosdep 툴을 제공한다. rosdep이 하는 일을 보면, 여러가지 패키지들의 이름을 저장해 놓고, 각 패키지의 이름에 해당하는 시스템 패키지 명을 db로 저장하고 있는 형태이다. 기본적으론 rosdep.yaml 파일을 메인 레포지토리에서 받아와서 사용하고 있으며, 사용자가 이 파일을 수정하여 사용할 수도 있다.
각 패키지의 package.xml 파일엔 이 패키지가 의존하는 패키지들의 리스트가 저장되어 있다 (잘 만들어진 패키지라면…). rosdep은 각 패지키의 package.xml 파일을 읽어와, 의존 패키지 리스트를 만들고, 이를 위에서 설명한 db와 매칭하여 시스템 패키지를 설치하는 과정을 거친다.
따라서 패키지 디렉토리로 이동하여 다음과 같이 입력한다.
$ rosdep install --from-paths . --ignore-src -r -y
이렇게 하면 현재 디렉토리부터 하위 디렉토리를 순환하여 돌아다니며, 의존 패키지들을 자동으로 설치해 준다.
만약 파이썬으로 구성된 패키지이고, 의존 패키지를 requirements.txt 내에 잘 정리해 두었다면, 위와 같은 방법으로 다음과 같이 실행하면 의존 패키지를 pip를 이용하여 설치한다.
$ find -name 'requirements.txt' | xargs -L 1 sudo pip install -U -r
다른 사람이 만들어 놓은 패키지를 잘 이용하는 것도 좋지만, 위와 같은 과정을 잘 익혀두었다가 본인이 만든 패키지를 배포할때도 package.xml, requirements.txt 파일을 잘 정리하여 배포한다면 다른 사람이 별다른 수고없이도 쉽게 사용할 수 있게 된다.