ブログ

Armadillo-X1, Armadillo-IoT G3/G3L,Armadillo-640: 自作アプリケーションのDebianパッケージ作成方法

at_syunya.ohshio
2018年5月11日 15時07分

Armadillo-X1,Armadillo-IoT G3/G3L,Armadillo-640(以下Armadillo)で、自作アプリケーションのDebianパッケージを作成する方法についてご紹介します。

概要

Armadilloを使用して自作のアプリケーションを作成する場合、「特定のファイルをArmadilloの特定ディレクトリに手動コピー」や「任意コマンド実行による初期化処理」等の各種インストール処理を実施する必要があります。 今回は自作アプリケーションをより簡単にインストールしたりその管理を行うため、アプリケーションを「Debianパッケージ」にする方法をご紹介します。 Debianパッケージにすることで、次に示すパッケージ管理が行えるようになります。

  • 各種ソフトウェアの導入と削除
    →「決められた場所にディレクトリを作り、アプリケーションを保存する」等を考える必要がなくなります。
  • ソフトウェア同士やライブラリとの依存関係の解決
    →予めアプリケーションに必要なものを手動でインストールする必要がなくなります。

Debianパッケージに関する詳細については「Debian Project」を参照してください。 今回の例では、「ATDE上で作成したアプリケーション」をDebianパッケージにします。

Debianパッケージ作成の準備

まずはDebianパッケージの作成環境を整えます。

Debianパッケージ作成ツールのインストール

今回の記事では、Debianパッケージ作成ツールとして[devscripts],[cdbs]を用いてパッケージを作成します。 上記2つのツールをインストールします。

[atde]$ sudo apt-get install devscripts
[atde]$ sudo apt-get install cdbs

これらのツールの説明を以下に記載します。

ツール名 説明
devscripts Debianパッケージの作成に必要なツール群
cdbs Debianパッケージに必要な[rules]ファイルの内容を補助するツール
パッケージ化するshellスクリプトの作成

今回は例として簡単なshellスクリプトをパッケージ化します。 以下のようにディレクトリを作り、その内部でshellスクリプトを作成します。

[atde]$ mkdir pkg-test
[atde]$ cd pkg-test
[atde]:~/pkg-test$ mkdir hello-world
[atde]:~/pkg-test$ cd hello-world
[atde]:~/pkg-test/hello-world$ vi hello-world-deb

shellスクリプトの内容は以下の通りです。

echo "hello-world"
設定ファイルの作成

続いて、パッケージ化する上で必要な設定ファイルを設置する「debian」ディレクトリを作成し、ディレクトリ内にファイルを作成します。 今回の例では、Debianパッケージ作成に必要最低限のファイルを作成します。 「debian」ディレクトリと各ファイルについての詳細は「Debian Project」を参照し、状況に合わせて各ファイルの内容を書き換えてください。

[atde]:~/pkg-test/hello-world$ mkdir debian
[atde]:~/pkg-test/hello-world$ cd debian

今回作成する各ファイルの説明を以下に記載します。

ファイル名 説明
control パッケージ管理ツールが利用する情報を記載するファイル
rules dpkg-buildpackageが実際にパッケージを作成するために使うルールを記載するファイル
changelog dpkgやその他のプログラムが以下を識別するための情報を記載するファイル ・パッケージのバージョン番号 ・リビジョン ・ディストリビューション ・緊急度
copyright パッケージのアップストリームソースに関する著作権やライセンスなどの情報を記載するファイル
compat debhelper の互換性レベルを規定するファイル
controlファイル

[control]ファイルを作成します。

[atde]:~/pkg-test/hello-world/debian$ vi control

[control]ファイルの内容は以下のようにします。

Source: hello-world
Section: debug
Priority: optional
Maintainer: Atmark-techno <test@test.com>
Build-Depends: debhelper (>= 9), cdbs
Standards-Version:3.9.6 
 
Package: hello-world
Architecture: all
Depends: ${misc:Depends}
Description: Make package test.
 package.make.test
