Humanity

Edit the world by your favorite way

Gitをソースコードからインストールしていてもgit-svnをインストール

Git,Vim,GNU Screenだけはソースコードからインストールしてcheckinstallでパッケージとしてインストールしているのですが、
指定したバージョン文字列がダメなのか、関連パッケージをインストールしようとすると「gitパッケージをアップグレードしますか?」とか聞いてきます。いやいやそれダウングレードだから。
まぁともかくそんな状況でもなんとか動くようにしたのでメモ。
まぁcheckinstallで生成されるパッケージのバージョン指定をちゃんとすればいい話のように思えますが。

環境

  • OS
    • LinuxMint 14 Nadia (UbuntuベースなのでUbuntuでも同じ方法が使えるはず?)
  • インストールしたGitのバージョン
    • git version 1.8.1.2
    • リポジトリからインストールしているが、HEADは追わずにできるだけgit fetch --tagsで落ちてきた最新のタグにcheckoutしてインストールするようにしている

Quick Installation

$ sudo apt-get install liberror-perl libsvn-perl

でいけます。
もちろん前提としてGitはソースコードからインストールしている、という前提です。

過程

以下はなぜ上の通りにすればうまくいくのか分からない人のために過程をメモしています。*1
なので手っ取り早く動くようにしたいなら上の「Quick Installation」の項の通りにやればいけます。


まず初めの状態では、「git-svn」と打ってもPATHには存在しないので「command not found」と言われる状態です。
ただ、gitはいくつかのサブコマンドは/usr/bin/git(パスは適当ですが、実行可能ファイルを表していると考えてください)のバイナリに同梱されるようになっています。
なのでgit-svnがPATH上になくても、gitのバイナリがgit-svnの機能を静的に持っているような気がしたので、「git svn」とか打ってみます。

$ git svn
Can't locate Error.pm in @INC (@INC contains: ...) at ...
BEGIN failed--compilation aborted at ...
...

どうやらgit-svnは同梱されてるようですが、Perlのモジュールが足りない時のエラーが出ました。
なのでモジュールをインストールします。
Debian系では、HogeというPerlモジュールの場合「libhoge-perl」というパッケージ名になっています。

$ sudo apt-get install liberror-perl

もう一回「git svn」と打ってみます。

$ git svn
Can't locate SVN/Core.pm in @INC (@INC contains: ...) at ...
BEGIN failed--compilation aborted at ...
...

エラー内容が変わりました。
どうやらまだモジュールが足りないようなのでインストールします。
SVN::Core」というモジュールですが、名前からしてlibsvn-perlが該当パッケージっぽいのでインストールします。

$ sudo apt-get install libsvn-perl

再度「git svn」と入力。

$ git svn
git-svn - bidirectional operations between a single Subversion tree and git
Usage: git svn <command> [options] [arguments]

Available commands:

無事インストールできました。

*1:とかいまさら言わんでも自分はなるべく初心者の方が見ても分かるよう冗長に説明したりしてる訳ですが。でも一貫しない...orz