さくらインターネットでsubversion設定メモ

今さらだけどスタンダードプランで入れたのでメモ。当然だけどroot権限がないためapacheにmod_svnをloadしてhttpで、、、ってのは出来ないので、svn+ssh経由で。

subversionのinstall

適当にlocalなprefixを指定するだけ。

$ cd $HOME/src/
$ wget http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz
$ tar xzvf subversion-1.6.6.tar.gz
$ wget http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz
$ tar xzvf subversion-deps-1.6.6.tar.gz
$ cd subversion-1.6.6
$ ./configure --prefix=$HOME/local
$ make && make install

あとは適当なリポジトリ作ってssh経由で接続するだけ。。。と思いきやエラーが。

svn+sshでcommand not foundと言われた

$ svn co svn+ssh://example.com/path/to/repos/
user@example.com's password:
bash: svnserve: command not found
svn: Connection closed unexpectedly

svnserverが$HOME/local/bin/に入ってるのでsshdがpath見つけられていない様子。

pathを確認してみる

こんな感じで適当に。

$ ssh exmaple.com 'echo $PATH'

command not foundの解決策

解決策1: sshd環境変数を変更してPATHを通す。

ただし、sshd_configで環境変数変更を許可できるように

PermitUserEnvironment yes

なっていないとダメ。デフォルトはno。yesに設定されている場合は、$HOEM/.ssh/environmentに

PATH=$PATH:$HOME/local/bin
解決策2: pathが通っているディレクトリにsymlinkを作成する

echo $PATHで確認したディレクトリに書き込み権限があるなら、そこに対してsymlink張るのがてっとり早いかな。さくらインターネットの場合、PATHに$HOME/binがデフォルトで含まれているので、

$ ln -s $HOME/local/bin/* $HOME/bin

とすれば解決。

解決策3: .bashrc, .bash_profileを編集してPATHを追加する

。。。で出来ると思ってたけど(実際に自分が作ったlinuxサーバでは出来たけど)さくらインターネットで借りてる環境では出来なかった。sshでログインすれば、.bashrcに追加したPATHの内容はもちろん反映されているが、直接コマンドを実行するときには、そのpathは追加されてなかった。

まー使えれば何でもいいので、今回は解決策2でいくことに。