Macとかの雑記帳

Macでmake installするなら「gnu stow」で管理すると便利!

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

stow_01

デフォルトでは何も表示しませんが、上のように-vをつけて実行すると詳細を表示してくれます。他に--verbose=0~3で、詳しさのレベルを、0、1、2、3の4段階で表すこともできます。デフォルトは0です。

リンクの削除とソフトのアンインストール

リンクの削除は-Dをつけて実行します。

$ sudo stow -Dv gnu-tar-1.26

リンクを削除したら、/usr/local/stow以下にあるソフトが入ってるフォルダを捨てるだけです。

stow_05

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_03

stowで管理してるソフトを確認

$ stowと一緒に入れられる$ chkstowで確認することができます。

$ chkstow -l -t /usr/local/bin

stow_04

注意

$ stowを実行する際、リンクを作成するディレクトリに、既にファイルが存在するとエラーになります。これには.DS_Storeなどの不可視ファイルも含まれるようなので注意してください。

gnu stow conflict error

さいごに

$ brew createでhomebrewに入れることもできますが、ソースからビルドした方が都合いいときもあると思います。Macで自前ビルドすること自体ほとんどないと思いますが、$ stowで管理しとけば何かと便利なんじゃないでしょうか。

参考リンク:

Stowを利用してソースからビルドしたソフトウェアを効率的に管理する - Glide Note

Stowを使ってのパッケージ管理

Stow - GNU Project - Free Software Foundation

スポンサード リンク