BLOGTIMES
2010/10/25

paco でソースからインストールしたソフトウェアをパッケージ管理する

  cli  systemmanagemant 
このエントリーをはてなブックマークに追加

先日、「ソースから最新版をインストールすると、アンインストールできないので管理が面倒ですよね」という話をしていたら、「paco とか使えばいいのに」と言われたのを思い出したのでインストールしてみました。これを使えばyumやaptでインストールしたものでなくても、インストールしたプロダクトを管理したり、綺麗にアンインストールすることができます。特にRHEL系のディストリビューション(CentOSなど)では事情があって最新版が欲しい場合にはソースから入れるしかないことが多いので活躍する機会も多そうです。

ちなみにどうやってこのソフトウェアが動作するかという種明かしについては、 paco のプロジェクトのウェブに下記のような記載があります。

paco - a source code pacKAGE oRGANIZER for Unix/Linux

How does it perform this magic? It is accomplished using the LD_PRELOAD method, which preloads a shared library before installation using the environment variable LD_PRELOAD. During installation, this library catches the system calls that cause filesystem alterations (such as open, link, rename, ...), and logs the created files.

LD_PRELOADを使っているようなので、おそらくファイル書き込みをすべてフックして記録しておくのでしょう。
分かってしまえば簡単ですが、ちょっと目から鱗が落ちました。

以下、インストールメモ。

ソースのダウンロード~インストール

ダウンロードして、./configure、make、make installします。通常のプロダクトと特に変わりありません。
今回はGUIを使わないので./configureには--disable-gpacoを指定しています。
また、最後の make logme は paco 自身を管理下に加えるためのものです。

# wget http://sourceforge.net/projects/paco/files/paco/2.0.8/paco-2.0.8.tar.gz/download # tar zxvf paco-2.0.8.tar.gz # cd paco-2.0.8 # ./configure --disable-gpaco # make # make install # make logme

管理下にあるプロダクトの一覧

# paco -a paco-2.0.8

プロダクトに含まれるファイルの一覧

# paco -fs paco paco-2.0.8: 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 940k /usr/local/bin/paco 4k /usr/local/etc/pacorc 4k /usr/local/lib/pkgconfig/paco.pc 8k /usr/local/share/man/man5/pacorc.5 12k /usr/local/share/man/man8/paco.8 4k /usr/local/share/man/man8/pacoball.8 4k /usr/local/share/man/man8/rpm2paco.8 4k /usr/local/share/man/man8/superpaco.8 4k /usr/local/share/paco/faq.txt 4k /usr/local/share/paco/pacorc 4k /usr/local/bin/ocap 8k /usr/local/bin/pacoball 8k /usr/local/bin/rpm2paco 8k /usr/local/bin/superpaco

新たなプロダクトの追加

プロダクトを追加する場合にはmake installの作業を下記のように行うだけです。
-Dオプションを利用すると basename `pwd` がパッケージ名になります。

# paco -D make install

プロダクトのアンインストール

プロダクトのアンインストールには-rオプションを使います。

# paco -r paco-2.0.8

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3868
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン