しばらく開発の現場を離れていた間に、時代は変わったようで、
バージョン管理はSubversionからGitに移行しつつあるようです。


SubversionとGitの違い


SubversionとGitの最大の違いは、Gitは集中型リポジトリではなく、
分散型リポジトリを採用していること。
とは言え、Subversionと同じように集中型リポジトリとして
運用することも可能です。

さらに、GitHubと呼ばれるGitのHubサービスも利用することができます。
受託開発という現場でどこまで普及するかわかりませんが、
オープンソース開発では絶大な力を発揮しているようです。

とりあえず使ってみようということで、早速Gitをインストールしてみます。

まずはGit1.8.1をインストールしてみる


http://git-scm.com/downloads
現時点では1.8.1が最新なようです。
ソースコード版はなぜかOlder releasesの中に入ってました。


# cd /usr/local/src
# wget http://git-core.googlecode.com/files/git-1.8.1.tar.gz

# tar xvzf git-1.8.1.tar.gz
# cd git-1.8.1
# make prefix=/usr/local all

cache.h:11:21: warning: openssl/sha.h: No such file or directory


そういえば、OpenSSL入れていなかったような・・・

というわけでOpenSSLを入れることにします。

OpenSSL1.0.1のインストール



後でこれが大変な問題になるとは、この時知る由もありませんでした。
皆さんもOpenSSLのインストールにはご注意を。


関連記事


# cd /usr/local/src
# cd /usr/local/src
# wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
# tar xvzf openssl-1.0.1c.tar.gz
# cd openssl-1.0.1c

# ./config --prefix=/usr --openssldir=/usr/share/ssl shared
# make
# make test

# make install


証明書は今作らなくても大丈夫かな?
再びGITのインストールに戻ります。

再びGIT1.8.1のインストール



# cd /usr/local/src
# cd git-1.8.1
# make prefix=/usr/local all

http-push.c:14:19: warning: expat.h: No such file or directory


Expatが無いらしい・・・

Expatのインストール


expatってなんだろうと調べてみたら、
Expat XML Parserとありました。
Cで記載されたストリーム指向のXMLのパーサライブラリとのことです。
そのままですね。

実行速度を比較しているページを見つけました。
http://weblog.nqou.net/archives/20090223231043.html

あまり早くはなさそう。何が特徴なんだろう。
XMLパーサーのそれぞれの特徴を書いたページもありましたが、
読んでもいまいちよくわかりませんでした。

http://sourceforge.jp/softwaremap/trove_list.php?form_cat=451

ま、yumで入れておくことにします。

# yum install expat-devel
Is this ok [y/N]:

と聞かれるのでy
Complete!

で終了です。

再度Git1.8.1のインストール


再び、Gitのインストールに戻ります。
# make prefix=/usr/local all

SUBDIR perl
/usr/bin/perl Makefile.PL PREFIX='/usr/local' INSTALL_BASE='' --localedir='/usr/local/share/locale'
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.


今度はPerlのモジュールが無いのね。

CPANからPerlのモジュールをインストールできるようにする


CPANを入れておけばいいのかな?
前回、Perlをyumで入れたので、こちらもyumでインストールします。

# yum install expat-devel
Is this ok [y/N]:

と聞かれるのでy
Complete!

で終了です。

再度Git1.8.1のインストール


# make prefix=/usr/local all

SUBDIR git-gui
GITGUI_VERSION = 0.16.0.15.gf6dd78
* new locations or Tcl/Tk interpreter
GEN git-gui
INDEX lib/
* tclsh failed; using unoptimized loading
MSGFMT po/de.msg make[1]: *** [po/de.msg] Error 127


tclshが無いとのこと。

TCL-TKのインストール


参考にしたサイトによるとgettextをインストールすればいいらしいのですが、
なぜgettextなのかわからない・・・。

tclshはTCLインタープリタのためのシンプルなシェルとのことです。
http://ja.wikipedia.org/wiki/Tcl

調べた結果、TCL-TKをインストールすればいいようです。
素直に(?)必要最低限なTCL-TKをインストールします。

# yum install expat-devel
Is this ok [y/N]:

と聞かれるのでy
Complete!

で終了です。

再度Git1.8.1のインストール


# make prefix=/usr/local all

SUBDIR git-gui
GITGUI_VERSION = 0.16.0.15.gf6dd78
* new locations or Tcl/Tk interpreter
GEN git-gui
INDEX lib/
* tclsh failed; using unoptimized loading
MSGFMT po/de.msg make[1]: *** [po/de.msg] Error 127

/bin/sh: msgfmt: command not found
make: *** [po/build/locale/da/LC_MESSAGES/git.mo] Error 127


今度はmsgfmtが無いらしい。

gettextのインストール


msgfmtはgettextに含まれるらしい。
なるほど、この.poファイルというのが翻訳リソースファイルで、
これを処理するのがgettextという国際化対応ライブラリなのですね。

http://ja.wikipedia.org/wiki/Gettext

というわけで大人しく、gettextをインストールします。

# yum install expat-devel
Is this ok [y/N]:

と聞かれるのでy
Complete!

で終了です。

素直に最初からgettextをインストールしておけばよかったのですが、
調べたおかげでちょっと詳しくなりました。

ようやく終わったGit1.8.1のインストール


#make install


無事インストールされました。

と思いきや、どうやら、makeの際に
make prefix=/usr/local all
とつけないと、
/root/bin/git
にインストールされて、rootでしか使えなくなるみたいです。

# make clean
# make prefix=/usr/local all
# make prefix=/usr/local install

Gitのインストールを行ってみて、
Gitは他のアプリのインストールに比べて、エラーメッセージが不親切な気がします。
これは、Gitを使っていても付きまとう問題のようで、
Subversion好きな人がGitを嫌う理由の1つにもなっています。