• 締切済み

Subversionでエラー

Subversionで 「svn: リポジトリは恒久的に 'http://localhost/svn/4514/' へ移動しました。relocate (参照 URL の変更) を実行してください」 というエラーが発生します。 OSはUbuntu 11.10です。LAMPP(XAMPP)を使っています。 Subversion自体は正常にインストールできたようです。 Subversion自体は/home/username/svnの下ではちゃんとaddとcommitが動きました。 設定には↓のサイトを参考にしました。 http://blog.riywo.com/2008/04/01/054421 ただ、それをhttp://localhost/svn/4514/の下でブラウザから動かしたいんです。 /opt/lampp/etc/httpd.confには DocumentRoot "/opt/lampp/htdocs" としてあります。ですから、/opt/lampp/htdocsがlocalhostです。 /opt/lampp/htdocs/svn/ というディレクトリを作成し、その下で sudo svnadmin create 4514 sudo chown -R www-data.www-data 4514/ sudo chmod 777 4514/ を実行しました。 http://localhost/svn/4514/にはブラウザから問題なくアクセスでき、ファイルの内容を見ることができます。 sudo vim /etc/apache2/mods-enabled/dav_svn.conf で以下のように編集しました: <location /svn> DAV svn # SVNParentPath "/home/username/svn" ←これがadd/commitが動いたディレクトリです SVNParentPath "/opt/lampp/htdocs/svn" # SVNParentPath "/opt/lampp/htdocs/svnrepository" </location> /home/username/sagyou/source の下には"Hello World!"と書かれたfirst.txtというファイルが作ってあります。 これで svn import ~/sagyou/source http://localhost/svn/4514/ -m "first import" と実行すれば、/4514の下に~/sagyou/source/first.txtがコピーされるはずなんですが、 「svn: リポジトリは恒久的に 'http://localhost/svn/4514/' へ移動しました。relocate (参照 URL の変更) を実行してください」 というエラーが発生します。 このエラーに関するサイトを10個は読んだのですが、まったく意味が分かりません(具体的な例が分かりません)。特に↓ここです: http://www.hinet.mydns.jp/tdiary/?date=20050317#p02 SVNParentPath "/opt/lampp/htdocs/svnrepository"に変えてみても同じです。 ちなみに、DocumentRootは変えたくありません、既にその下にPHPのファイルなどを入れているからです。 もう昨日からずっとやっているのに解決できません。でも、あと一歩のような気がします。必要であれば補足します。試してほしい操作があればやります。どんな小さなヒントでもいいので、どうかお助けください。お願いします。

みんなの回答

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.6

>まず、コピーしないといけなかったんですね(参考にしたサイトには書いてありませんでした)。 パッケージでインストールしたものをそのまま使用している場合は… 特に明記はしないでしょうね。 規定された場所にファイルが配置されますから。 >/opt/lampp/logs/error_logには >[Sun Dec 11 21:57:57 2011] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/svn >とだけ書かれ、 mod_dav_svnがアクセスしていなかった為…でしょう。 モジュールはコピーされたようなので、lamppを再起動で動いてくれる…かと思われます。 # apacheのバージョン不整合とかでコピーしたモジュールがコケなければ…ですが。 >sudo apt-get install subversion subversion-tool libapache2-svn >をそのまま実行しました。何もエラーは出ませんでした。 Ubuntuのパッケージを使用…ということですね。 relocateがコマンドかのように受け取れたので、1.7.xかと勘違いしました。 # 1.6.xだとsvn switch --relocate のようでしたので。 >httpやsvnというのは設定しないといけないんですね。 勿論、設定が必要です。 使用するプロトコルなどで設定方法は異なることになりますが……。 >svnserveが一番簡単で自分のニーズに合っているようなので >これで設定してみます。 apacheのことを考慮しなくて済むので簡単と言えば簡単です。 # 私自身がSubversionサーバを構築する時もこちらを選択してます。 が…OS起動時に自動起動するように設定するのが、Debian系では少々手間かもしれません。 # Redhat系だと、起動用のスクリプトがパッケージに入っているんですが… 「svnserve Ubuntu 起動スクリプト」辺りで検索すると、公開(?)している人が居るでしょう。 xinetd経由でのアクセスでしたら「svnserve Ubuntu xinetd」辺りで検索を。 # ウチのサーバは前回書いた通りxinetd経由にしています。 http://www.amazon.co.jp/dp/4798013730 http://www.amazon.co.jp/dp/4774142468 http://www.amazon.co.jp/dp/4873114144 等の書籍に、サーバ構築について載っていた…かと。 バージョンなどについて微妙に古かったり…とかあったりしますが…… まぁ、構築関係ではそれほど変わらないので大丈夫でしょう。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.5

