
photo credit: [ henning ] via photopin cc
gnu stow
(以下 stow)はソースから"make install"で入れたソフトを管理するツールで、Macでも使えるLinuxのpacoみたいなソフトです。
管理したいソフトを/usr/local/stow
にインストールし、そこからリンクを貼るだけのシンプルな作りです。アンインストールや、同じソフトの異なるバージョンの使い分けが簡単に行えます。
自前ビルドしたものは管理が困難でアンインストールするとき厄介です。Macではpacoが使えないので似たようなソフトを探してたのですが、Glide Noteさんで紹介されてた$ stow
がいい感じだったので備忘録です。
stow のインストールと下準備
Macで使う場合homebrewなどで入れます。
$ brew install stow
入れたら$ stow
用のディレクトリを作成します。
$ sudo mkdir /usr/local/stow
自前ビルドしたものは全て/usr/local/stow/
以下に入れるようにします。
stow の使い方
例としてgnu版のtarを入れてみます。
$ curl -O http://ftpmirror.gnu.org/tar/tar-1.26.tar.gz
$ tar xf tar-1.26.tar.gz
$ cd tar-1.26
$ ./configure --prefix=/usr/local/stow/gnu-tar-1.26
$ make
$ sudo make install
configure
を実行するとき--prefix=/usr/local/stow/ソフト名-バージョン
を追加してインストール先を指定します。
インストールしたら/usr/local/stow
に移動し…
$ cd /usr/local/stow
$ stow
を実行すると/usr/loca/bin, lib, share
などにリンクが貼られ、$ tar
が使えるようになります。
$ stow -v gnu-tar-1.26
デフォルトでは何も表示しませんが、上のように-v
をつけて実行すると詳細を表示してくれます。他に--verbose=0~3
で、詳しさのレベルを、0、1、2、3の4段階で表すこともできます。デフォルトは0です。
リンクの削除とソフトのアンインストール
リンクの削除は-D
をつけて実行します。
$ sudo stow -Dv gnu-tar-1.26
リンクを削除したら、/usr/local/stow
以下にあるソフトが入ってるフォルダを捨てるだけです。
stowを使ったバージョンの切り替え
リンクを貼ってるだけなので、貼りかえることでバージョンを切り替えることができます。例として$ tar-1.26
$ tar-1.20
に変更してみます。
tarの1.20が/usr/local/stow/gnu-tar-1.20
にインストール済みとして、以下のようにして切り替えます。
$ cd /usr/local/stow # tar-1.26のリンクを削除 $ sudo stow -D gnu-tar-1.26 # tar-1.20のリンクを貼る $ sudo stow gnu-tar-1.20
stowで管理してるソフトを確認
$ stow
と一緒に入れられる$ chkstow
で確認することができます。
$ chkstow -l -t /usr/local/bin
注意
$ stow
を実行する際、リンクを作成するディレクトリに、既にファイルが存在するとエラーになります。これには.DS_Storeなどの不可視ファイルも含まれるようなので注意してください。
さいごに
$ brew create
でhomebrewに入れることもできますが、ソースからビルドした方が都合いいときもあると思います。Macで自前ビルドすること自体ほとんどないと思いますが、$ stow
で管理しとけば何かと便利なんじゃないでしょうか。
参考リンク:
Stowを利用してソースからビルドしたソフトウェアを効率的に管理する - Glide Note
Stow - GNU Project - Free Software Foundation
スポンサード リンク