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

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

それほど機会は無いと思うが、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

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

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する