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
Remove package vim-7.4 (y/N) ?
削除するか確認してきてy
で削除されます。
pacoが管理している情報を見る
パッケージ一覧を表示
paco -a
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 全てのパッケージ
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
----------------
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
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
/usr/local/bin/ag: the_silver_searcher
パッケージのconfigureオプションを表示
paco -o git-1.8.4
--prefix=/usr/local/git-1.8.4 --with-libpcre
再度ビルドするときにこんな感じで使うと便利そうです。
./configure $(paco -o vim-7.4)
ただし、pacoが管理してくれるconfigureオプションは指定したものがまったく同じように保存されるわけではなくconfig.logから拾ってくるようなので、事前に確認したほうがよいと思います。
あと、バージョンを省略したり複数のパッケージが該当するような指定をすると複数出力されるので注意が必要です。
paco -o git
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もついてきます。