注意
あまり詳しくない人はやらないほうがいいと思います.
まえがき
ROSのパッケージを使うとapt-getで必要なパッケージ・機能がビルド済みの状態でインストールすることができる反面,新しい機能やバグフィクスなどを利用したいときは次のリリースを待つか,最新のソースを自分でビルドする必要があります.
自分でビルドするためにはワークスペースをオーバーレイする必要があり,この作業自体は簡単にできますが,roslaunchやrosrunに相当する作業をupstartやsystemdに登録してコンピュータの起動時にROSのノードを起動するときなどに変更しなければならないファイルが増えてしまい,複数人で共有するコンピュータ(ロボット実機含む)の場合面倒になってしまいます.
そこで一時的にオレオレバージョンを作ってローカルにインストールすることで次のリリースまで凌ぐことを目的にします.
debパッケージを作るインストーラを作る
-
まず必要なパッケージをインストールします.
sudo apt install python-bloom fakeroot dpkg-dev debhelper -
一時的にパッチを当てたいパッケージに移動
roscd awesome_pkg -
ソースを変更する(パッチを当てる)
-
debパッケージを作るためのインストーラを作成
bloom-generate rosdebian --os-name ubuntu --os-version xenial --ros-distro kineticxenialやkineticなどのdistroは各自の環境によって変更してくださいコマンド実行後に
debianというフォルダができます.$ ls debian changelog compat control rules source -
バージョンをオレオレ仕様に変更
このままだと普通に
aptで入るバージョンと競合するので,changelogファイルを編集してオレオレバージョンに変更します.
ここで,コツとして,現在のリリースバージョンより大きく,次にリリースされる予定のバージョンより小さいバージョンにしておくと,次にリリースされたタイミングでapt-get upgradeをしたときに,このパッチから自動でアップグレードされるようにすることができます.
(もちろん次のリリースではこのパッチが不要になっているはずという前提)$ diff debian/changelog # 最初の行 - ros-kinetic-awesome-pkg (2.2.26-0xenial) xenial; urgency=high + ros-kinetic-awesome-pkg (2.2.99-0xenial) xenial; urgency=highここでは次のリリースで
2.3以降がリリースされることとします. -
debファイルの作成debファイルをビルドします.$ fakeroot debian/rules binary # <中略> dpkg-deb: building package 'ros-kinetic-awesome-pkg' in '../ros-kinetic-awesome-pkg_2.2.99-0xenial_amd64.deb'.現在のディレクトリから1つ上のディレクトリに
debファイルができているはずです.
あとはこれをパッチを当てたい環境に持って行き,dpkg -iでインストールすれば終わりです.