さくらのレンタルサーバー(スタンダード)に置いたSVNリポジトリを使う前にやること
サーバーにsubversionをインストールして、svnadmin create nanika
ここまではいい。
それをSSHでチェックアウトするとき、$HOME/binにsvnserveがないと具合が悪い。
だからこうしておく。
cd mkdir ~/bin cd ~/bin ln -s path/to/svnserve
こういうわけらしい↓
svnserve: command not found への対処@さくらインターネット
さくらインターネットに設置した subversion で ssh ログイン時に発生するエラー
TortoiseSVNでチェックアウトしようとすると、こういうエラーが出てくるものの、よくわからず、超ハマった。
To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
Ubuntuのシェルでsvn checkoutを叩くと、これが返ってきて、納得。そんなことかいな。
bash: svnserve: command not found
svn+sshでのチェックアウトでは、ログインシェルを開かないので.profileで設定したコマンドサーチパスが効かない。
ログインシェルを開かないで利用できるコマンドサーチパスには、とにかく$HOME/binが含まれている。
$HOME/binにsvnserveがあるといい。ないとだめ。それだけ。はあ…。
消えちゃ困るので引用しておく。
/usr/bin などの「普通のパス」に svnserve がインストールされている場合は何もしなくても SSH トンネリング経由でクライアント側からそれを実行できるが、そうでない場合はそのままでは実行できない。そして、サーバ側のログインシェルのパスの設定をいじってもそのような「普通でないパス」を検索できるようにはできない。というのも、SSH トンネリングではログインシェルを起動せずにコマンドの実行を行う必要があるからだ。 SSH は独自にコマンド検索パスを持っている。 調べたところ、これは ssh サーバ sshd の設定によって、 ssh 経由でリモートからコマンドを発行したとき、コマンドサーチパスである PATH をはじめとしたユーザ環境に制限がかけられているから、とのことらしい。なるほど、だから "command not found" なのだね。じぶんは、コマンドサーチパスのある場所にはインストールしていないのだから、このような結果となった。 すると、レンタルサーバゆえにサーバの設定は変えられないので、その制限された中で出来る事といえば、コマンドサーチパスのある場所に、 svn 関連コマンドを置く事、それしか、なさそうだ。--その唯一と思えたアプローチは、さいわいうまくいった。 リモートホスト、つまり ssh 接続先であるリポジトリを置いたレンタルサーバでは、次のように、コマンドサーチパスの設定の中に、じぶんのパーミッションが許されている場所があった。 $ ssh -l username hostname 'echo $PATH' /sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/home/username/bin 最後の "/home/username/bin" がそれで、とりもなおさずホームディレクトリの bin ディレクトリ。したがって、ここに、必要な svn 関連のコマンドを置いてしまえばよい、ことになる。 これで万事よし、というよりは、 sakura のレンタルサーバをリポジトリに利用するには、このようにするほか、手段がないのかもしれない。