deb ファイルの作り方

皆さん初めてmk-linux419です。4月上旬にFascode Networkに入った新参者です。今回は、日本語の情報があまりないdebファイルの作り方をまとめていきたいと思います。

debファイルの基本

debファイルって何?

debファイルは主にdebian、ubuntuで使われているパッケージ形式の名前です。
ソフトの中身のほか、ソフトの名前、バージョン、依存関係などの情報が含まれています。

debファイルの中身

debファイルを展開すると3つのファイルが出てきます。

  • control.tar.~
  • data.tar.~
  • debian-binary

それぞれのファイルの役割は下記の通りです。

control.tar.~ -> ソフトの名前、バージョン、依存関係など
data.tar.~ -> ソフト本体
debian-binary -> debファイルのバージョン

control.tar~の中身

control.tar.~を展開するとたくさんファイルが出てきます。
(今回は例としてapt_2.0.2_amd64.debから取り出しています。)

  • conffiles
  • control
  • md5sums
  • postinst
  • postrm
  • preinst
  • prerm
  • shlibs
  • triggers

多いですね()
今回はdebファイルを作るための基本的なファイルを作っていきます。

controlを追加してみよう

controlの作成

controlはdebファイルのコアとなる物です。
取り出したcontrolファイルを見てみましょう。

Package: apt
Version: 2.0.2
Architecture: amd64
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: APT Development Team <deity@lists.debian.org>
Installed-Size: 4182
Depends: adduser, gpgv | gpgv2 | gpgv1, libapt-pkg6.0 (>= 2.0.2), ubuntu-keyring, libc6 (>= 2.15), libgcc-s1 (>= 3.0), libgnutls30 (>= 3.6.12), libseccomp2 (>= 2.4.2), libstdc++6 (>= 9), libsystemd0
Recommends: ca-certificates
Suggests: apt-doc, aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), gnupg | gnupg2 | gnupg1, powermgmt-base
Breaks: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~), aptitude (<< 0.8.10)
Replaces: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~)
Provides: apt-transport-https (= 2.0.2)
Section: admin
Priority: important
Description: commandline package manager
 This package provides commandline tools for searching and
 managing as well as querying information about packages
~~~ 以下略 ~~~

長いですね()
流石にこんな長さののcotrolファイルは必要ないと思うので必須のものだけ取り出してみましょう。

(ここからはserene-startdashを例として扱っていきます。)

Package: serene-startdash
Version: 1.10-2
Maintainer: Yamada Hayao <shun819.mail@gmail.com>
Section: utils
Priority: optional
Architecture: all
Depends: bash, zenity, jq
Description: パッケージの追加を簡単に行える小さなGUIツール
 パッケージの追加や削除をGUIから簡単に行うことができるツールです。EG-InstallerをベースにSereneTeamが独自で改良を加えています。
 /etc/serene-startdash/softwaresにスクリプトを置くことで簡単に項目の追加や削除を行うことができます。

上から順に役割を説明すると、

Package: パッケージの名前
Maintainer: パッケージのメンテナーの名前 <メールアドレス>
Section: パッケージの種類 (今回はツールなので "utils" です。分からない場合は "unknown" に設定してください。)
Priority: パッケージの重要度 (普通は、 "optional" です。)
Architecture: アーキテクチャの種類 (amd64とか色々ありますが、大抵は "all" です。)
Depends: 依存関係 (依存がない場合はこの行は省略してください。)
Description: 短い説明 (短い説明だけでも大丈夫です。)
 長い説明
controlの追加

ソフトウェアのルート(今回ではREADME.mdなどがあるところ)に”DEBIAN”という名のフォルダーを作成して、そこに作成したcontrolを移動させます。

これで基本的なパッケージが作成できるようになりました。

debの作成

ソフトウェアのルートの上のディレクトリに移動して、下記のコマンドを実行します。

dpkg -b "DEBIAN"があるディレクトリの名前

これで、debファイル が作成できました。

copyrightを追加してみよう

個人で使用する分には必要ないかもしれませんが、配布するときにライセンスを入れるとより明示的にこのソフトはオープソースなんだと示すことができます。
(copyrgihtを追加しないと自動的にプロプライエタリになります。)

以下は例です。

Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: serene-startdash
Upstream-Contact: Yamada Hayao <shun819.mail@gmail.com>
Source: https://github.com/FascodeNet/serene-startdash.git

Files: *
Copyright: 2019-2020 Yamada Hayao <shun819.mail@gmail.com>
License: MIT

License: MIT
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and associated documentation files (the "Software"),
 to deal in the Software without restriction, including without limitation
~~~ 以下略 ~~~

上から順に役割を説明すると、

Format: copyrightの書き方のバージョン (ここは変える必要はありません。)
Upstream-Name: パッケージの名前
Upstream-Contact: メンテナーの名前 <メールアドレス>
Source: ソースコード

Files: *
Copyright: 年 メンテナーの名前 <メールアドレス>
License: ライセンスの名前

License: ライセンスの名前
 ライセンスまたはライセンスヘッダー


あとはcontrol同様に移動させてパッケージを作成するだけです

最後に

copyrightのライセンスまたはライセンスヘッダーをここで公開しているのでご自由にお使いください。
下記のライセンスに対応しています。

  • Apache-2.0
  • BSD
  • GPL-1
  • GPL-2
  • GPL-3 (GPL)
  • MIT

コメント

タイトルとURLをコピーしました