2016-11-11

LightDMとLightDM GTK+ GreeterにGNU Stowを適用してみる

pkgsrcを利用せずにLightDMとLightDM GTK+ Greeterをビルドするので、インストール先は/usr/localになります。何も対処せずにインストールしても良いところですが、今後の管理を考えてGNU Stowを利用してみることにしました。stow自体はpkgsrcにあったので、既にインストールしてあります。

stowを使うために気をつける点は次のとおりです。
  1. 管理用のディレクトリとして/usr/local/stowを作っておきます。 別のディレクトリでも構いませんが、いずれにしても指定したディレクトリをconfigureprefixオプションで指定することになります。
  2. configureでは必ずprefixオプションを「--prefix=/usr/local/stow/パッケージ名」のように指定しなければなりません。
まずstow対応にしてLightDMをビルドします。
# cd lightdm-1.20.0
# 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
次に同じくstow対応でLightDM GTK+ Greeterをビルドします。
# cd lightdm-gtk-greeter-2.0.2
# env PKG_CONFIG_PATH='/usr/local/lib/pkgconfig' ./configure --prefix=/usr/local/stow/lightdm-gtk-greeter-2.0.2
# gmake
# gmake install
さていよいよstowを使ってみます。まず手始めにLightDMに適用してみました。
# cd /usr/local/stow
# 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
シンボリックリンクが張られることにより/usr/local/binなどにファイルがあるかのように見せかけることが出来ます。それは良いのですがbinディレクトリ自身がシンボリックリンクになってしまっています。このままでは他のパッケージに含まれるファイルを置けません。

どうしてものかと思いましたが、事前にパッケージに含まれるディレクトリを作っておくことにしました。これならシンボリックリンクが張られる対象はファイルだけになるので、複数のパッケージがあっても大丈夫でしょう。

stowなんかを使うのを止めてしまうという選択肢もあると思います。GNU Stowというものが期待していたよりも相当単純な機能しか提供していないツールでしたが、同様の仕組みを自前で作ることを考えれば、それなりに利用できるでしょう。stowで管理することにしても邪魔になるわけでもありませんし、もしかすると将来的には良かったと思える時がくるかもしれません。

結局次のようにして対処しました。
# cd /usr/local
# (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)
GNU Stowには類似ツールがないのでしょうか。例えばGNU screenとtmuxのように、同じような機能を持つツールが複数あるのなら、使い比べてみたいものです。

0 件のコメント:

コメントを投稿