こんにちは、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周りは情報が色々とあるのですが、どれが最新なのか見極める必要がありますね。
本格的にパッケージを作成したい!となると、まだまだ様々な設定をしなくてはいけませんが、社内的に使うのであれば、今回程度の設定内容でも何とかなりそうです。
そんなわけで、また次回です!