ソースインストールした物を管理するツール「Graft」をインストールして使ってみたので、記録として残しておきます。
インストールと言っても簡単で、配布元サイトのドキュメント通りに実行すれば問題ありません。
配布元サイト
graft.html – peters
$ wget -O graft-2.4.tar.gz "http://peters.gormand.com.au/Home/tools/graft/graft-2.4.tar.gz?attredirects=0" $ tar zxvf graft-2.4.tar.gz $ cd graft-2.4 ## ここでエラーがでます。 $ make -f Makefile.dist ###################################################### # # # You'll now need to modify the Makefile # # variables to suit your local conditions. # # # ###################################################### make: *** [Makefile] Error 1 ## エラーが出るので、Makefileを編集する必要があるようです。
Makefile
このPACKAGEDIRがパッケージ管理用のディレクトリになり、ここにソースからインストールします。 PACKAGEDIR = /pkgs TARGETDIRは、通常インストールしたい場所、つまり/usr/localなどを指定します。 # TARGETDIR = /pkgs TARGETDIR = /usr/local Perlコマンドの場所を指定します。/pkgs/bin/perl となっていますが、ほとんどの場合、/usr/bin/perl に設置されていると思いますので変更します。 # PERL = /pkgs/bin/perl PERL = /usr/bin/perl
あらためてビルドします。
$ make clean $ make # sudo make install ## graftがインストール出来ていることを確認。 $ ls /pkgs graft-2.4 ## graft自身を/usr/local/bin配下にインストール # /pkgs/graft-2.4/bin/graft -i graft-2.4 ## シンボリックリンクされていることがわかる $ ls -l /usr/local/bin lrwxrwxrwx 1 root root 25 7月 30日 09:23 /usr/local/bin/graft -> /pkgs/graft-2.4/bin/graft
これでインストールは無事に完了しましたので、さっそく使ってみます。
今回は、試しにrubyをインストールしてみました。
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.tar.gz $ tar zxvf ruby-1.8.7-p299.tar.gz $ cd ruby-1.8.7-p299 $ ./configure --prefix=/pkgs/ruby-1.8.7-p299 && make # make install ## 無事にインストール出来たことを確認 $ ls /pkgs graft-2.4 ruby-1.8.7-p299 ## graftコマンドでインストール # graft -i ruby-1.8.7-p299 $ ls -l /usr/local/bin lrwxrwxrwx 1 root root 30 7月 30日 09:27 /usr/local/bin/ruby -> /pkgs/ruby-1.8.7-p299/bin/ruby
rubyをアンインストールしてみる。
# graft -d ruby-1.8.7-p299 EMPTY /usr/local/lib/ruby/1.8/bigdecimal/ is now empty. Delete manually if necessary. EMPTY /usr/local/lib/ruby/1.8/cgi/session/ is now empty. Delete manually if necessary. ...
一部ディレクトリが残ってしまっていますが、-Dオプションで実行することで、空のディレクトリも削除してくれるようです。
アップデートを想定して、ruby1.9系を入れてみることにしました。
アンインストール後に、インストールしても問題ないかと思いますが、今回はPruneという機能を使ってみます。これは既存のファイル群との衝突を回避するために、末尾に.prunedを付けたファイル名にリネームしてくれるものです。
## まず1.8.7をインストール # graft -i ruby-1.8.7-p299 $ /usr/local/bin/ruby -v ruby 1.8.7 (2010-06-23 patchlevel 299) [i686-linux] ## 1.9.1をダウンロード、インストール $ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p429.tar.gz $ tar zxvf ruby-1.9.1-p429.tar.gz $ cd ruby-1.9.1-p429 $ ./configure --prefix=/pkgs/ruby-1.9.1-p429 && make # make install ## graftコマンドでrubyを1.8.7から1.9.1にアップデートします ## アンインストール前に新しいバージョンの物をインストールしようとすると、衝突としてエラーが表示されます # graft -i ruby-1.9.1-p429 CONFLICT /usr/local/bin/erb is linked to something other than /pkgs/ruby-1.9.1-p429/bin/erb (/usr/local/bin/erb -> /pkgs/ruby-1.8.7-p299/bin/erb) # graftコマンドを-pオプションで実行してみると、ファイル名の後ろに.prunedとリネームされているのがわかる # graft -p ruby-1.8.7-p299 $ ls -l /usr/local/bin lrwxrwxrwx 1 root root 30 7月 30日 09:39 /usr/local/bin/ruby.pruned -> /pkgs/ruby-1.8.7-p299/bin/ruby # あらためてインストール $ graft -i ruby-1.9.1-p429 ## 1.9.1がインストールできていることを確認 $ ls -l /usr/local/bin lrwxrwxrwx 1 root root 30 7月 30日 10:02 /usr/local/bin/ruby -> /pkgs/ruby-1.9.1-p429/bin/ruby
いくつか気になった点がありました。
- 衝突回避のためにリネームされた.prunedファイルを消せない。
(-pオプションで実行させる度に、上書きされるようなので問題なし?)
- 設定ファイルも一緒に上書きされそうなので、.graft-exclude
や.graft-includeなどを使って、必要なものだけインストールするように調整する必要があるかもしれません。(未検証)
非常にシンプルに出来ていて簡単に使うことが出来るので、ごちゃごちゃとした余計な機能はいらない、という人にとってはオススメです。
あとは、ソースからインストールしたものが/pkgsに溜まっていくので、前のバージョンにすぐに切り替えたりといった事もできます。