stowを使うために気をつける点は次のとおりです。
- 管理用のディレクトリとして/usr/local/stowを作っておきます。 別のディレクトリでも構いませんが、いずれにしても指定したディレクトリをconfigureのprefixオプションで指定することになります。
- configureでは必ずprefixオプションを「--prefix=/usr/local/stow/パッケージ名」のように指定しなければなりません。
# cd lightdm-1.20.0次に同じくstow対応でLightDM GTK+ Greeterをビルドします。
# env CPPFLAGS='-I/usr/pkg/include -I/usr/X11R7/include' ./configure --prefix=/usr/local/stow/lightdm-1.20.0
# end LD_LIBRARY_PATH='/usr/pkg/lib:/usr/X11R7/lib:/usr/lib' gmake
# gmake install
# cd lightdm-gtk-greeter-2.0.2さていよいよstowを使ってみます。まず手始めにLightDMに適用してみました。
# env PKG_CONFIG_PATH='/usr/local/lib/pkgconfig' ./configure --prefix=/usr/local/stow/lightdm-gtk-greeter-2.0.2
# gmake
# gmake install
# cd /usr/local/stowシンボリックリンクが張られることにより/usr/local/binなどにファイルがあるかのように見せかけることが出来ます。それは良いのですがbinディレクトリ自身がシンボリックリンクになってしまっています。このままでは他のパッケージに含まれるファイルを置けません。
# stow lightdm-1.20.0
# ll ..
total 2
lrwxr-xr-x 1 root wheel 23 Nov 11 10:34 bin -> stow/lightdm-1.20.0/bin
lrwxr-xr-x 1 root wheel 23 Nov 11 10:34 etc -> stow/lightdm-1.20.0/etc
lrwxr-xr-x 1 root wheel 27 Nov 11 10:34 include -> stow/lightdm-1.20.0/include
lrwxr-xr-x 1 root wheel 23 Nov 11 10:34 lib -> stow/lightdm-1.20.0/lib
lrwxr-xr-x 1 root wheel 27 Nov 11 10:34 libexec -> stow/lightdm-1.20.0/libexec
lrwxr-xr-x 1 root wheel 24 Nov 11 10:34 sbin -> stow/lightdm-1.20.0/sbin
lrwxr-xr-x 1 root wheel 25 Nov 11 10:34 share -> stow/lightdm-1.20.0/share
drwxr-xr-x 3 root wheel 512 Nov 11 10:31 stow
どうしてものかと思いましたが、事前にパッケージに含まれるディレクトリを作っておくことにしました。これならシンボリックリンクが張られる対象はファイルだけになるので、複数のパッケージがあっても大丈夫でしょう。
stowなんかを使うのを止めてしまうという選択肢もあると思います。GNU Stowというものが期待していたよりも相当単純な機能しか提供していないツールでしたが、同様の仕組みを自前で作ることを考えれば、それなりに利用できるでしょう。stowで管理することにしても邪魔になるわけでもありませんし、もしかすると将来的には良かったと思える時がくるかもしれません。
結局次のようにして対処しました。
# cd /usr/localGNU Stowには類似ツールがないのでしょうか。例えばGNU screenとtmuxのように、同じような機能を持つツールが複数あるのなら、使い比べてみたいものです。
# (cd stow/lightdm-1.20.0; find . -type d) | xargs mkdir -p
# (cd stow; stow lightdm-1.20.0)
# (cd stow/lightdm-gtk-greeter-2.0.2; find . -type d) | xargs mkdir -p
# (cd stow; stow lightdm-gtk-greeter-2.0.2)
0 件のコメント:
コメントを投稿