最近、Linuxではaptやyumなど、パッケージ管理ツールで多くのアプリケーションやライブラリが管理されるようになり、普通に利用している限りはソースからコンパイルして"make install"することがほとんどありません。
とはいっても、マイナーなソフトウェアをインストールしたりとか、まだパッケージ管理されていない最新バージョンのものを使いたい場合などは、ソースからコンパイルして"make install"をしたくなる場合も有るかと思います。
しかし、"make install"した場合の最大の欠点は、インストールしたソフトウェアの管理ができないことにあります。そのため、何が入っているのか分からなくなっているとか、アンインストールが出来ない、などのケースが起こりうるわけです。
特にアンインストールする可能性があるソフト(ほとんどのソフトがそうですが・・・)をインストールする場合は、わざわざdebやrpmパッケージを自分で作るのも面倒ですし、"make install"のログを取っておいて、読みながら手動で消すとか、Makefileを読み解くなんて、時間がかかりすぎてもっての他。"make uninstall"できるものも、わずかごく一部のソフトウェアだけです。
そこで、この「Paco」を使うと、"make install"したり、その他ファイルを生成するようなイベントに対して、どこに何のファイルが作成されたかを全てログに残して管理してくれるようになります。
そのため、いつ何をインストールしたのかを管理できますし、あとでコマンド一発でそれらをアンインストールすることも可能となります。
というわけで、導入方法と使い方を紹介したいと思います。
今回は、「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」のインストールは完了となります。
試しに、ここでは例としていくつかのソフトウェアをソースからコンパイルしてインストールしてみました。
ソースをダウンロードし、"./configure"や"make"を実行した後に、忘れずに以下コマンドのようにpacoをかませて"make install"するようにします。
$ sudo paco -D make install
"-D"オプションを指定すると、今のカレントディレクトリ名がpacoで管理するパッケージ名として使われます。
代わりに"-p"オプションでパッケージ名を自分で指定する形で登録も出来ます。
私は指定が面倒くさいので"-D"オプションを使っています。
尚、Pacoのログについては、デフォルトで"/var/log/paco"配下に保存されます。別の場所を指定することも可能です。詳細は"man paco"を実行してマニュアルをご参照下さい。
READMEによると、「Paco」は"LD_PRELOAD"メソッドを使ってファイルシステム関連で変更を引き起こすようなシステムコールをモニタして、ログを残すようです。
つまり"make install"に限らず、ファイルの生成や変更などが発生するものをすべて記録することが出来ます。
例えば、Rubyを使ってインストールするパッケージ管理ツール「Rubygems」をインストールする場合は、"make install"ではなく、
$ sudo paco -D ruby setup.rb
とコマンドを実行してインストールを行いますが、この場合も「Paco」では全く問題なく管理可能です。
"-a"オプションをつけて実行することで、管理しているパッケージ一覧が確認できます。
$ paco -ahttpd-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.93.7M 16 11-Oct-2008 paco-2.0.6 10M 587 12-Oct-2008 ruby-1.8.7-p727.1M 1519 12-Oct-2008 rubygems-1.3.0
尚、↑の通り、オプションによっては、もう少し色々な情報が出力できます。
その他のオプションについては、"man paco"を実行してマニュアルをご参照下さい。
"-r"オプションの後にソフトウェア名を付けて実行することで、そのソフトウェアのアンインストールが可能です。
$ sudo paco -r httpd-2.2.9Remove package httpd-2.2.9 (y/N) ?
先ほど紹介したソフトウェア一覧でパッケージ名を確認した上で、そのパッケージ名を↑のように"-r"オプションの後に続けて入力して実行してください。
実行後に本当に削除するか確認されますので、大丈夫な場合は「y」を入力すると、アンインストールは完了です。
↑では、Apacheをアンインストールする例ですね。
"-f"オプションにパッケージ名(ソフトウェア一覧などで確認できる)をつけて実行することで、そのソフトウェアでインストールしたファイルの一覧が確認できます。
$ paco -fs paco-2.0.6paco-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.01.2M /usr/local/bin/paco2.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」が便利です。
Ubuntuでは上部メニューから、[アプリケーション] ⇒ [システムツール] ⇒ [Package Organizer]を選択することで起動することが出来ます。
コマンドラインから起動する場合は、、、
$ sudo gpaco &
で起動してください。
起動すると、↑のようなウインドウが表示され、インストールされているパッケージの一覧が表示されます。
各パッケージの部分を右クリックすると、コンテキストメニューが表示され、パッケージの情報やアンインストールなどの各操作など、様々なことが実行可能です。
とまぁ、こんな感じでソフトウェア管理、パッケージ管理として非常に便利で実用的なツールですので、皆様も是非使ってみては如何でしょうか。
Team Geek ―Googleのギークたちはいかにしてチームを作るのか
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。