Help us understand the problem. What is going on with this article?

pacoでソースビルドをパッケージっぽく管理する

More than 5 years have passed since last update.

pacoは一言で言うと「野良ビルドしたソフトウェアをパッケージっぽく管理してくれるツール」です。
野良ビルドしたソフトウェアは大抵アンインストールする術がなく、必死こいてそれっぽいファイルを削除していくことになりますが、pacoを使うと簡単にアンインストールしたり、インストールされたファイルの確認ができるようになります。
またconfigure時に指定したオプションも覚えてくれるので、再度ビルドするときに便利です。

paco - a source code pacKAGE oRGANIZER for Unix/Linux
http://paco.sourceforge.net/

ちなみにGUIインターフェイスのgpacoというのもついていますが、自分はssh越しのサーバ上でしか作業しないのでgpacoは使ったことがありません。

インストール

RHEL系の場合はEPEL、Ubuntuの場合は標準でパッケージに用意されているので、yumやapt-getでインストールができます。
Arch Linuxもパッケージがありますが問答無用でgpacoがセットになっているので、CUI環境で入れようとするとgtk2とgtkmmが芋づる式に入ってうわぁぁぁってなります。

ソースから入れる場合はこんな感じです。
gpacoが不要な場合は--disable-gpacoをつけます。

wget http://sourceforge.net/projects/paco/files/paco/2.0.9/paco-2.0.9.tar.gz/download
tar xf paco-2.0.9.tar.bz2
cd paco-2.0.9
./configure --prefix=/usr/local --disable-gpaco
make
sudo make install
sudo make logme

make install後、立て続けにmake logmeすることで、今インストールしたpaco自身をpacoの管理に追加できます。

pacoを使ってソフトウェアをインストール

pacoを使って何かをインストールするにはmakeまでは普通に行い、最後のmake installをpacoをかぶせるようにして実行します。

sudo paco -lD "make install"

sudo paco -lp vim-7.4 "make install"

# -l        ログを取る=記録する
# -D        ディレクトリ名をパッケージ名として使う
# -p PKG    PKGをパッケージ名とする

-Dを使うとディレクトリ名がパッケージ名として使用されます。
tarを落としてきて入れる場合、大抵はfoo-x.y.zのようなディレクトリになっているので、そのような場合は-Dでいいでしょう。

逆にgit cloneしてきてディレクトリにバージョン番号が含まれていないだとか、makeするのはsrcディレクトリの中であるような場合は、-p PKGで自分で名前をつけてあげることになります。

pacoを使ってアンインストール

pacoを使ってソフトウェアをアンインストールするには-rを指定します。

sudo paco -r vim-7.4
Output
Remove package vim-7.4 (y/N) ?

削除するか確認してきてyで削除されます。

pacoが管理している情報を見る

パッケージ一覧を表示

paco -a
Output
git-1.8.3.1  git-1.8.4  highlight-3.12  libevent2  paco-2.0.7  screen  the_silver_searcher  tmux-1.8  vim-7.3  vim-7.4
paco -1Fdsa

# -1        1パッケージ1行表示
# -F        パッケージのファイル数を表示
# -d        インストール日時を表示(ddにすると時刻も表示)
# -s        パッケージのサイズを表示
# -a        全てのパッケージ
Output
 79M   237  12-Jun-2013  git-1.8.3.1
 82M   237  27-Aug-2013  git-1.8.4
4.1M   307  18-Feb-2013  highlight-3.12
5.6M    59  04-Sep-2013  libevent2
1.8M    13  22-Jan-2013  paco-2.0.7
1.7M    20  04-Sep-2013  screen
156k     3  07-Mar-2013  the_silver_searcher
564k     2  04-Sep-2013  tmux-1.8
 30M  1587  03-Jul-2013  vim-7.3
 30M  1594  13-Sep-2013  vim-7.4

パッケージの情報を表示

paco -i highlight
Output
----------------
 highlight-3.12
----------------

Name:     Highlight
Version:  3.12
Summary:  Converts source code to formatted text (HTML, RTF, TeX, LaTeX, SVG, BBCode, XML) with syntax highlighting

パッケージ内のファイル一覧を表示

paco -f vim-7.4
Output
vim-7.4:
/home/pasela/src/vim/runtime/doc/tags
/usr/local/vim-7.4/bin/vim
/usr/local/vim-7.4/bin/vimtutor
/usr/local/vim-7.4/bin/xxd
/usr/local/vim-7.4/share/man/fr.ISO8859-1/man1/evim.1
/usr/local/vim-7.4/share/man/fr.ISO8859-1/man1/vim.1
                      :
                      :

ファイルを提供するパッケージを探す

paco -q /usr/local/bin/ag
Output
/usr/local/bin/ag:      the_silver_searcher

パッケージのconfigureオプションを表示

paco -o git-1.8.4
Output
--prefix=/usr/local/git-1.8.4 --with-libpcre

再度ビルドするときにこんな感じで使うと便利そうです。

./configure $(paco -o vim-7.4)

ただし、pacoが管理してくれるconfigureオプションは指定したものがまったく同じように保存されるわけではなくconfig.logから拾ってくるようなので、事前に確認したほうがよいと思います。
あと、バージョンを省略したり複数のパッケージが該当するような指定をすると複数出力されるので注意が必要です。

paco -o git
Output
git-1.8.4:
--prefix=/usr/local/git-1.8.4 --with-libpcre

git-1.8.3.1:
--prefix=/usr/local/git-1.8.3.1 --with-libpcre

make以外も管理する

pacoはLD_PRELOADを利用してファイルの変更を監視することで記録をするそうなので、実はmake install以外にも使えたりします。
(逆にこの仕組で引っ掛けられない操作は管理できない)

sudo -lD "ruby setup.rb"

sudo -lD "python setup.py"

とか。

pacoの挙動の制御

pacoの管理するデータの保存場所(デフォルトでは/var/log/paco)や除外するファイルなどはオプションで指定できます。
詳しくはman pacoをどうぞ。
(保存場所はconfigure時の--with-paco-logdir=DIRでも指定できます)

また${prefix}/etc/pacorcでも設定ができます。
詳しくはman pacorcをどうぞ。

便利スクリプト集

configure時に--enable-scriptsを指定すると、pacoのパッケージ情報からバイナリパッケージを作ったり、rpmなどをpacoを使ってインストールしたりするスクリプトが一緒にインストールされます。
あとpaco_bash_completionもついてきます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away