Top / CygwinでCVSサーバーを立てる

CygwinでCVSサーバーを立てる

まずはCygwinのインストール

詳しい方法はhttp://www.docile.org/users/docile/cygwin/cygwin_inst.htmlらへんを参照してください。

http://www.cygwin.comからインストールプログラムを落としてきて、実行。 インストールプログラムは、ネット上から必要なモジュールを選択してインストールする仕様になっているので、NETカテゴリにあるinetutilsとDEVELにあるcvsを忘れずにチェックしておく。

初期設定

環境変数でCygwinのインストールフォルダにPATHを通しておく。

  • PATHを通すのは「インストールフォルダ/bin」のようです。
  • 2000/XPでinetdをサービス化する場合は要マシン再起動 (PATHの変更を反映するため)

Win9xならautoexec.batを編集。 2000/XPは「コントロールパネル」-「システム」の詳細タブから環境変数。

$ mkpasswd -l > /etc/passwd
$ mkgroup -l > /etc/group
$ /usr/bin/iu-config

順にパスワードの設定、グループの設定、/etc/inetd.confの作成。
最後の一行はこんな質問がくる。全部yesでいいと思う。

Overwrite existing /etc/ftpusers file? (yes/no) yes
Creating default /etc/ftpusers file
Overwrite existing /etc/ftpwelcome file? (yes/no) yes
Creating default /etc/ftpwelcome file
Overwrite existing /etc/inetd.conf file? (yes/no) yes
Creating default /etc/inetd.conf file
Overwrite existing /etc/motd file? (yes/no) yes
Creating default /etc/motd file
Overwrite existing /etc/shells file? (yes/no) yes
Creating default /etc/shells file

ちなみにオプションで

Options:
   --debug  -d     Enable shell's debug output.
   --yes    -y     Answer all questions with "yes" automatically.
   --no     -n     Answer all questions with "no" automatically.

とある。全部yesなら「-y」をつけると少し幸せになれるかも。

inetdの起動

2種類やり方が選べます。

サービスとして起動する。(2000/XP向け)

$ /usr/sbin/inetd --install-as-service((サービスから消したいときはinetd --remove-as-service))

その後、「管理ツール」−[サービス]のCYGWIN inetdを起動する。*1*2*3

スタートアップに登録する。(9x向け)

inetd が C:\cygwin\usr\sbin\inetd.exe にあるとする。 inetd.exe のショートカットを作成し、ショートカットのプロパティのリンク先を 'C:\cygwin\usr\sbin\inetd.exe -d' と、オプション '-d' を付け加える。

スタートアップフォルダに追加する。

確認

適当にtelnetでもしてみて下さい。

CVSの設定

初期設定

まずは、レポジトリのルートディレクトリを決める。 今回はとりあえず、/var/cvsとして話を進める。

$ export CVSROOT=/var/cvs((当然~/.bashrcあたりに記述しておいてもかまいません。))
$ mkdir /var/cvs
$ cvs init

パスワードの作成

$CVSROOT/CVSROOT/passwdに

ユーザー名:暗号化されたパスワード

といったリストを記述する。

パスワードの暗号化はcryptコマンドを用いる。

例えば、ユーザー名が「hoge」、パスワードが「piyopiyo」なら

echo -n "hoge:" >> $CVSROOT/CVSROOT/passwd
crypt Zz piyopiyo >> $CVSROOT/CVSROOT/passwd

「Zz」は任意のアルファベット2文字。(ランダムで作った方がいいのですけどね・・・)

このときユーザー名は初期設定の時に登録してあるユーザー名を使わないとinetdにつっぱなれるらしいので、注意。とりあえずは、すでにある自分のユーザーアカウントを使うのが安全。(cvsanoyを作りたかったら、同名のユーザーを登録して、ユーザーグループを分けた後にパーミッションを区切らないといけないと言うことですね。) 2003-01-24追記

passwdファイルの改行コードはLFになるように設定してください。CRLFで保存してしまうとうまくユーザの認識をしてくれません。つまり、passwdファイルには下記のような形でユーザ名を保存しなければ、EclipseのCVSの認証で、no such userというエラーではじかれてしまいます。2003-02-03 追記

