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' から出ます