不要なパッケージを完全に削除できるインストーラー GNU StowLeverage OSS(2/2 ページ)

» 2008年03月19日 03時30分 公開
[David-A.-Harding,Open Tech Press]
SourceForge.JP Magazine
前のページへ 1|2       

ファイル名の競合

 パッケージマネージャは、一般に、ファイル名の競合に弱い。これはStowも同じだ。例えば、/usr/local/にNew vi(Nvi)がある環境にVimをインストールする場合を考えてみよう。VimもNviも/usr/local/bin/exファイルが必要なため、Stowを実行すると次のエラーが表示される。

stow: CONFLICT: /usr/local/stow/vim-7.0/bin/ex vs. /usr/local/bin/ex


 エラーには違いないが、これはありがたいエラーだ。Stowでなければ、このインストールでNviのexバイナリは何の断りもなくVimの同名ファイルに置き換わってしまうからだ。

 このような場合、最も簡単な対策はいずれかのパッケージを削除することだ。ファイルの名前を変更して両方のパッケージを残すこともできるが、いろいろ厄介な事象が生ずる可能性がある。プログラムの中には必要なファイルを名前で検索するものがあるし、自身が正常に動作するのにその名前を必要とするものさえあるからだ。例えば、exは名前を変更すると正常に動作しない。Vimのexは、コマンド名「ex」で呼び出されたときにexモードで動作するように作られているからだ。

 この場合、一方のパッケージを異なるファイル名でコンパイルし直せば、両方のパッケージが使えるようになる。例えば、Vimのソースディレクトリで./configure --helpを実行すると、次の3つのオプションが表示される。

--with-vim-name=NAME what to call the Vim executable

--with-ex-name=NAME what to call the Ex executable

--with-view-name=NAME what to call the View executable


 この3つのオプションに既定のNAMEとは異なる名前を設定して./configureを実行し、次いでmakeを、次に「make install」を(prefix=付きで)実行すれば、ファイル名の競合は解消する。

パッケージの削除とアップグレード

 Stowでパッケージを削除するにはコマンドが2つ必要だ。まず、パッケージをインストールしたときと同じように、cdでカレントディレクトリを/usr/local/stow/に変更しておく。2つめのコマンドは、「stow -D dirname」で、これは削除するパッケージのあるディレクトリの1つ上(すなわち/usr/local/stow/)で実行する。

 これにより、/usr/local/のシンボリックリンクで/usr/local/stow/dirname/を指すものはすべて削除される。しかし、/usr/local/stow/とそのサブディレクトリにあるファイルについては削除も変更もされず、そのままディスク上に残る。ディスク上の領域を使うことになるが、いつでも再インストール可能だ。領域を開放したければ、rmを使ってパッケージのあるディレクトリを完全に削除すればよい。

 Stowはパッケージのインストールや削除ができるだけでなく、古いパッケージを削除し新しいものをインストールする形で、アップグレードすることもできる。アップグレードしたものの不満な場合は、逆に、新しいものを削除し以前のものをインストールして復元することもできる。

 最後に、Stowをインストールして使ってみたものの気に入らなかったらどうするか。その場合は、お使いのディストリビューションに付属するパッケージマネージャを使ってStow自身を削除する。あるいは、「stow -D stow」で削除することも可能だ。Stowを削除しても、Stowを使ってインストールした既存のパッケージが壊れることはなく、削除後も正常に機能する。

関連キーワード

Linux | GNU | 運用管理 | Leverage OSS | オープンソース


前のページへ 1|2       

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