LoginSignup
3
0

More than 5 years have passed since last update.

ソースビルドしたROS環境上でdebパッケージを作成する

Last updated at Posted at 2018-04-21

https://qiita.com/musubi05/items/e01684625b6f3917b10b 
※ 2018/4/30 手法を大幅に変更しました

Overview

  • ソースビルドで構築したROS環境で動くdebパッケージを作成する

ソースビルドしたROS環境における問題

http://wiki.ros.org/Installation/Source の方法でインストールしたROS環境は、当たり前ですが dpkg に登録されません。 
https://qiita.com/musubi05/items/e01684625b6f3917b10b の方法で作成したdebパッケージは、ros-kinetic-roscppros-kinetic-std-msgsなどに依存しているので、このままでは依存関係を解決できずインストールすることができません。

なので、bloomに対し,依存関係を登録しないパッケージリストを渡せる様に修正しました(https://github.com/musubi05/bloom ) 。 
※bloom...rosパッケージをdebパッケージにするツール

動作確認環境

  • Debian Jessie x64 on Virtualbox
  • ROS Kinetic Kame (Source Install)

1. 修正したbloomのインストール

$ git clone https://github.com/musubi05/bloom.git
$ cd bloom
$ sudo python setup.py install

※アンインストール方法は、https://qiita.com/orion46/items/dfe476067e499cca8535 などを参考にしてください。

2. 開発環境のインストール

python-bloomを除くパッケージをインストールします。

$ sudo apt install fakeroot dpkg-dev debhelper

3. 依存関係の除外リストを作成

適当なテキストファイルに、依存させたくないパッケージを記述していきます。

ignore.txt
# このようにコメントを書くことも可能(#がコメント修飾)
# 一行に一つずつ、除外したいパッケージを記述する
roscpp
rospy
std_msgs

3. パッケージ化

あとは、https://qiita.com/musubi05/items/e01684625b6f3917b10b と同様ですが、bloom-generate実行時に,--skip-package-name <file path>のオプションを追加します。

出来上がったdebファイルは、先ほど指定したパッケージの依存関係が除外されているはずです。

aptでインストールしたbloom
$ bloom-generate rosdebian --os-name ubuntu --os-version xenial --ros-distro kinetic
==> Generating debs for ubuntu:xenial for package(s) ['beginner_tutorials']
No historical releaser history, using current maintainer name and email for each versioned changelog entry.
No CHANGELOG.rst found for package 'beginner_tutorials'
Package 'beginner-tutorials' has dependencies:
Run Dependencies:
  rosdep key           => xenial key
  roscpp               => ['ros-kinetic-roscpp']
  rospy                => ['ros-kinetic-rospy']
  std_msgs             => ['ros-kinetic-std-msgs']
Build and Build Tool Dependencies:
  rosdep key           => xenial key
  roscpp               => ['ros-kinetic-roscpp']
  rospy                => ['ros-kinetic-rospy']
  std_msgs             => ['ros-kinetic-std-msgs']
  catkin               => ['ros-kinetic-catkin']
==> Placing templates files in the 'debian' folder.
==> In place processing templates in 'debian' folder.
Expanding 'debian/compat.em' -> 'debian/compat'
Expanding 'debian/rules.em' -> 'debian/rules'
Expanding 'debian/control.em' -> 'debian/control'
Expanding 'debian/source/format.em' -> 'debian/source/format'
Expanding 'debian/source/options.em' -> 'debian/source/options'
Expanding 'debian/changelog.em' -> 'debian/changelog'
$
修正したbloom
$ bloom-generate rosdebian --os-name debian --os-version jessie --ros-distro kinetic --skip-package-names ignore.txt
==> Generating debs for debian:jessie for package(s) ['beginner_tutorials']
Dependency-skip packages: ['roscpp', 'rospy', 'std_msgs']
No historical releaser history, using current maintainer name and email for each versioned changelog entry.
No CHANGELOG.rst found for package 'beginner_tutorials'
Package 'beginner-tutorials' has dependencies:
Run Dependencies:
  rosdep key           => jessie key
Build and Build Tool Dependencies:
  rosdep key           => jessie key
==> Placing templates files in the 'debian' folder.
==> In place processing templates in 'debian' folder.
Expanding 'debian/changelog.em' -> 'debian/changelog'
Expanding 'debian/compat.em' -> 'debian/compat'
Expanding 'debian/control.em' -> 'debian/control'
Expanding 'debian/rules.em' -> 'debian/rules'
Expanding 'debian/source/format.em' -> 'debian/source/format'
Expanding 'debian/source/options.em' -> 'debian/source/options'
$ 

もちろん、実行時にはroscppなどが必要です。 

3
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0