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リポジトリ作成,公開方法」