>Object not found! >要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 mod_dav_svn.soとmod_authz_svn.soは正常に読み込まれていますか? apacheのログにはなにかエラーとか記録されていませんか? # ちなみに…私のリポジトリだとapacheからのアクセス権設定していないのでダメだった…かも知れず。 Subversionは独自ビルド(1.7.xをソースからビルド)っぽいですが、必要なモジュールをちゃんとコピーできていますか? # ディストリビューションのパッケージ使わない場合は、ここらへんは「全て自分で面倒をみる」必要がありますが。 >※他にも >http://localhost/svn/4514/ URLはこちらになる…ハズです。 ので、こちらでアクセスしたときのapacheのログを確認して下さい。 >svn info svn://localhost/ >svn: ホスト 'localhost' に接続できません: 接続を拒否されました >svn info svn://localhost/svn/ >svn: ホスト 'localhost' に接続できません: 接続を拒否されました SVNプロトコルでアクセスできるようにしていなければ反応しないのは当たり前です。 現状では未設定でしょう? HTTPプロトコルではなく、SVNプロトコルでやっていく…というのであれば、設定することになるかと思われますが。 # なお、外部ネットワークからアクセスするならそれなりの設定が必要になります。 # HTTPでもそれなりの設定は必要でしょうが、検索で簡単に見つかるでしょうしねぇ。

kicker
質問者

お礼

毎度ありがとうございます。 > mod_dav_svn.soとmod_authz_svn.soは正常に読み込まれていますか? 読み込まれていなかったようです。 まず、コピーしないといけなかったんですね(参考にしたサイトには書いてありませんでした)。 cd /usr/lib/apache2/modules sudo cp -p mod_dav_svn.so /opt/lampp/modules/ sudo cp -p mod_aut /opt/lampp/modules/ /opt/lampp/etc/httpd.conf -------------------------------------------------- LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so -------------------------------------------------- ↑こういう行はなかったので、自分で追加書き込みしました。 > apacheのログにはなにかエラーとか記録されていませんか? ブラウザで http://localhost/svn/4514/ にアクセスしたとき、/opt/lampp/logs/error_logには [Sun Dec 11 21:57:57 2011] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/svn とだけ書かれ、 /opt/lampp/logs/access_logには 127.0.0.1 - - [11/Dec/2011:21:57:57 +0900] "GET /svn/4514/ HTTP/1.1" 404 1261 とだけ書かれます。 > Subversionは独自ビルド(1.7.xをソースからビルド)っぽいですが、必要なモジュールをちゃんとコピーできていますか? インストールは http://blog.riywo.com/2008/04/01/054421に書かれている sudo apt-get install subversion subversion-tool libapache2-svn をそのまま実行しました。何もエラーは出ませんでした。 それ以上のことは自分には分かりません。 /home/username/svn/testの直下ではsvnは正常に動きましたので、 その程度までは間違っていないはずです。 ここまでで何か間違いやお気付きの点などはありますか? 今やっと気付いたんですけど、httpやsvnというのは設定しないといけないんですね。 http://blog.riywo.com/2008/04/01/054421 の最後の「インターネット経由でバージョン管理」には 簡単に設定できるように書いていたので信じ込んでいました。 http://svnbook.red-bean.com/nightly/en/svn.serverconfig.choosing.html を読むと、svnserveが一番簡単で自分のニーズに合っているようなので これで設定してみます。ただ、少し時間が掛かります。しばらくお待ちください。m(__)m

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.4

