[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Japanese version of HOWTO.gz of cvs-buildpackage
樽石です。
cvs-buildpackage の HOWTO をばばそっと訳しました。
自分のために書いたのであとは知りません。
直したい人がいたらあとは勝手に引き取ってください。
翻訳権は放棄します。
Debian GNU/Linux パッケージに CVS を使う
------------------------------------------
この短い文章ではパッケージを CVS 管理に移行するための簡単
な手助けになることを意図しています。ですから CVS やバージョン
管理になじみのない人にとってこれはおそらく興味深いものに
なるでしょう。また /usr/doc/cvs-buildpackage に cvs-pkginit
(スクリプトとマニュアルの両方とも gzip で圧縮されています)
スクリプトがあります。これはこの HOWTO の書式を出力するものです。
例えばパッケージ foo、 バージョン bar1、Debian バージョン 3 の
場合は
% cvs-pkginit foo bar1 3
と入力して書式を眺めてください。そして cvs-inject(1) の
マニュアルを読むとさらに良いでしょう。
Oldenburg, 6/2/97 Joey (joey@debian.org)
/ Martin Schulze /
Mobile, Manoj Srivastava
srivasta@debian.org
Japanese Translation, Unkown
$Id: HOWTO,v 1.11 1998/10/28 23:01:24 srivasta Exp $
注意: 以下の説明では、<> で括られた実態はそれぞれの場合に
おいて変更され、他の物はそのまま使われることを意味しています。
例えば、パッケージの上流バージョンが 2.1.82 について
議論する場合、<$version> は 2.1.82 を、そして
upstream_version_<$version | tr ._> は upstream_version_2_1_82.
を意味します。
1. CVS の設定
$ CVSROOT=/レポジトリを/置く/ディレクトリ
$ export CVSROOT
$ cvs init
$ mkdir $CVSROOT/debian
(訳注)
レポジトリとは CVS が管理ソース一式を保存する貯蔵庫
の事です。
これであなたの Debian パッケージをレポジトリにある他の
ソースから将来に渡って分割できます。もし CVS を他の
ソース管理に使う必要がないという場合でも、あとになって
後悔する(後になってレポジトリを移動するのは大変です)
よりはクラス化しておくほうがよっぽど簡単です。
もし二人以上の人が CVS を使う可能性があるなら、その人
達が CVS を使って実際にレポジトリを作成できることを
確認する必要があるでしょう。レポジトリの 1 部(*)にアクセス
できるようなグループ(もしくはグループ群)を決めて、
パーミッションを
# chgrp <archive> $CVSROOT/debian
# chmod g+ws $CVSROOT/debian
と設定してください。
(訳注)
1 部: レポジトリは CVS で管理される全てのソース情報が
保存されます。ここでの 1 部とは全てのソース情報の
中で Debian に関するレポジトリという意味です。
これでこのアーカイブグループのメンバーがレポジトリを設定
することができるようになります。それでは実際にそのグループ
がレポジトリの 1 部を作成できるかを確認しましょう。
# mkdir $CVSROOT/debian/<package1>
# chgrp <group1> $CVSROOT/debian/<package1>
# chmod g+ws $CVSROOT/debian/<package1>
# mkdir $CVSROOT/debian/<package2>
# chgrp <group2> $CVSROOT/debian/<package2>
# chmod g+ws $CVSROOT/debian/<package2>
あなたが一人の一般ユーザのように CVS レポジトリを共用できるよう
にするべきでしょう、つまり "-d /レポジトリを/置く/ディレクトリ"
と入力するか、以下のような記述をプロファイルに書いておくことに
よってできるようにしようと言うことです:
$ CVSROOT=/レポジトリ/を置く/ディレクトリ
$ export CVSROOT
2. モジュールの使用
# cvs checkout CVSROOT
# cd CVSROOT
# vi modules
以下で <package> は debian/changelog ファイルにあるパッケージ
名です。
以下の行を加えてください。1 行目は必須で 2 行目必要に応じて複製
します。
modules CVSROOT modules
<package> debian/<package>
# cvs commit -m 'Define first modules'
(訳注)
原文は
<package> debian/pacakge
となっているがこれは間違いだと思う。
3. CVS 使用の準備
cvs-inject を使用に対して次の 1 行が必須です。すでに
orig.tar.gz、.dsc、diff.gz ファイルのセットが作成されて
いることを仮定すると
$ cvs-inject <.dsc ファイルへのパス>
としてください(昔の方法はもっと大変でした、その方法は
この文の最後に付録として置いています。これを置いている
のは中身がどのように動いているのか好奇心のある人がい
るからです)。
debian/rules が実行可能であることを確認してください。
というのはこの方法はそれがエクスポートされたときに
実行され、そのエクスポート先のソース上で dpkg-buildpackage
の動作に問題が発生しないようにするためです。大抵の場合
、ファイルを CVS レポジトリに加える場合は全てのファイル
のパーミッションが正しくなっているか確認してください。
もし CVS を root として設定してあり、かつグループの書き込み
が許可されていない場合は $CVSROOT/debian/<package> を作成して
そのレポジトリの所有者を意図したユーザとグループに変更
する必要があります。CVS import は debian/<package> が作成でき
ないと警告してきますが問題ありません。
また、いくつかの場合において modules ファイルを設定してあるに
もかかわらずパッケージディレクトリの作成に置いて問題がある
と報告してくることがあります。それは時々 $CVSROOT/debian/<package>
に作成しようとしたのに $CVSROOT/<package> に作成されてしまう
というものです。この場合は '-Mdebian/<package>' を指定するか
手動でいったん作成されたレポジトリを移動してください(注意:
たぶんこれは CVS のバグで、調査中です)。
import する場合は -ko オプション(バイナリも管理する)を
使って上流ソースを import することに注意してください。
あなたが行った変更部分を import するわけではありません。
CVS タグ名を決定するさいに epoch は無視されます(epoch は
パッケージの順番に対する dpkg の挙動を変更するもので
CVS タグには無関係です)。
4. リリースの準備
パッケージを作成するような Debian のコマンドを実行できるように
する前に、最初にローカルの変更を commit しなければいけません。
$ cvs commit -m <message>
次に、'cvs tag' コマンドを使ってリリースに関連するような
全ての CVS 管理下のソースにタグを付けます:
$ cvs tag debian_version_<version|tr . _>-<debian-revision|tr ._>
-F フラグをつけて cvs-buildpackage を実行すると次回から
この作業は省略できます。
5. リリースを作成
cvs-buildpackage 機構と手動でエクスポートするのどちらでも
可能です(cvs-buildpackage の方が良いです)。最初に以下のような
感じで dry モード(タグが一致するかを確認する)で cvs-buildpackage
の動きを確認します。
$ cvs-buildpackage -d -n -rfakeroot
もし、問題が発生したら /etc/cvsdeb.conf が正しく設定されてい
るか確認してください。
そしてきちんと動くことを確認したら実際に実行します。
fakeroot でも実際に root になってでもどちらでも構いません。
$ cvs-buildpackage -rfakeroot
もしくは fakeroot のかわりに sudo や super とか何でも
使えます:
$ cvs-buildpackage -rsudo
手動で行うには:
パッケージを確認して
$ cvs export -d <package>-<version> \
-r debian_version_<version|tr ._>-<debian-revision|tr . _> \
<package>
そしたら普通のリリース方法と同じです。
(訳注)
普通のリリース方法とは CVS を使わない方法の事です。
---------------------------------------------------------------------
これで終了です。おめどうとうございます。これからはソースツリー
に対して行える作業に対して説明します。
----------------------------------------------------------------------
6. ファイルの削除、名前の変更
ファイルを移動する普通の方法は OLD を NEW へコピーし、CVS の
コマンドを使って 'remove OLD'し 'add NEW' します
(OLD と NEW は パスを含みます。例えばfoo/bar.c です)。
$ mv OLD NEW
$ cvs remove OLD
$ cvs add NEW
$ cvs commit -m 'Renamed OLD to NEW" OLD NEW
これがファイルを移動する一番単純な方法です、
エラーになりにくく、そして何が行われたのかが記録に
残ります。この記録にアクセスするためには前の名前か
新しい名前を、アクセスしようとしている記録の場所に
なるように指定しなければいけません。例えば
'cvs log OLD' は名前が変更されるまでのログを得ます。
7. import コマンドを使った module の更新
新しいソースのリリースが行われた時は最初に設定したときに使った
import コマンドを使ってレポジトリに反映させます。前の場合
との違いはこのリリースに違うタグの名前と違うメモを指定
することです。
現在は cvs-upgrade プログラムを使うとこれを簡単に行える
ようになりました。orig.tar.gz をあなたのマシンの作業ディレクトリ
に置きます(典型的に /usr/local/src/Packages/<Package name>)。上流
ソースは <作業ディレクトリ>/<パッケージ名>.orig.tar.gz という
名前でなければ行けません。
$ cvs-upgrade <パッケージ名> <上流バージョン>
これはオリジナルのソースを展開し、ベンダブランチに反映します。
アップグレードは衝突がおこる可能性があるので、この作業は
完全に自動化されてはいません。cvs-upgrade は衝突が発生した場合
に処理を中断しますので、その衝突を解決し、チェックしてから
新しいタグバージョンをつけてください。
そうしたら、自分の新しい変更部分を適用します。
これは以下のように行います:
もし作業ディレクトリを作っていないなら
$ cd /あなたの/ソースツリーが/置かれる場所
$ cvs checkout -jsource-dis:yesterday -jsource-dist <package>
$ cd /あなたの/ソースツリーが/置かれる場所/<package>
すでに作業ディレクトリがあるなら
$ cd /あなたの/ソースツリーが/置かれる場所/<package>
$ cvs update -jsource-dist:yesterday -jsource-dist
上のコマンドは <package> の最新のリビジョンを取り出し、
yesterday 以降ベンダブランチ 'source-dist' 上で行われた変更
をマージし作業ディレクトリにコピーします。マージ中に
衝突が発生した場合は、普通の方法で解決します。
その後変更したファイルが commit されます。
上記で推奨しているように日付を使うことは 1 日に 2 回
以上の import を行わないということを仮定しています。
もし、行うのならかわりに以下のように行うと良いでしょう。
$ cvs checkout -jupstream_version_<oldversion|tr . _> \
-jupstream_version_<newversion|tr . _> <package>
もしくは、作業ディレクトリで
$ cvs update -jupstream_version_<oldversion|tr . _> \
-jupstream_version_<newversion|tr . _>
この場合、上の二つのコマンドは同じ意味を持ちます。
ローカルで変更されていないファイルに対しては、新しく
作成されたリビジョンが見出しリビジョンになります。
ですから、全てのファイルを正しく更新されているか
チェックしてください。特に、debian/changelog ファイル
の変更するのを忘れないでください。
全てが満足いくようになったら、作業ディレクトリの前の
バージョンを削除しても構いません。きちんと正しい
ディレクトリを消しているのだということを確認しましょう!!
$ rm -rf ../<package>.old
8. ディスク節約のためのソースツリーの削除
実際のソースツリーを削除するのにまだ commit されていない
ローカルの変更があるかをチェックする CVS コマンドを使わずに
rm -rf するのはやめておいた方が良いです。
$ cd /あなたの/ソースツリーが/置かれる場所/<package>
$ cvs release -d <package>
9. 用語集
Tags リビジョンに対する名前
Repository ソースファイルの貯蔵庫
10 付録
A: CVS タグのしきたり
|======================================================================|
|Upstream Version | <version> |
|Debian Revision | <revision> |
|Orig tar file name | package_<version>.orig.tar.gz |
|Debian package name | package_<version>-<revision>_<arch>.deb |
|CVS Vendor tag | upstream_version_<version | tr . _> |
|CVS current tag | debian_version_<version-revision | tr . _> |
|======================================================================|
例:
|======================================================================|
| | upstream sources | Debian only package |
|======================================================================|
|Upstream Version | 2.76 | 3.38 |
|Debian Revision | 1.2 | |
|Orig tar file name | make_2.76.orig.tar.gz | |
|Debian package name | make_2.76-1.2_i386.deb | kpkg_3.38_i386.deb |
|CVS Vendor tag | upstream_version_2_76 | upstream_version_3_38 |
|CVS current tag | debian_version_2_76-1_2| debian_version_3_38 |
|======================================================================|
CVS タグ名を決定するのに epoch は無視されます(epoch は
パッケージの順番に対する dpkg の挙動を変更するもので
CVS タグには無関係です)。
B: ソースを導入するための以前の方法
ソースツリーを以下のコマンドを使って挿入します(すでにそれが
Debian 化されていて、orig.tar.gz が存在することを仮定します)。
-ko (バイナリファイルも管理するようにするオプション)を使って
上流ソースを import することに注意してください。あなたが行った
変更されているものではありません。CVS タグ名を決定するさいに
epoch は無視されます(epoch はパッケージの順番に対する dpkg
の挙動を変更するものでCVS タグには無関係です)。
CVS でないもので Debian 開発に使用しているソースツリー(つまり、
CVS へ導入しようとしている物、CVSROOT の下ではありません)を展開
しているディレクトリへ移動します。
もう 1 度言います: 以下で <package> は debian/changelog ファイルに
あるパッケージ名です。
$ cd /where/your/source/tree/resides/
$ tar zvvfx <package>_<version>.orig.tar.gz
$ cd <package>_<version>.orig
$ cvs import -ko -m 'Import of bare source' \
debian/<package> source-dist upstream_version_<version|tr . _>
ブランチタグの source-dist は好きなように変更して構いません。
(cvs-buildpackage メンテナがこのタグ名を利用しているだけです)
もし CVS を root として設定してあり、かつグループの書き込み
が許可されていない場合は $CVSROOT/debian/<package> を作成して
そのレポジトリの所有者を意図したユーザとグループに変更
する必要があります。CVS import は debian/<package> が作成でき
ないと警告してきますが問題ありません。
次に行うことはすべてのツリーを取り出して、あなたの変更点を
マージすることです。
$ cd /あなたの/ソースツリーが/置かれる場所/<package>
$ cvs checkout <package>
すでに debian 化したバージョンがあるのだがまだ CVS
を使っていないなら、これを実行する前に以下のコマンド
を実行してください。それが終わったら将来取り出せるよう
にリリースにタグをつけます。
$ cd /あなたの/ソースツリーが/置かれる場所/<package>
$ diff -qrBbw . /あなたの/ソースツリーが/置かれる場所/<package> -xvpf -
$ tar cf - $FILE_CHANGED_LOCALLY | \
tar -C /あなたの/ソースツリーが/置かれる場所/<package> -xvpf -
$ cd /あなたの/ソースツリーが/置かれる場所/<package>
debian/rules が実行可能であることを確認してください。
というのはこの方法はそれがエクスポートされたときに
実行され、そのエクスポート先のソース上で dpkg-buildpackage
の動作に問題が発生しないようにするためです。大抵の場合
、ファイルを CVS レポジトリに加える場合は全てのファイル
のパーミッションが正しくなっているか確認してください。
$ cd /あなたの/ソースツリーが/置かれる場所/<package>
$ cvs add debian <同様に他に加えるファイル>
また、レポジトリにおくファイルを手動で加える必要があります。
特に debian サブディレクトリにあるものは重要です。
cvs add コマンドは再帰的に動作しません。ですから、すべての
サブディレクトリで手動で add しなければなりません
(cd debian; cvs add *)。
良い方法を教えます。cvs update を実行することこのディレクトリの
状態を表示してくれます。
$ cd /あなたの/ソースツリーが/置かれる場所/<package>
$ cvs update
出力はこんな感じです。
cvs update: Updating .
M Makefile
cvs update: Updating debian
A rules
? example1
M は変更されている(commit しなければいけません)、A は加えられている
(commit しなければいけません)、? はこのファイルについて管理していない
(おそらく add コマンドを使う必要あり?)をそれぞれ意味します。
おかしな部分が無く、すべてのファイルがちゃんとしたパーミッションを
持っているなら commit できます。
$ cd /あなたの/ソースツリーが/置かれる場所/<package>
$ cvs commit -m 'Made all debian changes'
$ cvs tag debian_version_<version|tr . _>-<debian-revision|tr . _> .
新しいソースツリーはバージョンを持っていないディレクトリに
置かれます。後で見るようにこれは問題ありません。
かわりにもし debian ディレクトリをゼロから作るなら
(自動化は少ないのですが非常に単純です)
$ mkdir debian
必要な debian ファイルをすべて作ってソースコントロールに
加えます。
$ cvs add debian
$ cd debian
$ cvs add *
これであなたのファイルを含むことになります。
$ cd /あなたの/ソースツリーが/置かれる場所/<package>
$ cvs commit -m <some message>