package.xml과 rosdep
내 패키지를 받은 사람은 무엇을 더 깔아야 하는지 어떻게 알까?
package.xml
패키지의 신분증입니다
package.xml에는 이름, 버전, 설명, 관리자, 라이선스가 적힙니다. 맨 아래 build_type은 이 패키지를 어떤 방식으로 빌드할지 알려 줍니다. description의 TODO는 직접 채웁니다.
--license로 준 라이선스는 이미 적혀 있습니다. 관리자 줄은 컴퓨터 설정에 따라 다르게 채워집니다.
의존성
import 한 것은 적어 둡니다
코드에서 다른 패키지를 import 했다면, 그 패키지 이름을 package.xml에 적습니다. 파이썬 노드는 실행할 때 필요하므로 <exec_depend>에 적습니다.
빠뜨려도 내 컴퓨터에서는 돌 수 있습니다. 이미 깔려 있어서입니다. 문제는 남의 컴퓨터에서 터집니다.
태그 종류
언제 필요한지에 따라 태그가 다릅니다
<depend>는 빌드와 실행 모두에 필요하다는 뜻이고, 나머지는 이름 그대로 그때만 필요하다는 뜻입니다. 파이썬 패키지는 컴파일하는 빌드 단계가 없어서 주로 <exec_depend>를 씁니다.
7강에서는 메시지 타입 패키지를 depend로 적는 예를 봅니다.
rosdep
적힌 목록을 보고 대신 설치합니다
rosdep은 src 안 패키지들의 package.xml을 읽어, 적힌 이름을 이 컴퓨터에 맞는 apt 패키지 이름으로 바꾸고 빠진 것만 설치합니다. 실제 설치는 apt가 합니다.
rosdep은 2강 2편에서 깐 ros-dev-tools에 들어 있습니다.
처음 한 번
init과 update는 한 번만 합니다
rosdep을 처음 쓸 때 sudo rosdep init과 rosdep update를 한 번만 합니다. init은 목록을 받아 올 주소를 등록하고, update는 그 목록을 내려받습니다. update에는 sudo를 붙이지 않습니다.
init을 다시 치면 already exists 오류가 납니다. 이미 했다는 뜻이니 넘어가면 됩니다.
따라 하기
빌드 전에 워크스페이스 루트에서
rosdep install --from-paths src --ignore-src -y는 src의 패키지가 필요로 하는 것을 설치합니다. --ignore-src는 워크스페이스 안에 이미 있는 패키지는 건너뛰라는 뜻이고, -y는 설치할 때 묻지 말라는 뜻입니다.
rosdep install은 안에서 sudo apt를 부르므로 비밀번호를 물을 수 있습니다. 다 깔려 있으면 그림처럼 나옵니다. 14강 2편에서도 씁니다.
다음 편