コミット時に「アクセス権がない」とかなんとか言われて、エラーが出る。

同じような事で悩んでいる人も発見。
svn/TortoiseSVNがコミットエラー

エラーが出たファイルのパーミッションを見てみると、444になってて書き込みが出来なくなっている。
まあ、そういうことなのです。

つまり、こんな感じだと思われる。
TortoiseSVNが.svnディレクトリ内にファイルを作る

ファイル名を書き換えようとする

作られたファイルのパーミッションが444とかなので、アクセス権が無く編集できない
↓ エラー


で、
/etc/samba/smb.conf

[web]
comment = Web Directory
path = /var/www
valid users = key1
public = yes
writable = yes
printable = no
create mask = 0644
force create mode = 0600
security mask = 0555 force security mode = 0600


なんて設定してやると良いみたい。
様子見てみないとわかんないけど、多分いけるっしょ。

create maskだけでいけるはずなんだけど、たまに効かないみたいなので、force create modeも設定してある。
これってバグなんかなあ、けど明らかに想定してforce create modeってのも作ってある気もする。

謎。
友人からsubversionのことをどうのこうの聞かれたので、このブログのバージョン管理に使ってみることにした。

coreserverには以前、subversionの最新版をインストール済み。
coreserverに最新版のsubversionをインストールしてみた

時代はGitだっつうのに忍びないが、まだまだ現時点ではsubversionの方がドキュメントが多いし、Windowsで使おうとすると尚更だからね。

とりあえずリポジトリはcoreserver上において、クライアントはWindows。
SSHでアクセスする感じでやれないかなと。

■リポジトリの作成
mkdir ~/var
mkdir ~/var/repos
cd ~/var/repos/ svnadmin create diary

このブログのリポジトリなので、とりあえずdiaryにしてみた。

■クライアントインストール
まずはWindowsのクライアントは例の如くTortoiseSVN
普通にダウンロード&インストールで使えるようになる。
ついでにダウンロードページにある日本語のランゲージパックもダウンロードしてあてとく。
いやービックリするぐらい簡単。
エクスプローラーが変にカスタマイズされるのが気持ち悪くて、以前アンインストールしてしまったが、今回はSVNに慣れるまで我慢するのだ。

■puttyのインストール
話せば長くなるのだが、puttyが必要なのだ。

以下話せば長くなる内容。

まず、TortoiseSVNにはSSH接続するTortoisePlink.exeが含まれているんだけど、こいつがputtyを元に作られている模様。
で、ここで躓いたんだけど
puttygenで生成された公開鍵≠OpenSSH方式の公開鍵

ということが判明。
なので、以前coreserverで鍵方式でsshでログインするように設定してあったんだけど、OpenSSH方式の公開鍵ではアクセス出来なかった。
つうことで、puttygenで公開鍵を作り直さないといけない。


■puttygenで公開鍵を作成する
puttygenを以下からダウンロードして、起動。
PuTTY Download Page

[Load]でOpenSSH方式の公開鍵を選択して、[Save private key]でok。
※参考サイト:PuTTYによるSSH1/2接続


■TortoiseSVNを設定
そこで2つの方法があるみたい。

(1)[設定]→[ネットワーク]のSSHクライアントで以下のように設定
C:\\Program Files\\TortoiseSVN\\bin\\TortoisePlink.exe -l (ユーザ名) -i (puttyのppkファイル)


この方法だと、あんまり気軽にリポジトリをスイッチするってことし難い感じ。
いちいち設定画面で変更するってのもね・・・。
まあ、しんでもいいんだけどさ。
(2)リポジトリブラウザで切替


この方法だと、気軽といえば気軽なので、こっちを採用してみる。

■puttyでSessionを保存
そこでまず、puttyでsession(接続条件を保存しておくようなもの)を保存しないといけない。
これもtortoisePlink.exeがputtyから派生しているゆえんか・・・。

puttyの本体を落としてきて、さっきputtyのppkファイルでアクセス出来るように設定。
具体的にはこんな感じ。
[Session]でHostNameをセット。
[Connection][DATA]にAuto-login usernameをセット。
[Connection][SSH][Auth]でPrivate key file for authehnticationに putty用ppkファイルを選択。

んでSession名をcoreserverとかにして保存。
アクセス出来る事を確認する。

で、TortoiseSVNのリポジトリブラウザに以下を入力して接続。
svn+ssh://acountname@coreserver/virtual/acountname/var/repos/diary


これで無事接続出来れば完了。
自分で書いてても良くわかんなくなったが、とりあえずメモってことで。
vimをソースからインストールしたことが、正直気持ちが良くて続けてsubversionもインストールしてみた。
これは古いバージョンが入っているんだよね、まあそれ程凝った使い方をしなければ、デフォルトのもので良いとおもうけど。

参考サイト:
coreserverにsvn入れた。 - tomisima::memo

まずはberkeley-dbをインストールした方が良い模様。
最新版はここでチェック:
Oracle Berkeley DB Downloads
berkeley-dbってOracleが作ってたのか、ふーん。
cd ~/virtual/account/local/src
tar xvzf db-4.7.25.tar.gz curl -O http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz

ダウンロードして解凍。
そして続けてインストール。
cd db-4.7.25/build_unix/
../dist/configure --prefix=$HOME/local --enable-compat185
make make install

このmakeって時点でかなりkilledとなりこける模様。
そうだなー、killedとか出なくなるまで5回位はやり直した。

次にsubversionをインストール。
バージョンはここで確認:
subversion.tigris.org
cd ~/virtual/account/local/src
curl -O http://subversion.tigris.org/downloads/subversion-1.5.4.tar.gz
curl -O http://subversion.tigris.org/downloads/subversion-deps-1.5.4.tar.gz
% tar xvzf subversion-1.5.4.tar.gz % tar xvzf subversion-deps-1.5.4.tar.gz

ダウンロードして解凍。
そしてインストール。
cd subversion-1.5.4
./configure --prefix=$HOME/local --with-ssl --with-berkeley-db=$HOME/local
make make install

ここのmakeはかなり手ごわかった。
10回以上はやったと思う。
何度かwarningが出ていたけど、気にせず最後まで通ればとりあえずOKなのかな?

最後に
svn --version

とやって、最新バージョンの番号(1.5.4)が返ってこれば一先ずOK。

実際にsvnクライアントでアクセスしてみると上手くいかないみたい。
coreserverにSubversion入れようとしたのだが…

コメントを見る限り.bashrcを作成してそこにPATHを通せば良さそうだけど、とりあえずそん時に考えることにする。


vimとsubversionを続けてソースからインストールして思ったんだけど、インストール先は--prefixオプションで指定して、実際にバイナリーが出来るのは、指定したパスの直下にあるbinだったりするのね、ふむふむ。