56
. . . . 東京エリア Debian 勉強会 Debian Package ハンズオン 岩松 信洋 [email protected] IRC nick: iwamatsu 2008 03 01

東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋[email protected] IRC nick: iwamatsu

  • Upload
    others

  • View
    44

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

.

.. ..

.

.

東京エリア Debian勉強会Debian Packageハンズオン

岩松信洋 [email protected] nick: iwamatsu

2008年 03月 01日

Page 2: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

Agenda

Page 3: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

Agenda

今回の目的発表Debian Packageを作成する前の準備今回の生贄プログラムが動作を確認するDebian Packageの雛形を作るdebian/controlファイルの編集debian/changelogファイルの編集debian/copyrightファイルの編集debian/rulesファイルを編集するDebian Package の作成Debian Packageのテスト本日のまとめ終わりに質疑応答

Page 4: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

今 回 の 目的

Page 5: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

 シングルバイナリの DebianPackageが作成できるようになること。

Page 6: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

DebianPackageを作成する前の準備

Page 7: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

以下の環境変数を設定しておくと便利。

DEBFULLNAMEの設定Debian Packageのメンテナ名DEBEMAILの設定Debain Packageメンテナンス用のメールアドレス

Page 8: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

$ cat ˜/.bashrc--略--export DEBFULLNAME="Nobuhiro Iwamatsu"export [email protected]略--$ source ˜/.bashrc

Page 9: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

必要なパッケージ

最低限必要な必要なパッケージは以下の通り。

devscriptsdebhelperlintian/lindagccbinutilslibc6-devdh-make

あると便利なパッケージ

apt-filepbuilder

Page 10: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

今 回 の 生贄

Page 11: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

sl

==== ________ ____________D _| |_______/ \__I_I_____===__|_________||(_)--- | H\________/ | | =|___ ___| _________________/ | | H | | | | ||_| |_|| _| \_____A| | | H |__--------------------| [___] | =| || ________|___H__/__|_____/[][]˜\_______| | -| ||/ | |-----------I_____I [][] [] D |=======|____|________________________|_

__/ =| o |=-˜˜\ /˜˜\ /˜˜\ /˜˜\ ____Y___________|__|__________________________|_|/-=|___|| || || || |_____/˜\___/ |_D__D__D_| |_D__D__D_|\_/ \__/ \__/ \__/ \__/ \_/ \_/ \_/ \_/ \_/

Page 12: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

プログラムが動作を確認する

Page 13: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

まず、プログラムが動作するか確認しましょう。

$ tar -xf sl.tar$ cd sl$ make

Page 14: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

curses.hがないため、コンパイルに失敗しました。

