RX-7乗りの適当な日々 このページをアンテナに追加 RSSフィード

RX-7(FD3S)』関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。よろしければこちらもどうぞ。
市長になりました(笑) よろしければ『MyMiniCity』にも遊びに来てください〜。

2008/10/11

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


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


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


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

特にアンインストールする可能性があるソフト(ほとんどのソフトがそうですが・・・)をインストールする場合は、わざわざdebrpmパッケージを自分で作るのも面倒ですし、"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

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

その他のオプションについては、"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 &

で起動してください。


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

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


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

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


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


参考


[入門] Debian パッケージ

[入門] Debian パッケージ

nak2knak2k 2008/10/15 23:32 >checking for GTKMM... configure: error

このエラーは configure --disable-gpaco で回避できました。
当然、gpacoは使えなくなりますが、GUIは不要って人にはこれでいいかと。

rx7rx7 2008/10/15 23:45 コメントありがとうございます。
おっしゃられている通りです。私もサーバマシンでは、GUIを使わないため、gpacoをdisableしています。

ゲスト


おとなり日記