本を読む

読書やコンピュータなどに関するメモ

perlshの.debファイルを作る

 Perlの対話型実行環境でperlshというツールがあります。Term::ReadLine::Gnuの付録としてCPANで配布されています。

 Term::ReadLine::Gnuは、DebianやUbuntuではlibterm-readline-gnu-perlパッケージとして用意されています。が、付録であるperlshは、パッケージには含まれていません。そこで、libterm-readline-gnu-perlパッケージのソースをいじって、perlshパッケージも同時に作るように変更してみます。以下、Ubuntu 7.10での例です。

 結局は、ひとつのソースから複数のパッケージを作る方法を試してみたかっただけですが。

ソースを入手

$ apt-get source libterm-readline-gnu-perl
$ cd libterm-readline-gnu-perl-1.16

debian/rulesを編集

 パッケージを作るためのMakefileであるdebian/rulesを変更します。

$ vi debian/rules

 変更点は、diffでいうと以下のとおり。

--- rules.bak	2008-01-13 21:18:28.000000000 +0900
+++ rules	2008-01-13 21:18:52.000000000 +0900
@@ -3,7 +3,9 @@
 
 #export DH_VERBOSE=1
 
-PACKAGE=$(shell dh_listpackages)
+#PACKAGE=$(shell dh_listpackages)
+PACKAGE=libterm-readline-gnu-perl
+PACKAGE_PERLSH=perlsh
 
 include /usr/share/dpatch/dpatch.make
 
@@ -16,6 +18,7 @@
 endif
 
 TMP     = $(CURDIR)/debian/$(PACKAGE)
+TMP_PERLSH = $(CURDIR)/debian/$(PACKAGE_PERLSH)
 DOCDIR   = $(TMP)/usr/share/doc/libterm-readline-gnu-perl
 
 OPTIMIZE = -O2 -Wall
@@ -48,6 +51,8 @@
 	dh_installdirs
 
 	$(MAKE) install PREFIX=$(TMP)/usr
+	install -d $(TMP_PERLSH)/usr/bin
+	install -m 755 eg/perlsh $(TMP_PERLSH)/usr/bin
 
 	find $(TMP) \( -name '*.pm' -o -name '*.pl' \) -print0 | xargs --null --no-run-if-empty \
 	  $(PERL) -i -pe '$$_ = "#!/usr/bin/perl$$1\n" if m|^#!.*/perl(.*)$$|;'

debian/controlを編集

 パッケージの情報を記述するdebian/controlファイルを編集します。

$ vi debian/control

 ファイルの末尾に、以下のような内容を追加します。

Package: perlsh
Architecture: any
Depends: ${perl:Depends}, ${shlibs:Depends}, libterm-readline-gnu-perl
Description: one-line perl evaluator with line editing function and
 variable name completion function

 元の内容との間は、空行で区切ります。

perlshの#!行を変更する

 perlshスクリプトは、冒頭で「#!/usr/local/bin/perl」を呼んでいます。これを、DebianやUbuntuに合わせて、「#!/usr/bin/perl」に変更します。ここでは、オリジナルのソース自体を編集するのではなく、dpatchを使ってパッチを作成します。

 まずdpatch-edit-patchを起動。

$ dpatch-edit-patch 50egpath

 サブシェルが立ち上がるので、perlshスクリプトを編集します。

$ vi eg/perlsh

 編集が終わったらサブシェルを抜けます。

$ exit

 これでパッチが作られました。作られたパッチを一覧に登録します。

$ vi debian/patches/00list
(末尾に「50egpath.dpatch」という行を追加)

バージョンを設定

 変更ができたら、バージョン番号を独自のものに変更します。

$ dch -v 1.16-2-emasaka1
(説明を入力)

パッケージのビルドとインストール

$ dpkg-buildpackage -uc -us -rfakeroot
$ cd ..
$ dpkg -i libterm-readline-gnu-perl_1.16-2-emasaka1_i386.deb perlsh_1.16-2-emasaka1_i386.deb

まとめ

 以上、設定を変更してビルドするだけの簡単なお仕事です。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/340-1b5b3a71

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad