"make install"したソフトウェアを管理できる超便利ツール「Paco」

最近、Linuxではaptやyumなど、パッケージ管理ツールで多くのアプリケーションやライブラリが管理されるようになり、普通に利用している限りはソースからコンパイルして"make install"することがほとんどありません。


とはいっても、マイナーなソフトウェアをインストールしたりとか、まだパッケージ管理されていない最新バージョンのものを使いたい場合などは、ソースからコンパイルして"make install"をしたくなる場合も有るかと思います。


しかし、"make install"した場合の最大の欠点は、インストールしたソフトウェアの管理ができないことにあります。そのため、何が入っているのか分からなくなっているとか、アンインストールが出来ない、などのケースが起こりうるわけです。

特にアンインストールする可能性があるソフト(ほとんどのソフトがそうですが・・・)をインストールする場合は、わざわざdebやrpmパッケージを自分で作るのも面倒ですし、"make install"のログを取っておいて、読みながら手動で消すとか、Makefileを読み解くなんて、時間がかかりすぎてもっての他。"make uninstall"できるものも、わずかごく一部のソフトウェアだけです。


そこで、この「Paco」を使うと、"make install"したり、その他ファイルを生成するようなイベントに対して、どこに何のファイルが作成されたかを全てログに残して管理してくれるようになります。

そのため、いつ何をインストールしたのかを管理できますし、あとでコマンド一発でそれらをアンインストールすることも可能となります。


というわけで、導入方法と使い方を紹介したいと思います。

Pacoのインストール

今回は、「Paco」をUbuntu 8.04 (Hardy Heron) へインストールしてみました。

$ wget http://downloads.sourceforge.net/paco/paco-2.0.6.tar.gz
$ tar zxvf paco-2.0.6.tar.gz
$ cd paco-2.0.6/
$ ./configure
$ make
$ sudo make install

お決まりのようですが、ダウンロード〜解凍〜コンパイル&インストールです。

checking for GTKMM... configure: error: Package requirements (gtkmm-2.4 >= 2.12) were not met:

No package 'gtkmm-2.4' found

もし、configureの途中で上記のようなエラーメッセージが出た方は、gtkmmのライブラリが足りていないかもしれません。以下のコマンドを実行してみてください。

$ sudo apt-get install libgtkmm-2.4-dev

上記のパッケージをインストール後、"./configure"からやり直してみてください。


「Paco」自身のインストールはこれで完了ですが、このままではPaco自身のアンインストールが出来なくなってしまいます。INSTALLドキュメントによると、、、

Logging the installation of paco itself
=======================================
To log the own installation of paco, type the following command as root,
right after "make install":

        make logme

とのことですので、以下のコマンドを実行して「Paco」自身も管理下に加えましょう。

$ sudo make logme

以上で、「Paco」のインストールは完了となります。

Pacoを使ってソフトウェアをインストール

試しに、ここでは例としていくつかのソフトウェアをソースからコンパイルしてインストールしてみました。
ソースをダウンロードし、"./configure"や"make"を実行した後に、忘れずに以下コマンドのようにpacoをかませて"make install"するようにします。

$ sudo paco -D make install

"-D"オプションを指定すると、今のカレントディレクトリ名がpacoで管理するパッケージ名として使われます。

代わりに"-p"オプションでパッケージ名を自分で指定する形で登録も出来ます。
私は指定が面倒くさいので"-D"オプションを使っています。


尚、Pacoのログについては、デフォルトで"/var/log/paco"配下に保存されます。別の場所を指定することも可能です。詳細は"man paco"を実行してマニュアルをご参照下さい。

管理できるのは"make install"したソフトだけではない

READMEによると、「Paco」は"LD_PRELOAD"メソッドを使ってファイルシステム関連で変更を引き起こすようなシステムコールをモニタして、ログを残すようです。

つまり"make install"に限らず、ファイルの生成や変更などが発生するものをすべて記録することが出来ます。

例えば、Rubyを使ってインストールするパッケージ管理ツール「Rubygems」をインストールする場合は、"make install"ではなく、

$ sudo paco -D ruby setup.rb

とコマンドを実行してインストールを行いますが、この場合も「Paco」では全く問題なく管理可能です。

