debian独自パッケージの作り方

こんにちは、mi2yo4です。
早いものでもう12月です。

私がこのblogを立ち上げてからもう二年経つんですね…感慨深いものが有ります。

さて、今日は何について書こうかな、と思っていたのですが…
最近、業務でdebianでの独自パッケージ(通称オレオレパッケージ)を作ってみたので、その作り方について書いてみます。

ちなみにここに書いておくと、未来の自分に対しても「ここをこうやったよ!」と教えることが出来ます。何せ、色々と忘れてしまいがちなので…(^^;

パッケージ作成条件

今回はdebianパッケージ、という事でubuntuサーバを立てて作業を行いました。
パッケージに入れる作成しているのはPythonやらPHP、Shellscriptで何とかなってしまうものなので、以下の限定された条件でのパッケージ作成となりました。

  • 対象はスクリプト言語のみ、コンパイルの必要なソースは取り扱わない

ソースをコンパイルする必要がある場合は…また別途調べないとイケないです(^^;

パッケージ作成用のパッケージをインストール

まずはパッケージ作成に必要なファイルをインストールします。

$ sudo apt-get install devscripts cdbs debhelper

パッケージ作成のための作業用ディレクトリを用意します。
下記で作成したdebianフォルダ内にパッケージ作成に必要なファイルを作ります。
ファイルはchangelog,control,copyright,rulesの4つが最低限必要なようです。

$ mkdir workspace
$ mkdir workspace/packagename
$ mkdir workspace/packagename/build
$ mkdir workspace/packagename/build/debian

上記で入れた「packagename」は下の設定でも使います。

changelogの書き方

上記で挙げたchangelog,control,copyright,rulesのうち、changelogについては当初、解説サイトの内容を元に独自で入力してみたのですが、上手く動作させることが出来ませんでしたorz
おそらく不正なインデントかスペースが入っていたと思われます。
changelogの雛形を作ってくれるコマンドがあるので、そちらを使ったほうが手っ取り早いです。

debianフォルダの一階層上(build)で以下のコマンドを入力します。

debchange --create

出来たchangelogファイルに適切なコメントを書き込んで下さい。

後は、ビルド、インストールの際のrulesファイルを書きます。

rulesファイルの中身は下記のような感じです。

#!/usr/bin/make -f
#
#export DEB_BUILD_OPTIONS = nostrip
export LOGDIR = sample_etc/box

include /usr/share/cdbs/1/rules/debhelper.mk

install/packagename::
	install -pd $(DEB_DESTDIR)/usr/local/bin

	install -pm 755 $(LOGDIR)/usr/local/bin/sampleserver.py $(DEB_DESTDIR)/usr/local/bin
	install -pm 755 $(LOGDIR)/usr/local/bin/sampleclient.py $(DEB_DESTDIR)/usr/local/bin
workspace---packagename---build---debian---rules
                                |        |-changelog
                                |        |-control
                                |        |-copyright
                                |
                                |-sample_etc---box---usr---local---bin---sampleserver.py
                                                                       |-sampleclient.py

controlsについては以下のように記述しました。

Source: packagename
Maintainer: ITKOBO-Z <support@itkobo-z.jp>
Build-Depends: cdbs, debhelper
Standards-Version: 3.9.4

Package: packagename
Architecture: all
Description: sample script for itkobo-z.
 This package installs script files to /usr/local/bin directory. 

copyrightファイルはサンプルということで今回空のファイルとしました。

注意する点としては、インデントはSpaceではなくTabを使う事です。これで結構無駄な時間を過ごしました…orz

パッケージのビルド

準備が整いましたのでいよいよパッケージを作成します。

$ debuild -us -uc

上手く行けば、packagename以下にパッケージが作成されています。

まとめ

サンプルスクリプトを用いて、debianパッケージをつくる事が出来ました。
特にdebian周りは情報が色々とあるのですが、どれが最新なのか見極める必要がありますね。
本格的にパッケージを作成したい!となると、まだまだ様々な設定をしなくてはいけませんが、社内的に使うのであれば、今回程度の設定内容でも何とかなりそうです。

そんなわけで、また次回です!