[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [予約] cvs-buildpackage/HOWTO.gz



佐野@浜松です。

In article <200006050201.LAA19285@xxxxxxxxxxxxxxxxxxxxxxxxxx>,
  at "Mon, 5 Jun 2000 11:02:31 +0900',
   with "Re: [予約] cvs-buildpackage/HOWTO.gz",
 Hiroshi KISE <fuyuneko@xxxxxxxxxxxx> さん writes:

> まだ手をつけていません(^_^;)。問題なければ流していただけますか?

了解。では。 

In article <14117.58691.473212.72159A@xxxxxxxxxxxxxxxxxx>
 Masato Taruishi <taru@debian.or.jp> writes:

> 樽石です。
> 
> 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>

更新、よろしくお願いします (> 喜瀬さん)

翻訳文、サンキュです (> 樽石さん) 自分で実際に使ったことはまだ無いですが、
そのうち使ってみようと思って保存してありました。

-- 
     # (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
    <kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)