
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 &
で起動してください。
起動すると、↑のようなウインドウが表示され、インストールされているパッケージの一覧が表示されます。
各パッケージの部分を右クリックすると、コンテキストメニューが表示され、パッケージの情報やアンインストールなどの各操作など、様々なことが実行可能です。
とまぁ、こんな感じでソフトウェア管理、パッケージ管理として非常に便利で実用的なツールですので、皆様も是非使ってみては如何でしょうか。
参考
- paco - a source code pacKAGE oRGANIZER for Unix/Linux
- paco - README
- pacKAGE oRGANIZER | Free System Administration software downloads at SourceForge.net
- 作者: 鵜飼文敏, やまだあきら
- 出版社/メーカー: 技術評論社
- 発売日: 2006/05/11
- メディア: 単行本
- [UNIX]checkinstallも便利
- 腹八分目。 - [http://d.hatena.ne.jp/rx7/20081011/p2:title=”mak...
- VRAVEN - "make install"したソフトウェアを管理できる超...
- BITES THE DUST -負けて死ね- - bookmarks for the day
- 蝸牛の宿::ついったー部 - [はてブ]今日のはてブ
- だらだらとだらだら - Poverty
- Developer☆STYLE - ”make install”したソフトウェアを管理できる超...
- http://www.potaway.net/tdiary/20081016.html#p02
- life to hack - ubuntuで自宅サーバ構築メモ - 初期設定
- karronoliの日記 - stowユーザがpacoをインストールしてみた
- karronoliの日記 - stowユーザがpacoをインストールしてみた
- てっく煮ブログ - はてなブックマーク 2008年10月ブックマーク数ラ...
- Hatena::Diary::Ubuntu - Debian sid(不安定版)を常用する
- 計算機と戯れる日々 - ubuntuにghc6.10をインストール
- 思い出はいつまでも - paco
- M59の記録 - グリフウィキ画フォントツール
- Develop with pleasure! - MacPortsを使ってMySQLをインストール
- GRANADA Hatena @ sotarok - Ubuntu 8.10 にソースから Python 2.6 ...
- メモ帳 - paco-2.0.6のインストール((http://d.hatena.ne.jp/rx7/20...
- メモ帳 - paco-2.0.6のインストール((http://d.hatena.ne.jp/rx7/20...
- おつあり - [git][Linux]
- こそ勉 - Paco
- WapBox - Pacoでソースからインストールした物を管理する
- cuspos diary - ソースからインストールするパッケージを管理するpa...
- ぞひたすIT記 - /
- まるっとまるまま - PCMan File Managerで詳細表示したときに反応...
- iThink - [Ubuntu][PISMO]
- iThink - [1]Pacoをインストールする。
- flyaの日記 - Fedora13にRuby1.8.7+Rails2.3.5インストール
- 4丁目より - 【”make install”したソフトウェアを管理できる超便利...
- SUGI @ to be a PLATINUM creator ... - windowsXPで、VMware Playe...
- 初心者プログラマの日記 - Ubuntuで Emacs23.2をソースからビルド...
- Pacoでソースからビルドしたパッケージを管理してみる
- 馬鹿と天才は紙一重 - 入門 nginx



![[入門] Debian パッケージ [入門] Debian パッケージ](http://ecx.images-amazon.com/images/I/51NA517PXTL._SL160_.jpg)




![[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ)](http://ecx.images-amazon.com/images/I/51GW5jxmdvL._SL150_.jpg)
![[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用](http://ecx.images-amazon.com/images/I/51uK4ACymiL._SL150_.jpg)
![エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド](http://ecx.images-amazon.com/images/I/41oqE-9dM2L._SL150_.jpg)
![Googleを支える技術 ~巨大システムの内側の世界 [WEB+DB PRESS plusシリーズ] (WEB+DB PRESSプラスシリーズ)](http://ecx.images-amazon.com/images/I/51m8phYZbyL._SL120_.jpg)

