>残念ながら、そのような「test - Revision 0: -」というのは見えません。その代わりに(そのconfディレクトリだとかformatファイルとかの)ファイルやディレクトリが見えます: ソレはSVN使わずにapacheがディレクトリを表示しているだけです。 よって、Subversionでアクセスすることはできません。=Subversionのリポジトリとして使えていません。 # SubversionのHTTPプロトコルで必要とするレスポンスヘッダなどがありません。 >例えば、localhostの直下にindex.htmlを置いておきますと、ブラウザでlocalhostにアクセスしたときに(他にどんなファイルが置いてあろうと)自動的にindex.htmlが実行されますよね? index.tmlかどうか…はWebサーバの設定によりますが…。 設定によっては、今回のようにファイルやディレクトリが見える。 という状態になります。 # 公開サーバならセキュリティ的にダメダメな設定…ということになりますが。 # パスワードファイルとかアクセスできたら、セキュリティとしてどうか?ということになりますわな。 >では、今回のように/svn/4514/の直下ではどんなファイルが自動的に実行されるのでしょうか? ファイルやディレクトリが見えます。 が…期待する動作(HTTPプロトコルでのリポジトリアクセス)では、そのようには見えません。 mod_dav_svnがリポジトリにアクセスしてHTTPプロトコルで必要なデータを返します。 それが「Revision 0:」とか「Powered by Subversion」等の表示になります。 今回は設定の問題から「mod_dav_svnがリポジトリにアクセスして『いません』」。 よってディレクトリとか見えています。 # mod_dav_svnが介在していないのですから、apacheが「index.htmlなどの無いディレクトリにアクセスした場合」の動作によりリストが見えています。 対処方法については…回答No.2で掲示したつもりですが…試していないということでしょうか? 「mod_dav_svnがアクセスするから、リポジトリのディレクトリをDocumentRoot配下に置いちゃダメよ。」ってのが回答No.2のリンク先に書かれていること…かと。 # 実際にはちょっと違いますけどね… が、リポジトリのディレクトリをそのように見させる意味がありませんので…。 # 後述の私みたいなディレクトリ構成で…パスワードファイル持って行かれたらリポジトリを勝手にいじり回せますし。 # リポジトリに登録してあるファイルを削除されたり、ソース書き換えてバックドア仕掛けるコードに改変してみたり、システムドライブをフォーマットするコードを追加してみたり… ウチの自宅サーバのリポジトリは…HTTPプロトコルは使っていないので、apacheには設定していませんが… 設定する場合は下記のようになりますかね。(CentOS5.7+標準パッケージのapache+独自ビルドのSubversion 1.6.17) LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn>  DAV svn  SVNParentPath /var/svn/repo  AuthType Basic  AuthUserFile /var/svn/repo/passwd  Require valid-user </Location> 記述の通り、リポジトリは/var/svn/reopディレクトリの下にあります。 # DocumentRootは/var/www/html [root@localhost ~]# ls -lh /var/svn/repo/ 合計 112K drwxr-xr-x 3 svn svn 4.0K 7月 7 2010 Arduino drwxr-xr-x 6 svn svn 4.0K 12月 5 2008 *******Check -rw-r--r-- 1 svn svn 229 8月 16 2008 README.txt drwxr-xr-x 6 svn svn 4.0K 8月 16 2008 *****Plugins drwxr-xr-x 5 svn svn 4.0K 3月 17 2010 WindowsMobile drwxr-xr-x 2 svn svn 4.0K 8月 16 2008 conf drwxrwsr-x 6 svn svn 4.0K 8月 16 2008 db -r--r--r-- 1 svn svn 2 8月 16 2008 format drwxr-xr-x 2 svn svn 4.0K 8月 16 2008 hooks drwxr-xr-x 2 svn svn 4.0K 8月 16 2008 locks -rw-r--r-- 1 svn svn 331 8月 16 2008 passwd drwxr-xr-x 6 svn svn 4.0K 8月 17 2008 test drwxrwxr-x 6 svn svn 4.0K 9月 13 2008 tractest drwxr-xr-x 6 svn svn 4.0K 8月 16 2008 webpages [root@localhost ~]# # 一部ディレクトリはマスクしてみたり。 /var/svn/repoもリポジトリとして初期化(ただし未使用)しているので、README.txtやconf、db、format、hook、lockなどがあったりします。 http://localhost/svn/ でアクセスすると、このリポジトリが見える……かなぁ? svn://localhost/ した時の対策用でもあります。 # xinetdで、-i -r /var/svn/repoしています。 まぁ、/var/sv/repoをリポジトリとしておく必要は全くありません。(上記のようなアクセスされたところでエラーになるだけ) ちなみにpasswdはリポジトリにアクセスする際のパスワードファイル。 testリポジトリとtractestリポジトリは…テスト用に作成して放置されてます。 WindowsMobileとか一部のものはさらに下にディレクトリ掘ってリポジトリになっていたりします。 [user@localhost ~]$ svn info svn://localhost/ パス: localhost URL: svn://localhost リポジトリのルート: svn://localhost リポジトリ UUID: 7f484af5-bac0-4fbc-a8fd-05759f217137 リビジョン: 0 ノード種別: ディレクトリ 最終変更リビジョン: 0 最終変更日時: 2008-08-16 08:31:40 +0900 (土, 16 8月 2008) [user@localhost ~]$ svn info svn://localhost/*****Plugins パス: *****Plugins URL: svn://localhost/*****Plugins リポジトリのルート: svn://localhost/*****Plugins リポジトリ UUID: 01fa27c9-b72b-0410-9b9b-bdb7994653d0 リビジョン: 84 ノード種別: ディレクトリ 最終変更者: user 最終変更リビジョン: 84 最終変更日時: 2010-12-03 22:49:20 +0900 (金, 03 12月 2010) [user@localhost ~]$ こんな感じになります。 HTTPプロトコルだと… svn info http://localhost/svn svn info http://localhost/svn/*****Plugins と変わることになりますな。