$ tar -xf sl.tar$ cd sl$ makemakecc -O -o sl sl.c -lcurses -ltermcapsl.c:30:20: error: curses.h: No such file or directorysl.c: In function ’my_mvaddstr’:sl.c:42: error: ’ERR’ undeclared (first use in this function)sl.c:42: error: (Each undeclared identifier is reported only once........

Page 15: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

curses.hを持った Debian Packageが必要です。どのファイルがどのパッケージじよってインストールされるのか、調べるには apt-fileを使うと便利です。

# sudo apt-file update$ apt-file search /usr/include/curses.hlibncurses5-dev: usr/include/curses.h

Page 16: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

libncueses5-devパッケージをインストールして再度コンパイルしましょう。

# apt-get update# apt-get install libncurses5-dev$ makemakecc -O -o sl sl.c -lcurses -ltermcap.......

Page 17: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

コンパイルが通ったので、動作テストをしましょう。

% ./sl

Page 18: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

DebianPackageの 雛 形 を作る

Page 19: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

ディレクトリにバージョンがない場合はバージョンが付いたディレクトリ名に変更します。Debian Packageの雛形を作成するには、dh makeコマンドを使います。

$ tar -xf sl.tar$ mv sl sl-0.0.0$ cd sl-0.0.0$ dh_make

Page 20: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

iwamatsu@chimagu:˜/sl-0.0.0$ dh_make

Type of package: single binary, multiple binary,library, kernel module or cdbs?[s/m/l/k/b]

Page 21: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

s: 一つの実行バイナリを提供するパッケージm: 2つ以上の実行バイナリを提供するパッケージl: ライブラリ用パッケージk: カーネルモジュール用パッケージb: cdbsを使ったパッケージ

Page 22: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

$ dh_make

Type of package: single binary, multiple binary,library, kernel module or cdbs?[s/m/l/k/b] sMaintainer name : Nobuhiro IwamatsuEmail-Address : [email protected] : Thu, 21 Feb 2008 15:46:57 +0900Package Name : slVersion : 0.0.0License : blankType of Package : SingleHit <enter> to confirm:

Page 23: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

$ dh_make

Type of package: single binary, multiple binary,library, kernel module or cdbs?[s/m/l/k/b] sMaintainer name : Nobuhiro IwamatsuEmail-Address : [email protected] : Thu, 21 Feb 2008 15:46:57 +0900Package Name : slVersion : 0.0.0License : blankType of Package : SingleHit <enter> to confirm:

Could not find sl_0.0.0.orig.tar.gzEither specify an alternate file to use with -f,or add --createorig to create one.

Page 24: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

xxx.orig.tar.gzがないと、エラーになります。–createorigオプションを加えて  dh makeを実行しましょう。

$ dh_make --createorig

Page 25: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

dh make実行後、debianディレクトリが作成されます。

$ ls ./debian/README.Debian control dirs emacsen-remove.exinit.d.lsb.ex manpage.xml.ex mogeri.doc-base.EXpreinst.ex watch.ex   changelog copyrightdocs emacsen-startup.ex manpage.1.exmenu.ex postinst.ex prerm.excompat cron.d.ex emacsen-install.exinit.d.ex manpage.sgml.ex sl-default.expostrm.ex rules

Page 26: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

*.ex / *.EXはサンプルなので削除します。

$ rm -rf ./debian/*.ex$ rm -rf ./debian/*.EX

Page 27: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

最低限必要な debianディレクトリ以下にあるファイルは以下の通りです。。

README.Debian –  PackageのREADMEcontrol – Packageの説明、ビルドに必要な情報などdirs – Packageで利用するディレクトリを記述changelog – Packageの変更履歴copyright – Packageのコピーライトdocs –ドキュメントファイル一覧rules – Package作成用のスクリプト (Makefile)compat – debhelperのバージョン

Page 28: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

debian/controlファイルの編集

Page 29: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

Source: slSection: gamePriority: extraMaintainer: Nobuhiro Iwamatsu <[email protected]>Build-Depends: debhelper (>= 5),libncurses5-devStandards-Version: 3.7.2

Package: slArchitecture: anyDepends: ${shlibs:Depends}, ${misc:Depends}Description: Key type correction softwareKey type correction software for ’ls’ command.

Page 30: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

debian/changelogファイルの編集

Page 31: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

次に Debianの Changelogを編集しましょう。編集するには、dchコマンドを使います。

$ dchsl (0.0.0-1) unstable; urgency=low

* Initial release

-- Nobuhiro Iwamatsu <[email protected]> \Sun, 24 Feb 2008 01:01:53 +0900

Page 32: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

debian/copyrightファイルの編集

Page 33: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

This package was debianized by \Nobuhiro Iwamatsu <[email protected]> onThu, 21 Feb 2008 16:13:47 +0900.

It was downloaded from http://www.is.titech.ac.jp/˜toyoda/

Upstream Author:Toyoda Masashi <[email protected]>

Copyright:

Copyright 1993,1998 Toyoda Masashi ([email protected])

License:Everyone is permitted to do anything on this programincluding copying,modifying, and improving, unless you try to pretend thatyou wrote it.i.e., the above copyright notice has to appear in all copies.THE AUTHOR DISCLAIMS ANY RESPONSIBILITY WITH REGARD TOTHIS SOFTWARE.

The Debian packaging is \(C) 2008, Nobuhiro Iwamatsu <[email protected]> andis licensed under the GPL, see ‘/usr/share/common-licenses/GPL’.

# Please also look if there are files or directories which have a# different copyright/license attached and list them here.

Page 34: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

めんどくさいので、コピー。

Page 35: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

実際は、ソフトウェアの著作権を持っている人に連絡をとり、ライセンスを確認する必要があります。

Page 36: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

debian/rulesファイルを編集する

Page 37: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

debian/rulesは Debian Packageを作成する Makefileです。

configureターゲットbuildターゲットcleanターゲットinstallターゲット

Page 38: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

今回はシンプルなプログラムなので、変更する必要はありません。

Page 39: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

とりあえずPackageを作成する

Page 40: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

Debian Packageを作る時は、debuildコマンドを使います。

$ debuild -us -uc

-usソースパッケージにGPGサインをしない-uc *.changesファイルに GPGサインをしない

Page 41: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

$ debuild -us -ucfakeroot debian/rules cleandh_testdirdh_testrootrm -f build-stamp configure-stamp# Add here commands to clean up after the \build process./usr/bin/make cleanmake[1]: ディレクトリ ‘/tmp/sl-0.0.0’ に入りますmake[1]: *** ターゲット ‘clean’ を make するルール \がありません. 中止.make[1]: ディレクトリ ‘/tmp/sl-0.0.0’ から出ますmake: *** [clean] エラー 2debuild: fatal error at line 1239:fakeroot debian/rules clean failed

Page 42: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

Makefile の修正

Page 43: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

図 rulesファイルとMakefileの関係図今のMakefile

CC=ccCFLAGS=-O

sl: sl.c sl.h$(CC) $(CFLAGS) -o sl sl.c -lcurses -ltermcap

# $(CC) $(CFLAGS) -o sl sl.c -lcurses

Page 44: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

修正後

CC=ccCFLAGS=-OBINDIR?=/usr/games/ <--- インストール先を追加

BINDIR :実行バイナリがインストールされるディレクトリ

Page 45: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

修正後

install: <-- install ターゲットを追加install -d ${DESTDIR}${BINDIR}install -m 755 sl ${DESTDIR}${BINDIR}

clean: <-- clean ターゲットを追加rm -rf sl

DESTDIR: Debian Packageのインストールされる TOPディレクトリ

Page 46: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

再 度 De-bian Pack-ageを作成

Page 47: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

$ debuild -us -uc......dh_shlibdepsdh_gencontroldpkg-gencontrol: warning: unknown substitution variable ${misc:Depends}dh_md5sumsdh_builddebdpkg-deb: building package ‘sl’ in ‘../sl_0.0.0-1_i386.deb’.dpkg-genchangesdpkg-genchanges: including full source code in uploaddpkg-buildpackage (debuild emulation): full upload (original source is included)Now running lintian...W: sl: binary-without-manpage slFinished running lintian.

Page 48: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

DebianPackageのテスト

Page 49: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

pbuilder最低限のDebian systemから、パッケージを作成するためのツール。   

$ sudo /usr/sbin/pbuilder build sl_0.0.0-1.dsc

piupartsDebian Packageのインストール/アンインストールのチェックをするためのツール。

Page 50: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

本日のまとめ

Page 51: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

まずは、ソフトウェアが動作するか確認する

dh makeコマンドでパッケージの雛形を作成するdebuildコマンドでパッケージ作成ライセンスやコピーライトの確認をすること

lintian/lindaでパッケージのチェックインストールして動作確認まで行う

アンインストールの確認も忘れずに

Page 52: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

情報源

Page 53: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

Debian Project / Debian JP Project Websitehttp://www.debain.org

http://www.debain.or.jp

東京エリアDebian勉強会http://tokyodebian.alioth.debian.org

Debian Policyhttp://www.debian.org/doc/debian-policy/

Debian新メンテナガイドhttp://www.debian.org/doc/manuals/

maint-guide/index.ja.html

Page 54: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

終わりに

Page 55: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

今年のDebian勉強会では、毎月様々なDebian Pakcageの作成方法をみなさんに伝授します。

データだけのDebianPackage作成方法VCSを使ったDebian Packageの作成方法ライブラリのDebian Package作成方法などなど

Page 56: 東京エリア Debian 勉強会 - Debian Package ハンズ …...東京エリアDebian 勉強会 Debian Package ハンズオン 岩松信洋iwamatsu@debian.or.jp IRC nick: iwamatsu

. . . . . .

質疑応答