インストーラとしてGitを使う | Git | 開発環境・ツール

前回の記事「まずは使ってみよう!初めてのGit」では、Gitをファイル共有ソフトとして使い始める話をした。これは、複数の人が共有リポジトリから最新のファイル群をダウンロード可能であることに基づいている。このGitの機能は、ソフトウェアのインストールにも利用できる。

blog banner 01

FuelPHPの例

FuelPHPというPHPのフレームワークがある。ZIPファイル(現時点ではfuelphp-1.7.1.zip)をダウンロードしてインストールできるが、bashなどのシェルが動く環境(Linux、Mac、Cygwin、MinGWなど)では、次のコマンドラインを実行してもインストールできる。

$ curl get.fuelphp.com/oil | sh

get.fuelphp.com/oil から取得できる内容はシェルスクリプトだが、これが実質的にやっていることは次のコマンドラインと同じである。

$ curl http://get.fuelphp.com/installer.sh > installer.sh

こうしてできた installer.sh を実行することによってFuelPHPがインストールされる(シェルスクリプトに適切な引数が必要だが)。installer.shの中身を覗いいてみると、最初にGitが実行できるかどうかを確認している。Gitが実行できないときは、次のようなメッセージを表示して終了する。


For this installer to work you'll need to install Git.
    http://git-scm.com/

Gitが実行できるなら、次のシェルコードを実行する。

git clone --recursive git://github.com/fuel/fuel.git "./$2"
cd ./$2
branch=`git branch -a | grep -v "remote" | grep "master" | tail -1`
branch=${branch#* }
git checkout $branch
git submodule foreach git checkout $branch

要するに、Gitを使ってファイル群をダウンロードしている。ZIPを手動でダウンロードして展開するところをGitにより自動化しているのだ。

npmとnvmの例

node.jsのパッケージマネージャであるnpm(Node Packege Manager)は、最近ではnode.js本体と同梱されて配布されることが多いが、Gitを使ってインストールもできる。次の手順になる。

$ git clone --recursive git://github.com/isaacs/npm.git

$ cd npm

$ node cli.js install npm -gf

同じくnode.jsの周辺ツールである
nvm(Node Version Manager)も、Gitを使ってGitHubからクローン(ローカルにコピー)すればよい。

$ git clone git://github.com/creationix/nvm.git ~/.nvm

$ source ~/.nvm/nvm.sh

nvmはシェルスクリプトなので、現在使っているシェルに読み込む(sourceする)だけで完了だ。

お手軽なインストール・インフラとしてのGit

公開されたGitリポジトリからのクローンをインストール手段としているソフトウェアは他にもある。専用のパッケージマネージャやインストーラーは便利だが、配布パッケージを作るのが面倒だったり、特定のOSや言語でしか使えなかったりする。Gitなどの分散バージョン管理システムと公開リポジトリを使ったインストールはとてもお手軽だ。万能ではないが、使える場面はけっこう多いのではないだろうか。