kicker
質問者

お礼

ありがとうございます! No.2の回答を試してみました(漏れがあったとのことでしたので試していませんでした、すみません)。 sudo vim /etc/apache2/mods-enabled/dav_svn.conf -------------------------------------------------- <location /svn> DAV svn # SVNParentPath "/home/tommy/svn" # SVNParentPath "/opt/lampp/htdocs/svn" SVNParentPath "/opt/lampp/svn" </location> -------------------------------------------------- LAMPP再起動 sudo ./lampp restart ブラウザ http://localhost/svn/ -------------------------------------------------- Object not found! 要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。 Error 404 localhost 2011a1´12a??11a?\ 14a??56a?†36c§’ Apache/2.2.17 (Unix) DAV/2 mod_ssl/2.2.17 OpenSSL/1.0.0c PHP/5.3.5 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 -------------------------------------------------- ※他にも http://localhost/svn/4514/ http://localhost/4514/ を試しましたが同じです。 では、このままDocumentRootを"/opt/lampp/svn"にしたらどうなるのか気になり、試してみましたが、 http://localhost/ -------------------------------------------------- Access forbidden! 要求されたディレクトリへのアクセス権限がありません。 インデックスドキュメントが存在しないか、 ディレクトリの読み込みが許可されていません。 サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。 Error 403 localhost 2011a1´12a??11a?\ 15a??04a?†38c§’ Apache/2.2.17 (Unix) DAV/2 mod_ssl/2.2.17 OpenSSL/1.0.0c PHP/5.3.5 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 -------------------------------------------------- ・・・もっと悪くなりましたので、これは今、元に戻しました。 これも一応やってみました: svn info svn://localhost/ svn: ホスト 'localhost' に接続できません: 接続を拒否されました svn info svn://localhost/svn/ svn: ホスト 'localhost' に接続できません: 接続を拒否されました ・・・取り急ぎ、ここまでを報告しておきます。 引き続き、調べてみます。

kicker
質問者

補足

コピーし忘れましたが、一番最初に mv /opt/lampp/htdocs/svn /opt/lampp/ してあります。よって /opt/lampp/svn になっています。 svnはもうhtdocsの直下ではありません。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

びみょ~に確認漏れていました… >http://localhost/svn/4514/にはブラウザから問題なくアクセスでき、ファイルの内容を見ることができます。 ではどんなファイルが見えるんでしょう? バージョンは違いますがWebブラウザで見ると、 http://www.gside.org/Gentoo/subversion/subversion.html#A4 http://yuu.nkjm.info/diary/20111130.html の「ブラウザによるアクセス」 http://system.jobweb.jp/?p=742 での「Subversionにtestプロジェクトを追加」 http://www.adobe.com/jp/devnet/dreamweaver/articles/using_subversion_pt3_03.html の図11 みたいな感じで、ファイルやディレクトリが直接みれることはない…ハズです。 # confディレクトリだとかformatファイルとか…そういうのは見えません。