pacoで管理しているソフトウェア一覧

"-a"オプションをつけて実行することで、管理しているパッケージ一覧が確認できます。

$ paco -a
httpd-2.2.9  paco-2.0.6  ruby-1.8.7-p72  rubygems-1.3.0

↑では、Pacoを介してインストールされたソフトウェア、「Paco」で言うパッケージが2つ管理されていることが分かります。

$ paco -1Fdsa
 22M   898  11-Oct-2008  httpd-2.2.9
3.7M    16  11-Oct-2008  paco-2.0.6
 10M   587  12-Oct-2008  ruby-1.8.7-p72
7.1M  1519  12-Oct-2008  rubygems-1.3.0

尚、↑の通り、オプションによっては、もう少し色々な情報が出力できます。

  • "-1"オプションを付けると、1行に1パッケージとなり、一覧が見易くなります。
  • "-F"オプションを付けると、そのパッケージでインストールされているファイル数が確認できます。
  • "-d"オプションを付けると、そのパッケージがインストールされた日付が確認できます。
  • "-s"オプションを付けると、そのパッケージが占有しているサイズを確認できます。

その他のオプションについては、"man paco"を実行してマニュアルをご参照下さい。

ソフトウェアをアンインストール

"-r"オプションの後にソフトウェア名を付けて実行することで、そのソフトウェアのアンインストールが可能です。

$ sudo paco -r httpd-2.2.9
Remove package httpd-2.2.9 (y/N) ? 

先ほど紹介したソフトウェア一覧でパッケージ名を確認した上で、そのパッケージ名を↑のように"-r"オプションの後に続けて入力して実行してください。

実行後に本当に削除するか確認されますので、大丈夫な場合は「y」を入力すると、アンインストールは完了です。
↑では、Apacheをアンインストールする例ですね。

管理しているソフトウェアのファイル一覧

"-f"オプションにパッケージ名(ソフトウェア一覧などで確認できる)をつけて実行することで、そのソフトウェアでインストールしたファイルの一覧が確認できます。

$ paco -fs paco-2.0.6
paco-2.0.6:
  8k  /usr/local/share/paco/README
 24k  /usr/local/lib/libpaco-log.a
  4k  /usr/local/lib/libpaco-log.la
   @  /usr/local/lib/libpaco-log.so
   @  /usr/local/lib/libpaco-log.so.0
 28k  /usr/local/lib/libpaco-log.so.0.0.0
1.2M  /usr/local/bin/paco
2.4M  /usr/local/bin/gpaco
  4k  /usr/local/etc/pacorc
  4k  /usr/local/lib/pkgconfig/paco.pc
  4k  /usr/local/share/applications/gpaco.desktop
  8k  /usr/local/share/man/man5/pacorc.5
 12k  /usr/local/share/man/man8/paco.8
  4k  /usr/local/share/paco/faq.txt
  4k  /usr/local/share/paco/pacorc
  4k  /usr/local/share/pixmaps/gpaco.png

↑では、ファイル一覧を出力する"-f"オプションに加え、さらに"-s"オプションも付けて、各ファイルのサイズも同時に出力した例です。

GUIで確認もできる「Gpaco」

デスクトップを使っている場合などは、GUIで確認できる「Gpaco」が便利です。
Ubuntuでは上部メニューから、[アプリケーション] ⇒ [システムツール] ⇒ [Package Organizer]を選択することで起動することが出来ます。

コマンドラインから起動する場合は、、、

$ sudo gpaco &

で起動してください。


https://farm4.static.flickr.com/3230/2932034002_48b531f511.jpg

起動すると、↑のようなウインドウが表示され、インストールされているパッケージの一覧が表示されます。


https://farm4.static.flickr.com/3164/2931178187_e539fc5c36_o.png

各パッケージの部分を右クリックすると、コンテキストメニューが表示され、パッケージの情報やアンインストールなどの各操作など、様々なことが実行可能です。


とまぁ、こんな感じでソフトウェア管理、パッケージ管理として非常に便利で実用的なツールですので、皆様も是非使ってみては如何でしょうか。

参考


Team Geek ―Googleのギークたちはいかにしてチームを作るのか

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

[入門] Debian パッケージ

[入門] Debian パッケージ