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

RX-7(FD3S)WRX STI関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。

2008/10/11

"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 &

で起動してください。


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

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


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

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


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


参考


[入門] Debian パッケージ

[入門] Debian パッケージ

  • 作者: 鵜飼文敏, やまだあきら
  • 出版社/メーカー: 技術評論社
  • 発売日: 2006/05/11
  • メディア: 単行本

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しています。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。


オススメ (一部は、最近読んでいる本とも言う)
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ [Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ) エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド [24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 Linux-DB システム構築/運用入門 (DB Magazine SELECTION) キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置 スケーラブルWebサイト 実践ハイパフォーマンスMySQL 第3版 ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE) SQLアンチパターン インターネットのカタチ―もろさが織り成す粘り強い世界― ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)