kicker
質問者

お礼

誰もが投げ出すようなこんな質問に答えてくださってありがとうございます。m(__)m 残念ながら、そのような「test - Revision 0: -」というのは見えません。その代わりに(そのconfディレクトリだとかformatファイルとかの)ファイルやディレクトリが見えます: http://localhost/svn/4514/ -------------------------------------------------- Index of /svn/4514 Icon Name Last modified Size Description[DIR] Parent Directory - [DIR] conf/ 06-12a??-2011 22:04 - [DIR] db/ 06-12a??-2011 22:04 - [ ] format 06-12a??-2011 22:04 2 [DIR] hooks/ 06-12a??-2011 22:04 - [DIR] locks/ 06-12a??-2011 22:04 - Apache/2.2.17 (Unix) DAV/2 mod_ssl/2.2.17 OpenSSL/1.0.0c PHP/5.3.5 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 Server at localhost Port 80 -------------------------------------------------- これらが「直接見える」というのはどういう意味でしょう…?例えば、localhostの直下にindex.htmlを置いておきますと、ブラウザでlocalhostにアクセスしたときに(他にどんなファイルが置いてあろうと)自動的にindex.htmlが実行されますよね?では、今回のように/svn/4514/の直下ではどんなファイルが自動的に実行されるのでしょうか? 悪あがきですが、 sudo chmod 777 4514/ だけではなく、その上の sudo chmod 777 svn/ もやっておきました(それでも、やはり何も変化はありません)。 気になるのが、教えていただいた三番目のサイト http://system.jobweb.jp/?p=742 です。あたかも、たった五つの操作(!)でブラウザからsvnにアクセスできるようになっているようです。httpd.confや/etc/apache2/mods-enabled/dav_svn.confすらも編集していないようです。しかも/homeの下に/svn/testを作ってアクセスできています…。localhostの設定は一体どうなっているのでしょう…? ここまでの情報で何かヒントになりそうでしょうか?何か試せそうな操作がありましたらお気軽にお知らせください。それまでにこちらでも自分なりに調べてみます。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

どういう手順をやったのか…ちょっと不明なんですが…… http://d.hatena.ne.jp/eth0jp/20091120/1258720828 では『言うなれば「Apache経由でアクセスした場合に、SVNの設定をしている場合としていない場合の両パターンで同じディレクトリが見えてちゃだめ」。』という記述が。 >DocumentRoot "/opt/lampp/htdocs" であれば、 ><location /svn> >SVNParentPath "/opt/lampp/htdocs/svn" ></location> が『無くても』http://localhost/svn でアクセスされるのは/opt/lampp/htdocs/svnですよね? mv /opt/lampp/htdocs/svn /opt/lampp/ でhtdocsの下から出して、 SVNParentPath "/opt/lampp/svn" としたらどうなりますか? # とか書いている裏で状況確認しようとVMWareでubuntu 11.10 jaインストール中ですが… # そのあと、どう環境構築したのかよくわからんのですが…。 # 普段はRedhat系列ですしねぇ…。

  • goold-man
  • ベストアンサー率37% (8364/22179)
回答No.1

DocumentRoot /home/svn→DocumentRoot /home/svn_htdocに変更(<DocumentRootは変えたくありません>)

参考URL:
http://d.hatena.ne.jp/taka512/20100130/1264845296
kicker
質問者

お礼

ありがとうございます。 しかし、意味が分かりかねます。 そのサイトは既にチェックしてありました。 しかし、質問の中に書いたとおり、DocumentRootは/opt/lampp/htdocsと決めております。 今、仮にDocumentRootを/opt/lampp/svn_htcosにしてみましたが、Syntax Errorでapacheが起動しなくなりました。もちろんです、そんなディレクトリは無いのですから。 次に、/opt/lampp/svnに設定してみました。 Syntax Errorは吐かないものの、やはりapacheが起動しません。 それと、私の場合、元々「DocumentRoot 」と「SVNParentPath」は同じではありません。 "/opt/lampp/htdocs"≠"/opt/lampp/htdocs/svn" そのサイトは「それらが違っていれば動く」と書いてあるのではないでしょうか?それで動かないのは何故ですか? 本当に困っているんです。もう少し詳細を教えていただけませんか?お願いします。