皆さん初めて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
コメント