<任意のユーザ名>:<暗号化したパスワード>:<Windowsのユーザ名>[LF]

passwdファイルの例は下記のとおり

Administrator::Administrator[LF]
hoge:ZzEpcdUPaSLTs:Administrator[LF]
[EOF]

サーバー関係の設定

%WINDOWS%/system32/drivers/etc/servicesに以下の1行を追加。(%WINDOWS%はWindowsをインストールしたディレクトリ。)

cvspserver 2401/tcp

次に/etc/inetd.confに以下の1行を追加。

cvspserver stream tcp nowait root /bin/cvs cvs --allow-root=/var/cvs pserver

その後、inetdを再起動すれば、とりあえずpserverが動いているはず。

inetdのかわりにxinetdを使う場合の設定

サーバ関係の設定として、CVSラッパを記述する必要があります。 ディレクトリ /etc/xinetd.d の下に cvspserver という名前のファイルを作り、次のように書いてください。

 service cvspserver
 {
     socket_type  =  stream
     user  =  SYSTEM
     wait  =  no
     server  =  /usr/bin/cvs
     server_args  =  -f  --allow-root=/var/cvs  pserver
 }

コマンド行から

 $ cvs -d :pserver:hoge@localhost:/var/cvs login (※ hoge はログインユーザ名)

として、接続拒否などが起こらないようでしたらOKです。 (確認ができたら

   $ cvs -d :pserver:hoge@localhost:/var/cvs logout

として、一旦、CVSサーバからログアウトしておきましょう。) この節、2003-07-23 追記 by はじめ

eclipseでCVSを使う

CVSの利用を見て下さい。

基本的には以下のような感じ

cygwinCvsLocalhost.png

