フタなしカンヅメ

徒然なるままに @happytar0

tarボールからインストールしたものを管理

最近はほとんどのものがパッケージで提供されており、ソースからわざわざインストールする機会もずいぶん減った気がします。
しかし、中にはソースからインストールしないといけない場合もあるかと思います。
自分はApachePHPなど主要なソフトは、ソースからインストールする事が多いです。

今までは、バージョンアップさせる度にバカの一つ覚えと言わんばかりに、make && make installをひたすら叩きまくっていたわけです。
バージョアップしたはいいけど、おかしくなったらすぐ戻せる環境がベストだと思い、ちょっと色々調べてみました。

僕が理想とする機能は、

  • ソースから入れたファイル群を管理できる
  • バージョン毎にインストールしたものが管理できる
  • 前のバージョンに戻せる
  • コマンドから削除ができる

paco

まず最初に見つけたのがpacoです。
これはほぼ理想通りで、欲しい機能がほとんど揃っていました。なにより、使っている人が多くて、実績という点でも安心できそうです。
一つ気になった点は、前のバージョンに戻すような履歴管理が簡単ではなかった点です。
軽く調べた感じだと、pacoballというコマンドで、今のバージョンをtarボール化し、新しいバージョンの物を入れるという感じになりそうです。

インストール

## -Dオプションでカレントディレクトをパッケージ名として利用します
# paco -D make install
## -pオプションでパッケージ名の指定が可能
# paco -p "app-1.4.1" make install

アンインストール

# paco -r app-1.4.1

その他

## インストール済みソフトの一覧表示
# paco -a
## 共有ファイルの表示
# paco -fc app
app-1.4.1:
/usr/local/app/conf/local.conf
## インストールした日を表示
# paco -dd app
01-Sep-2008 18:46  app-1.4.1
## configureオプションの表示
# paco -o app
--disable-hoge --enable-extension
## 現在のバージョンをtarボール化
# pacoball -b app-1.4.1
app-1.4.1.paco.tar.bz2
## tarボール化したものに戻す
# tar jtvf app-1.4.1.paco.tar.bz2

参考
Pacoでソースからインストールした物を管理する - WapBox
paco - a source code pacKAGE oRGANIZER for Unix/Linux
pacoでソースから導入したパッケージを管理する | Glide Note - グライドノート

Graft

次に見つけたのがこのGraftです。
pacoより機能面では劣るものの、ずいぶん昔から存在していたようです。
しかし、使ってる人の情報がほとんどない・・・。非常にシンプルが故に簡単に使うことができます。
衝突回避のためのPruneという機能がユニークです。

インストール

# graft -i app-1.4.1

アンインストール

# graft -d app-1.4.1

その他

## 衝突回避のためのPrune機能。既存ファイルが.pruned拡張子にリネームされる
# graft -p app-1.4.1

Graftの詳細記事はこちら
tarボールソースからインストールしたソフトを管理する「Graft」を使ってみる - フタなしカンヅメ

Stow

次は、Stow(すとーんと読むのかな?)です。
これもけっこう有名な物のようで、色々なサイトで紹介されていました。
モデルとしてはGraftと似ているようですが、Graftより機能が少ないようです。
たぶんこっちのStowのほうが古い。

インストール

# stow -t /usr/local/bin app-1.4.1

アンインストール

# stow -D app-1.4.1

その他

## 既存のファイルを更新した時の再処理(再読込)
# stow -R app-1.4.1

調べてみた感じだと、paco >> Graft >> Stowという印象です。後発であるpocoは機能面で優れており、色々便利な機能がたくさんあるので、新しく使うならpocoが良さそうです。
シンプルで最小限の機能だけで十分ということであれば、Graftがよさそうです。