rulesファイル

[rules]ファイルを作成します。

[atde]:~/pkg-test/hello-world/debian$ vi rules

[rules]ファイルの内容は以下のようにします。

#!/usr/bin/make -f
 
include /usr/share/cdbs/1/rules/debhelper.mk 
 
install/hello-world::
    install -pd $(DEB_DESTDIR)/usr/bin
    install -pm 755 hello-world-deb $(DEB_DESTDIR)/usr/bin

※[install/hello-world::]以下の、行先頭の空白は「Tab」でなければなりません。スペースキーによる空白ではないためご注意ください。

changelogファイル

[changelog]ファイルは他ファイルと違い、[dch]コマンドによって作成することができます。

[atde]:~/pkg-test/hello-world/debian$ cd ..
[atde]:~/pkg-test/hello-world$ EDITOR=vi dch --create

上記コマンド実行後に[changelog]ファイルのテンプレートが表示されるので、必要に応じて内容を書き換えてください。

hello-world (0.0.1) unstable; urgency=medium
 
  * Initial release.
 
 -- Atmark-techno <test@test.com>  Wed, 22 Aug 2018 17:07:18 +0900

内容保存後、debianディレクトリ内に[changelog]ファイルが保存されています。

[atde]:~/pkg-test/hello-world$ cd debian
[atde]:~/pkg-test/hello-world/debian$ ls
changelog  control  rules
copyrightファイル

[copyright]ファイルを作成します。

[atde]:~/pkg-test/hello-world/debian$ vi copyright

[copyright]ファイルの内容は以下のようにします。

Copyright (c) 2018 Atmark Techno, Inc.
compatファイル

まずは[compat]ファイルを作成するために、[debhelper]のバージョンを確認します。

[atde]:~/pkg-test/hello-world/debian$ dpkg -l | grep -i debhelper
ii  debhelper                        10.2.5                         all          helper programs for debian/rules

バージョンを確認したら、[compat]ファイルを作成します。

[atde]:~/pkg-test/hello-world/debian$ vi compat

[compat]ファイルの内容は、[debhelper]のバージョンを参考に以下のようにします。

10

自作Debianパッケージの作成

すべてのファイルを生成したのち、コマンド[debuild]を用いることで自作Debianパッケージを作成することができます。

[atde]:~/pkg-test/hello-world/debian$ debuild -us -uc

途中、続けるかどうかの質問をされるので[y]で続けるを選択します。 しばらく待つと、[pkg-test]ディレクトリ直下にDebianパッケージが作成されます。

[atde]:~/pkg-test/hello-world/debian$ cd ..
[atde]:~/pkg-test/hello-world$ cd ..
[atde]:~/pkg-test$ ls
hello-world            hello-world_0.0.1.tar.gz   hello-world_0.0.1_i386.build
hello-world_0.0.1.dsc  hello-world_0.0.1_all.deb  hello-world_0.0.1_i386.changes

自作Debianパッケージのインストールテスト

コマンド[dpkg]を用いて、生成されたファイル[hello-world_0.0.11_all.deb]をATDEにインストールします。

[atde]:~/pkg-test$ sudo dpkg -i hello-world_0.0.1_all.deb

インストールが完了したら、以下のようなコマンドが追加されていることを確認して実行します。

[atde]:~/pkg-test$ hello-world-deb
hello-world

上記のようにコマンドが追加されていれば正常にインストールされています。 アンインストールする場合は以下のように実行します。

[atde]:~/pkg-test$ sudo dpkg -r hello-world

インストール時のように[hello-world-deb]コマンドを試し、コマンドが実行できなくなっていればアンインストール完了です。

補足

今回のブログにてご紹介した内容は、Debianパッケージ作成に「必要最低限」の情報です。 詳細なDebianパッケージ作成情報は「Debian 新メンテナーガイド」をご確認ください。

関連ページ

・「Armadillo-X1, Armadillo-IoT G3/G3L,Armadillo-640:自作Debianパッケージのaptリポジトリ作成,公開方法