debパッケージ作成方法をステップバイステップでまとめました

  • このエントリーをはてなブックマークに追加
  • Pocket
debパッケージの作成方法

それほど機会は無いと思うが、debパッケージはもちろん個人でも作ることができる。

難度が高いので、初心者の方は飛ばした方が良いが、知っておきたいという方もいるだろう。このページではdebパッケージの作り方についてまとめてみた。参考にしてほしい。

rpmパッケージの作り方は下記で解説したのでこちらもご参考に。

debパッケージを作成する意味

「tar.gz」などのソースでのソフトウェアパッケージ管理ができないというわけではない。

しかし実際のところ、ディストリビューション毎に用意されたパッケージ管理方法にそって管理したほうがクリーンにシステムを保つことが出来る。

「configure」「make」「make install」はLinuxの世界共通であり、パッケージを作成する段階でも実行される。「ならば共通的な方法でよいのでは?」と思うかもしれないが、実際に触れてみると、まれに「インストールは出来るがアンインストール方法が提供されていない」というパッケージがある。

その場合手動でインストールしたファイルを全て削除することになる。このように雑な管理をしなければならない場合に遭遇するので、管理コストを考えてもディストリビューション毎のパッケージ管理に触れておくことは有意義だ。

debianの場合「ないものはない」と言えるようなパッケージの品揃えをしているので、実際に一からパッケージを作成する場面は少ないだろう。しかしパッケージ作成の全体の流れを把握しておいた方が保守管理の役に立つだろう。

すでにあるパッケージをビルドしてみる

編集を加えない単純なリビルドは難しいことはない、大まかな流れをつかむために練習がてらやってみよう。保守の全体の流れが掴めるはずだ。

基礎開発環境をととのえる

まずは環境を整える。

これは最初だけ実行すればよい、開発するための環境が整えば以降はその環境を使用してゆけばよい。

基礎開発パッケージをインストールする。これにより「gcc」や「make」といったツール郡がインストールされる。

# apt-get install build-essential

Debian固有のパッケージ作成ツール郡をインストールする。「debuild」コマンドなどはこのパッケージのなかに含まれる。

# apt-get install devscripts

ここまでで基礎的な開発環境の準備はととのった。次は実際にビルドしたいソースをもってくることになる。

ソース入手からビルドまで

とりあえず、パッケージをビルドするための作業台となるディレクトリを作成、移動する。

$ mkdir mypkg

$ cd mypkg

ビルドしたいパッケージのソースコードとパッチ郡一式をapt-getでダウンロードしてくる。

$ apt-get source unzip

ダウンロードされた物を確認

$ ls

もってきたソースコードをビルドするための関連パッケージをすべてインストールする。

# apt-get build-dep unzip

完了したら、展開されている、ソースコードのディレクトリへ移動する。

$ cd unzip-6.0

debuildコマンドを発行し、実際にパッケージをビルドする。「-uc」「-us」パッケージへの署名に関してのオプションだ。今回は署名を省略するのでこのオプション使用する。「-b」でバイナリパッケージを作成するという意味だ。

$ debuild -uc -us -b

バイナリパッケージが作成されているか確認する。

$ ls ../

パッケージ作成時につくられた一時ファイルを削除する。

$ fakeroot debian/rules clean

ダウンロードしてきたファイルと「debian」ディレクトリを確認してみる

ダウンロードしてきたファイルを確認しよう

hoge.debian.tar.xzこれらにはDebian固有のファイル郡がおさまっている。パッチなどだ。

unzip_6.0-16+deb8u2.debian.tar.xz

パッケージに関して設定情報ファイルがおさめられている。

unzip_6.0-16+deb8u2.dsc

大本のオリジナルなアーカイブが納められている。

unzip_6.0.orig.tar.gz

Debian固有のものを含め全てのものが展開されているソースディレクトリ

unzip-6.0

ソースディレクトリ内に「debian」というディレクトリが存在するのがわかると思う。このなかにパッケージ作成のための、「レシピ」が収まっている。

rules

このファイルの中身はmakeスクリプトと同じ書式で記述される

ターゲットは以下のようになっている。

clean ビルド時に生成されるファイルをクリアする
build ソースコードをビルドする
build-arch アーキテクチャに依存するビルドをおこなう
build-indep アーキテクチャに依存しないビルドをおこなう
install ビルドしたバイナリや作業用ディレクトリにインストールする
binary バイナリパッケージ作成
binary-arch アーキテクチャに依存するバイナリパッケージ作成
binary-indep アーキテクチャに依存しないバイナリパッケージ作成
get-orig-source オリジナルの最新ソースアーカイブをダウンロード
patch パッチを実行する

control

このファイルにはパッケージの情報とその他説明が記述される。ざっと見てみよう。

dpkg-control

changelog

変更履歴が記述される。以下のようになっている。

dpkg-changelog

copyrightもしくはcopyright.in

パッケージの著作権情報が記述される。

dpkg-copyright

模擬的なdebパッケージを作成してみる

記述を簡略化するためのツールとして「cdbs」をインストールする。

# apt-get install cdbs

作業用ディレクトリの作成

$ mkdir testdpkg-sample

作業ディレクトリに移動

$ cd testdpkg-sample

インストール後にテストするための簡単なスクリプト作成

$ touch hello-deb.sh

$ echo "echo hello" > hello-deb.sh

debianディレクトリの作成

$ mkdir debian

$ cd debian

各種ファイルの作成

$ touch rules control changelog copyright

「control」ファイル記述

$ vi control

「rules」ファイル記述

$ vi rules

「changelog」ファイル記述

$ vi changelog

パッケージを作成

$ debuild -us -uc

途中質問されると思うが「y」で問題ない。

ファイルの確認

$ ls ../testdpkg-sample_0.1-1_all.deb

無事にパッケージが作成されるはずだ。

インストールとアンインストールをしてみる

# dpkg -i testdpkg-sample_0.1-1_all.deb

$ hello-deb

出力結果

# dpkg -r testdpkg-sample

rpmとくらべると少々複雑?

「rpmとくらべると少々複雑」かもしれないが、rpmのspecファイルが「rules」「control」「changelog」「copyright」に分割されているだけであると考えると気が楽になるだろう。

実際rpmパッケージもdebパッケージも「レシピを元にパッケージを生成する」という部分は共通だ。

まとめ

このページではdebパッケージの作り方についてまとめてきた。複雑な部分もあるので初心者の方はざっくりと読むだけでも十分だ。

 「debian系でパッケージを作りたい」と思った時に参考にしていただければと思う。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*