プレイヤーズ・ハイ

 雑多な日記

paco - pacKAGE oRGANIZER で make install したものを管理する in Amazon Linux

paco を使うと make install でインストールしたソフトウェアをパッケージっぽく管理することができます。

環境

  • Amazon Linux AMI 2013.09.2 - ami-0d13700c (64-bit)

paco のインストール

$ sudo yum install paco --enablerepo=epel

paco を使って Redis を make install

# make までは通常と同じ手順
$ wget http://download.redis.io/releases/redis-2.8.6.tar.gz
$ tar xzf redis-2.8.6.tar.gz
$ cd redis-2.8.6
$ sudo make

# paco で管理するために以下のようにしてインストール
$ sudo paco -lD "make install"
# -l ログを取る = 記録する
# -D ディレクトリ名をパッケージ名として使う
# -p package_name package_name をパッケージ名とする

# paco 管理になっているか確認
$ paco -a
redis-2.8.6

$ which redis-server
/usr/local/bin/redis-server

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

$ sudo paco -r redis-2.8.6
Remove package redis-2.8.6 (y/N) ? y

$ paco -a

$ which redis-server
/usr/bin/which: no redis-server in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin)

paco で管理しているパッケージ情報を表示

$ paco -i redis-2.8.6
-------------
 redis-2.8.6
-------------

Name:     redis
Version:  2.8.6

paco で管理しているパッケージ内のファイル一覧を表示

$ paco -f redis-2.8.6
redis-2.8.6:
/usr/local/bin/redis-benchmark
/usr/local/bin/redis-check-aof
/usr/local/bin/redis-check-dump
/usr/local/bin/redis-cli
/usr/local/bin/redis-server

ファイルを提供している paco 管理のパッケージを探す

$ paco -q /usr/local/bin/redis-server
/usr/local/bin/redis-server:    redis-2.8.6

paco で管理しているパッケージの configure オプションを表示

$ paco -o redis-2.8.6
--with-jemalloc-prefix=je_ --enable-cc-silence CFLAGS=-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  LDFLAGS=

# この情報は、config.log から拾ってくるようで、信頼できないときもあるそうです。

paco で make install 以外も管理

paco は LD_PRELOAD を利用してファイルの変更を監視することでパッケージ情報をロギングしています。 ですので同じ仕組を使っている以下のようなものも、paco で管理することができます。

$ sudo -lD "python setup.py"
$ sudo -lD "ruby setup.rb"

自分で make install のログを取る

ちなみに、make -n install とやると、実際のインストールは行わず、インストールされるものの一覧を表示して終わります。

$ sudo make -n install
cd src && make install
make[1]: ディレクトリ `/home/ec2-user/work/redis-2.8.6/src' に入ります
echo ""
echo "Hint: To run 'make test' is a good idea ;)"
echo ""
mkdir -p /usr/local/bin
printf '    %b %b\n' "\033[34;1m"INSTALL"\033[0m" "\033[37;1m"install"\033[0m" 1>&2;install redis-server /usr/local/bin
printf '    %b %b\n' "\033[34;1m"INSTALL"\033[0m" "\033[37;1m"install"\033[0m" 1>&2;install redis-benchmark /usr/local/bin
printf '    %b %b\n' "\033[34;1m"INSTALL"\033[0m" "\033[37;1m"install"\033[0m" 1>&2;install redis-cli /usr/local/bin
printf '    %b %b\n' "\033[34;1m"INSTALL"\033[0m" "\033[37;1m"install"\033[0m" 1>&2;install redis-check-dump /usr/local/bin
printf '    %b %b\n' "\033[34;1m"INSTALL"\033[0m" "\033[37;1m"install"\033[0m" 1>&2;install redis-check-aof /usr/local/bin
make[1]: ディレクトリ `/home/ec2-user/work/redis-2.8.6/src' から出ます