最も単純な cvsweb のインストール・実行方法

  • cygwin 上の Apache をインストールします。"$ apachectl start" で ウェブサーバが動作するか確認します。
  • cvsweb-?.?.?.tar.gz の中にある cvsweb.cgi, cvsweb.conf を Apache の cgi-bin(cgi の実行可能なディレクトリ。cygwin での標準は /var/www/cgi-bin)にコピーします。
  • CVS Root のディレクトリの位置を設定します。cvsweb.conf の 以下の行を編集します。(/var/cvs に CVS リポシトジが格納されている場合の例)
 @CVSrepositories = (
   'local'   => ['Local Repository', '/var/cvs'],
  • cvsweb-?.?.?.tar.gz の中にある icons/ のファイルを、HTTPサーバで使われるアイコン表示のための画像を格納するディレクトリ(cygwin の標準では /var/www/icons)へコピーします。

(リポシトジに格納されたファイルを閲覧する際、セキュリティの関係で chdir がうまくいかない、という主旨のメッセージが出る Perl 拡張ライブラリのバージョンがあります。その際は、cvsweb.cgi の先頭の行の Perl の起動オプションに「U(危険な動作の警告を解除する)」を付けます。)

  #!/usr/bin/perl -wTU

cygwin の Apache をサービスとして追加する

  • /etc/apache/httpd.conf のユーザ、グループのエントリを変更します。
  User Guest
  Group Guests
  • /usr/sbin/apachectl start でウェブサーバが動作することを確認します。
  • 以下のコマンドでサービスを登録します
  $ cygrunsrv --install cygwin_apache \
    --path /usr/sbin/httpd \
    --args -F \
    --env "CYGWIN=ntsec nosmbntsec binmode tty"
  • サービスを起動します。
  $ net start cygwin_apache

その他

不足していると思ったことを書き足してあげて下さい。 とりあえずは

  • cvswrapperのこと。
  • sshでポートフォワーディング。

くらいでしょうかね?

ネットワーク越しに使うならばhosts.allowの設定も書いておいた方がよさそうですよね。

コメント

  • 睦月?さん、ありがとうございます。 -- mizkaz 2002-12-16 (月) 12:14:07
  • いえいえ、卒論からの逃避ですから。とはいえ、こうやって情報をどんどんshareしていけるのがWikiの強みですからね、どんどん発展していって欲しいモノです。 -- 睦月? 2002-12-16 (月) 13:26:30
  • 初期設定の部分書いてみました。怪しかったら修正してください。 -- ここのファン? 2002-12-16 (月) 23:05:36
  • いろいろ忙しくてちょっと見ていない間に、こんなにCVS周りのことが書かれていて、またもやWikiに感動です。いまは初級者ゆえなにも情報提供できませんが、いつかはサイトに貢献したいと思います。これからもよろしくお願いします。 -- tpircs 2002-12-18 (水) 21:42:29
  • ついでに、Apache + cvsweb の構築方法も載せましょうか? -- HN 2002-12-28 (土) 10:04:39
  • CVS for NT のが楽? http://www.cvsnt.org knjwrp ないけど -- holic? 2003-01-09 (木) 05:17:02
  • CVSNT 1.11.3-65 と Eclipse 2.0.2 だと maprepo も含めて、一応動いているんですけどね。 -- holic? 2003-01-09 (木) 05:25:52
  • 私の環境だと同期も何もうまく動かないで、ただただコミットすることしかできませんでしたので。Eclipse2.0なせいかもしれませんが。公式にサポートしていないようですしね。 -- 睦月? 2003-01-10 (金) 11:03:42
  • 上記の設定はうまくいったのですが、いざeclipseでリポジトリーを設定しようとするとユーザ名かパスワードが間違っていますといわれます。passwdファイルのなかにユーザ名と暗号化されたパスワードもあるのですが・・・・。どなたか解決策ご存知ではないでしょうか? -- hate? 2003-01-21 (火) 18:30:44
  • CVSROOT」って言う表現は「環境変数CVSROOTが指し示すディレクトリ」であって、「CVSROOTと言う名前のディレクトリ」ではありません・・・、ってこと位しかこの文章ではまるところは見あたらないなぁ。ユーザー認証まで行ってるんだから、サーバーは正しく動作しているって事ですしねぇ。 -- 睦月? 2003-01-24 (金) 02:30:42
  • inetdはUNIXのユーザを利用するのでcvsに作成したユーザと同じユーザが必要になります。上の方法ですとローカルユーザと同じユーザをcvsに作成するとログインできるはずです。(ドメイン環境ではまりました。) -- nys? 2003-01-24 (金) 09:12:37
  • ユーザー名か。当たり前すぎて書くの忘れていましたね。書き足しときましょう。 -- 睦月? 2003-01-24 (金) 19:59:42
  • 素人な質問で申し訳ないですが、passwdファイルの改行コードって重要ですか?私もhateさんと同じようにユーザの認識ができなかったのですが、「Administrator:<改行><EOF>」と言う内容から「Administrator:<EOF>」にしたら突然EclipseのCVSが認識するようになりました -- shigek? 2003-01-26 (日) 11:41:40
  • CVSNTについてWSADでは動いている見たいですよ。参考までに。「WSADでのCVSの利用」 -- shigek? 2003-01-26 (日) 11:45:14
  • passwdファイルの改行コードについて追記しました。よくよく考えると当たり前のことかもしれないですが。 -- shigek? 2003-02-03 (月) 13:18:38
  • mkpasswd,mkgroupに"-d"オプションを指定するとドメインのユーザが追加できるようです。(うちの環境ではできてませんが) -- nys? 2003-02-04 (火) 09:50:29
  • inetd が「要求に応答しない」とか言ってサービスで起動しなかったんですが、サービスをAdministratorユーザーで開始させるようにすると動きました。謎です。 -- twk? 2003-03-28 (金) 01:41:00
  • cvswebってRCS -- hello? 2003-05-21 (水) 17:07:52
  • 間違えたっす。cvswebをcygwinのapacheで動かそうと試みていたのですが、ずっとエラーがでて困っていました。が、先程rtagが入っていないせいと判明。RCSをインストールしたところ無事動きました。 -- hello? 2003-05-21 (水) 17:16:09
    • 私の環境でもrcsが入っていないとcvswebのchdirでエラーがでました。Develのrcsをインストールし、perlのUオプションを追加することで解決できました。 -- sari? 2004-01-12 (月) 17:26:16
  • どうも上と同じくinetdサービスがうまく立ち上がらなかったけど、cygwin1.dllをC:\cygwin\usr\sbinにコピーしたらOKだたよ。 -- ahya? 2003-05-30 (金) 16:26:01
  • cygwin1.dllへのパスを追加した後、rebootする必要があるみたいです。Win2000で確認。 -- takora? 2003-07-01 (火) 13:07:02
  • 有意義なページをありがとうございます。たすかりました。それで、えっと…、「inetdのかわりにxinetdを使う場合の設定」を追加しちゃいました。突然かつ勝手で恐縮です。間違いなどあったら訂正など、よろしくお願いします。 -- はじめ? 2003-07-23 (水) 22:01:52
  • この頁をみてcygwinでCVSを実行していますが、binaryファイル(.jar, .war, .doc, .xls など)を登録して新規で読込むと”0a ⇒ 0d0a”に化けて,しまいます。eclipseの表示ではバイナリになっているのですが、どなたか分かりましたら教えてください。 -- hiroiki? 2003-10-10 (金) 10:58:08
  • なぜか分かりませんが cygwin の旧バージョンで CVSのバージョンが 1.11 をインストールするとバイナリーも問題なく読み書きできました?わかる方いましたら教えてください。 -- hiroiki? 2003-10-18 (土) 19:08:29
  • Extの接続メソッドっていじる必要があるときありますか??ここを参考にしてCygwinでCVSサーバーを立てたんですけど、ホスト名がlocalhostや127.0.0.1とかだと無事つかえるのですが グローバルなIPに設定するとチェックアウトはできるけどコミットの際にタイムアウトになってしまいます(xx -- Kazuki? 2003-10-21 (火) 00:39:06
  • cygwinでCVSを実行しているのですが、CVSに日本語名のファイルをcommitすると文字化けします。どなたか解決方法をご存知でしたら教えてください。ドキュメントの管理なんかもCVSでやってみよう(今はソース管理のみですので・・・)と考えているのですが、文字化けで行き詰まってしまいました。。 -- deku? 2003-12-08 (月) 11:22:57
  • cygwinのインストールで"JustMe?"でインストールするとinetdをサービスで起動する時に"/etc/inetd.confがない"というエラーになり、telnet等が出来ませんでした。"AllUsers?"でインストールしなおすとうまくいきました。ちょっとハマりました。。。 -- sari? 2004-01-11 (日) 01:06:22
  • cvsweb(cygwin_apache)をサービスにて起動すると、"Operation not permitted"とエラーが出て起動できませんでしたが、/var/log/apache以下のログファイルに書き込み権限を追加することにより起動できるようになりました。(e.g. chmod 666 /var/log/apache/*_log) -- sari? 2004-01-13 (火) 00:31:54
  • 試行錯誤して、ようやくcvsweb + CvsGraph?環境を構築することが出来ました。CvsGraph?はWin向けのバイナリも配布されていますが、私のcygwin環境ではうまく動かず、コンパイルしたバイナリで動かすことが出来ました。ただ、CvsGraph?を動かす為のPHP部分で日本語が文字化けしてしまうので、Graphを表示した後Graphを選択してcvswebへリンクする部分はうまくいきませんでした(日本語でなければ動作しています)。 -- sari? 2004-01-26 (月) 00:59:08
  • 今CygwinでCVSを実行しようとしているのですが、「ロケーションの検査中にエラー:"入出力例外が発生しました:接続が拒否されました" このロケーションを使用しますか?」というエラーが出て、上手く接続できません。だれかご存知の方いらっしゃいませんか? -- 社長? 2004-03-09 (火) 18:05:14
    • それよく出るよ。まずはcygwinのcvs(サーバでなくコマンド)で接続できるか確認してみて。 -- 2004-03-09 (火) 20:17:20
  • 返信ありがとうございます。コマンドで確認というのはtelnetなどを起動したりしてinetd.exeが起動できるかどうか確かめるということでしょうか? -- 社長? 2004-03-09 (火) 20:54:03
  • 具体的にどうやるかなんてことはどうでもよくて、全体の構成のうち、どこまでできてて、どこができていないのかを切り分けることが重要です。まずは問題解決のプランを考えてくださいませ。そうすればおのずと確認方法は絞られます。話はそれから。 -- 2004-03-10 (水) 11:40:30
  • サービスをスタートアップに登録が面倒なら、/usr/sbin/inetd --install-as-service でサービスに登録しておくと便利ってみんな知ってるから書いてないのか・・・ -- 菩薩? 2004-03-10 (水) 16:00:24
  • ついでに言うと、$CVSROOT=/var/cvs の場合、eclipseからコミットするフォルダにcvsがあったら、うまくコミット出来なかった。 -- 菩薩? 2004-03-10 (水) 16:02:38
  • cygwinのcvsにEclipseから日本語のディレクトリ、ファイルがコミットできません。解決された方見えますか? -- yan? 2004-07-16 (金) 08:49:33
  • inetdサービスが開始できませんでしたが、cygwin1.dllを→http://www.jaist.ac.jp/~fujieda/cygwin/snapshot.shtmlリンクから落としてcygwin1.dllにリネーム、cygwinディレクトリの/usr/sbinにいれたらいけました。WinXPSP2。 -- Suga? 2004-10-09 (土) 14:40:40
  • cvswebでcvsweb.cgiを動かすときに100行めあたりでコンパイルできないというエラーが発生しました。ログを見たところ、PerlのモジュールでIPC::RunとURIが必要でした。みなさん何も書いてないけど、こいつらは最初からcygwinのライブラリに入ってましたか?結局私は手動でtar.gzを入手してmakeインストールしました・・・。 -- 2004-10-17 (日) 21:43:09
  • CVSサーバで複数ファイルをコミットしたとき、コミットしたファイルの一覧を出すことはできないのでしょうか?コミットの確認作業を1ファイルずつ同期して確認しているのですが、手間が大きいので・・・ -- ii? 2004-11-26 (金) 15:22:28

taro

  • CVS -- 2005-01-25 (火) 09:45:05
  • $ /usr/bin/iu-config のコマンドがとおらないと思ったらiu-config は/bin の下にいました。単なる勘違い?最新だと違うの?初心者なので悩んでしまいました -- 若葉マーク? 2005-05-13 16:50:11 (金)
  • ドメインユーザでログインしてEclipse > CVSリポジトリーの追加をしたら、「ロケーションの検査中にエラー:"入出力例外 no such system user" このロケーションを使用しますか?」なるエラーがでてました。cygwinの初期設定の[$ mkpasswd -l > /etc/passwd]を-dでドメインユーザ登録する必要があったんですね。 -- 若葉マーク? 2005-05-17 17:32:22 (火)
  • ドメインユーザでログインしてEclipse > CVSリポジトリーの追加をしたら、「ロケーションの検査中にエラー:"入出力例外 no such system user" このロケーションを使用しますか?」なるエラーがでてました。cygwinの初期設定の[$ mkpasswd -l > /etc/passwd]を-dでドメインユーザ登録する必要があったんですね。 -- 若葉マーク? 2005-05-17 17:39:24 (火)
  • xinetdでやってみようとして結構ハマりました。注意点をここに追記しようかと思ったのですが、長くなってしまったので自分のブログに書きましたので、困っている方はよろしければご参照ください。 http://d.hatena.ne.jp/dojum/20050608 -- どーじゅ? 2005-06-08 14:01:52 (水)
  • initgroups -- 2005-07-20 15:49:07 (水)
  • 今更の情報ですが、3.1からCVSNTが正式サポートされています。http://download.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/eclipse-news-part1c.html -- まるじゅん? 2005-10-21 14:56:01 (金)
  • EclipseのCVSクライアントからCVSリポジトリの追加を行ったところ、「IO例外が発生しました:接続が拒否されました:setuid failed:No such process ロケーションを保持しますか?」というメッセージが表示され、アクセスできません。Cygwin Bash Shellからはcvsへログインできているので、pserverが原因かと思い調査しているのですが解決方法が見当たりません。どなたか解決方法をご存知の方いらっしゃいますか。 -- たつや@初心者? 2005-12-05 20:30:08 (月)
  • Eclipseからもコマンド("csv -d :pserver:…/var/csv/ login")でもログインはできていると思うのですが、HEADやプロジェクトの共有をしようとすると「cannot mkdir /tmp/cvs-serv」っと。Pathは通してて、cvsに関連付けたWindowsユーザの読み書き権限があるのでなぜ・・・ハマッちゃってます。cygwin上の設定ミス?どなたか助言をよろしくお願いしますー -- じゅてー@初級? 2006-02-02 04:35:50 (木)
    • もしサービスで起動しているなら、cvsのプロセスやその親プロセス(inetd or xietd)のユーザ(通常はSYSTEM、のはず)に対して、/tmp 書き込み許可を与えてますか? ls -ld /tmp; getfacl /tmp; ls -ld /; getfacl / で確かめてみるとよいかと。 -- asd? 2006-02-03 15:49:15 (金)
  • 私もじゅてーさんと同じ症状です。chmodとかしてみましたが変わらずです。同じ環境で半年ほど前やったときはうまくいっていたのでバージョンのせいでしょうかね。 -- ロイヤル? 2006-02-06 00:42:17 (月)
  • じゅてーさん、ロイヤルさん、と同じ現象の経験あります。Cygwin setupでBaseのcygwinパッケージのバージョンを1.5.19から1.5.18に戻したら解消しました。根本的な解決策ではないかもしれませんが、ご参考までに。 -- 初級++程度? 2006-02-06 10:01:12 (月)
  • 私もはまっています。1.11.17-1 と 1.11.21-1 でダメでした。http://www.cygwin.com/ml/cygwin/2006-02/msg00166.html -- ym? 2006-02-08 06:46:49 (水)
  • cygwin1-20060206.dll と cvs-1.11.21-1 の組み合わせで現在 mkdir() のエラーが出なくなった事を確認しました。 -- ym? 2006-02-08 07:17:25 (水)
  • cvsのソースをインストールして、/usr/src/cvs-1.11.21/src/server.c の1007,1008行をコメントにし、通常のコンパイル・インストール(./configure -> make -> make install) で直りました! -- aqua? 2006-04-08 06:33:39 (土)
  • 上のはだめでした。かわりに問題のstrcat二行を if(strcmp(dir,".")!=0) で囲ったら今のところうまく動いてます。 -- aqua? 2006-04-08 07:39:01 (土)
  • cnapshotsを当ててみても変わらないので書き込み許可がないのかと思えてきました。しかし、ls -ld /tmp; getfacl /tmp; ls -ld /; getfacl /実行後どのようにしていけばよいかわかりません。ご助言をいただけないでしょうか. -- came? 2006-05-10 19:55:58 (水)
  • 書き込み権限などの問題では無く、cygwin側のmkdir()no -- skoyama? 2006-05-17 18:46:43 (水)
  • 書き込み権限などの問題では無く、cygwin側のmkdir()の問題ですね。cygwin側にpatchを当てる(http://cygwin.com/ml/cygwin-cvs/2005-q3/msg00224.html)か、aquaさんのようにcvs側を修正するかのどちらかでしょう。 -- skoyama? 2006-05-17 18:49:11 (水)
  • どういうわけかcygwinでlocalhostが壊れていることがあります。cygwin上のcvsではそれでもなぜかつながってしまうのでした。eclipseだけおかしくなるのでしばらく悩んでました。 -- 初心者? 2009-05-02 (土) 11:16:45


*1 net start inetdの方が楽ですかね?
*2 サービス起動時に cygXXX.dll が見つからないというエラーが出たら、Path に cygwin/bin を追加してリブートしたらOKでした。
*3 net start inetdしたときに「サービスが開始できません」と言われたので、コメントを参考に/bin/cygwin1.dllを/usr/sbin/cygwin1.dllへコピーして、再度net start inetdしたら動きました。Windows XP + SP2です

添付ファイル: filecygwinCvsLocalhost.png 3309件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-03-17 (水) 10:49:37 (135d)