環境構築:Debianソースコードパッケージをビルドする方法(debソースパッケージ構築ツールのインストール)
前書き
過去の記事で、debソースパッケージの取得方法を示しました。
Linuxコマンドのソースコードを取得する方法(Debian環境):オリジナルコマンド作成前の勉強向け
ソースコードを取得したら、自身で改変し、ビルドも試したくなる筈です。そのため、本記事では、debソースパッケージをビルドする方法を示します。debソースパッケージの取得に関する設定は、上記の過去記事を参照して下さい。
- debパッケージ構築に最低限必要なパッケージをインストール
- debパッケージ作成の補助ツールをインストール
- debソースパッケージのビルド依存パッケージを取得
- debuildコマンドでdebソースパッケージをビルド
検証環境
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ neofetch _,met$$$$$gg. nao@debian ,g$$$$$$$$$$$$$$$P. ---------- ,g$$P" """Y$$.". OS: Debian GNU/Linux 9.9 (stretch) x86_64 ,$$P' `$$$. Kernel: 4.9.0-9-amd64 ',$$P ,ggs. `$$b: Uptime: 2 days, 5 hours, 42 minutes `d$$' ,$P"' . $$$ Packages: 2696 $$P d$' , $$P Shell: bash 4.4.12 $$: $$. - ,d$$' Resolution: 2560x1080 $$; Y$b._ _,d$P' DE: Cinnamon 3.2.7 Y$$. `.`"Y$$$$P"' WM: Mutter (Muffin) `$$b "-.__ WM Theme: Cinnamon (Albatross) `Y$$ Theme: BlackMATE [GTK2/3] `Y$$. Icons: Gnome [GTK2/3] `$$b. Terminal: gnome-terminal `Y$$b. CPU: Intel i3-6100U (4) @ 2.3GHz `"Y$b._ GPU: Intel Integrated Graphics `""" Memory: 5070MB / 32069MB |
debパッケージ構築に最低限必要なパッケージをインストール
debパッケージを構築するため、最低限必要なパッケージはbuild-essentialパッケージです。build-essentialによって、各種コンパイラ、makeコマンド、debパッケージ構築ツールがインストールされます。
1 |
$ sudo apt install build-essential |
debパッケージ作成の補助ツールをインストール
Debianパッケージシステムは、Debian独自のツールによって、パッチ管理やビルド自動化が支えられています。それらのツールをインストールします。実際の所、ビルドするだけであれば、必須パッケージはdevscriptsパッケージ(ビルドに使うdebuildが入ったパッケージ)のみです。
他パッケージは明示的にインストールする必要はありませんが、インストールします。
1 2 |
$ sudo apt install dh-make devscripts lintian git-buildpackage quilt pbuilder \ dput debhelper debmake fakeroot equivs cdbs |
パッケージ名 | 説明 |
dh-make | 一時開発元のソースパッケージをdebソースパッケージ形式に変換 |
devscripts | debパッケージ開発に役立つツール・ラッパー群 |
lintian | debパッケージのバグやポリシー違反を発見するツール |
git-buildpackage | debソースパッケージをgitリポジトリ内に格納するためのヘルパーツール |
quilt | 複数パッチの管理ツール |
pbuilder | chroot環境でパッケージをビルドするツール(ローカルビルド用) |
dput | debパッケージのアップロードツール |
debhelper | debパッケージの自動構築ルール(debian/rules)を実行するためのツール |
debmake | debソースパッケージを作成するためのヘルパースクリプト |
fakeroot | 一般ユーザが管理者権限を擬似的に取得するツール |
equivs | 依存関係情報のみが含まれたパッケージを作成するツール(依存関係回避ツール) |
cdbs | debパッケージ用の共通ビルドシステム |
debソースパッケージのビルド依存パッケージを取得
debソースパッケージのビルド依存パッケージは、ソースパッケージ毎に異なります。それらのパッケージ名を手入力してインストールする事は面倒なため、”apt build-dep (ソースパッケージ名)”で一括インストールします。今回の例では、coreutilsパッケージのビルド依存パッケージをインストールします。
1 |
$ sudo apt build-dep coreutils |
debuildコマンドでdebソースパッケージをビルド
今回の例では、coreutilsパッケージのソースコードを取得して、ビルドします。取得するソースコードにはパッチも含まれていますが、パッチはソースコード取得のタイミングで適用されています。
ちなみに、ビルド時にdebuildに付与しているオプションに関する説明は、helpに記載されていません。debuildのmanにも書かれておらず、dpkg-buildpackageのmanに書かれています。オプションの意味は、以下の通りです(参考)。
- “uc”=”.buildinfo”ファイルと”.changes”ファイルに署名をしない(unsigned changes)
- “us”=ソースパッケージに署名をしない(unsigned source)
- “b”=Binaryビルドか、build=any,allと等価
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ apt source coreutils $ ls (注釈) coreutils-8.30がソースコードを格納したディレクトリ coreutils-8.30 coreutils_8.30-3.debian.tar.xz coreutils_8.30-3.dsc coreutils_8.30.orig.tar.xz $ cd coreutils-8.30 $ debuild -uc -us -b (注釈) ビルド開始 (注釈) 生成物であるバイナリは、srcディレクトリ以下に存在し、 debパッケージは、一つ上の階層に存在 $ fakeroot debian/rules clean (注釈) debバイナリパッケージ以外の生成物を削除 |
ロシア人と国際結婚した地方エンジニア。
小学〜大学院、就職の全てが新潟。
大学の専攻は福祉工学だったのに、エンジニアとして就職。新卒入社した会社ではOS開発や半導体露光装置ソフトを開発。現在はサーバーサイドエンジニアとして修行中。HR/HM(メタル)とロシア妻が好き。サイトに関するお問い合わせやTwitterフォローは、お気軽にどうぞ。