yumやapt-getからインストールしたり、rpmやdebパッケージを利用してインストールした場合、アンインストールやアップグレードを行うのは簡単だ。
しかし、ソースファイルからコンパイルしたパッケージの場合、makeファイルにuninstallが用意されているならまだしも、もし用意されてないと、パッケージをアンインストールしたりするのは非常に大変だ。

そんなソースからコンパイルしmake installしたパッケージを管理してくれるのが、『porg』だ。pacoという、同じくソースからインストールしたパッケージの管理ツールが前身。
今回は、この『porg』をCentOS 7に実際にインストールし、ソースからインストールしたパッケージを管理してみることにする。

1.『porg』のインストール

まずは『porg』のインストールから。
以下のコマンドを実行し、パッケージのソースコードをダウンロードする。

wget http://downloads.sourceforge.net/project/porg/porg-0.8.tar.gz

ソースのダウンロード後、以下のコマンドでコンパイル、インストールを行う。

tar xzvf porg-0.8.tar.gz
cd porg-0.8
./configure --disable-grop
make && make install

これで、porgがインストールできた。

2.パッケージを管理対象にする

さて、それでは実際にパッケージを管理してみよう。
まずは、先ほどmake installしたporg自身を管理させるため、以下のコマンドを実行する。

make logme

これで、porgでporgが(紛らわしいな…)管理出来るようになった。
その他、ApacheやPHP、PostgreSQLなどのporg以外のパッケージを管理する場合は、make install時に以下のようにコマンドを実行する。

porg -lp porgでの管理名 "make install"

例)httpd-2.4.12をhttpd01としてコンパイルする

サンプルとして、httpd-2.4.12をhttpd01インスタンスとしてコンパイルし、porgの管理対象としてインストールしてみる。
まずは、前提となるパッケージ「apr」「apr-util」をインストールし、これらもporgの管理対象とする。

apr

cd /opt
mkdir apr
cd apr
wget http://ftp.jaist.ac.jp/pub/apache/apr/apr-1.5.2.tar.gz
tar -xvzf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/opt/apr
make
porg -lp apr "make install"

apr-util

cd /opt
mkdir apr-util
cd apr-util
wget http://ftp.jaist.ac.jp/pub/apache/apr/apr-util-1.5.4.tar.gz
tar -xvzf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/opt/apr-util --with-apr=/opt/apr
make
porg -lp apr-util "make install"

httpd01

cd /opt
mkdir httpd01
wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/httpd/httpd-2.4.12.tar.gz
tar zxvf httpd-2.4.12.tar.gz
cd httpd-2.4.12
./configure --prefix=/opt/httpd01 \
--enable-rewrite=shared \
--enable-speling=shared \
--enable-so \
--with-apr=/opt/apr \
--with-apr-util=/opt/apr-util
make
porg -lp httpd01 "make install"

これで、apr、apr-util、httpd01がporgの管理対象になった。
以下のコマンドで、現在のporgの管理パッケージを確認できる。

porg -a
[root@dctest01 ~]# porg -a
apr
apr-util
httpd01
porg-0.8

3.パッケージを管理してみる

実際にporgでパッケージを確認する際のオプションを幾つかピックアップしてみた。

3-1.現在管理しているパッケージを出力する

現在管理しているパッケージの一覧を出力するには、「porg -a」を実行する。

porg -a
[root@dctest01 ~]# porg -a
apr
apr-util
httpd01
porg-0.8

3-2.パッケージの情報を取得する

パッケージの情報を取得するには、「porg -i」を実行する。

porg -i パッケージ管理名
[root@dctest01 ~]# porg -i apr-util
----------
 apr-util
----------
Name:    apr-util
Version:
Summary: Apache Portable Runtime Utility library
Author:
License: Apache Software License
URL:     http://apr.apache.org/

Description:
   The mission of the Apache Portable Runtime (APR) is to provide a
   free library of C data structures and routines.  This library
   contains additional utility interfaces for APR; including support
   for XML, LDAP, database interfaces, URI parsing and more.

3-3.パッケージで保有しているファイルの一覧を取得する

パッケージで保有しているファイルの一覧を取得する場合は、「porg -f」を実行する。

porg -f パッケージ管理名
[root@dctest01 ~]# porg -f apr
apr:
/opt/apr/bin/apr-1-config
/opt/apr/build-1/apr_rules.mk
/opt/apr/build-1/libtool
/opt/apr/build-1/make_exports.awk
/opt/apr/build-1/make_var_export.awk
/opt/apr/build-1/mkdir.sh
/opt/apr/include/apr-1/apr.h
/opt/apr/include/apr-1/apr_allocator.h
/opt/apr/include/apr-1/apr_atomic.h
/opt/apr/include/apr-1/apr_dso.h
/opt/apr/include/apr-1/apr_env.h
/opt/apr/include/apr-1/apr_errno.h
/opt/apr/include/apr-1/apr_escape.h
/opt/apr/include/apr-1/apr_file_info.h
...以下略

なお、パッケージで保有しているファイルの数を取得する場合は、「porg -F」を利用する。

porg -F パッケージ管理名
[root@dctest01 ~]# porg -F apr
51  apr

ファイルの合計サイズを取得する場合は、「porg -s」を利用する。

porg -s パッケージ管理名
[root@dctest01 ~]# porg -s apr
3.1M  apr

3-3.パッケージのコンパイルオプションを取得する

パッケージのコンパイル時のオプションを取得する場合は、「porg -o」を用いる。

porg -o パッケージ管理名
[root@dctest01 ~]# porg -o httpd01
--prefix=/opt/httpd01 --enable-rewrite=shared --enable-speling=shared --enable-so --with-apr=/opt/apr --with-apr-util=/opt/apr-util

3-4.パッケージをアンインストールする

パッケージをアンインストールする場合は、「porg -r」を実行する。

porg -r パッケージ管理名
[root@dctest01 ~]# ls -la /opt/httpd01/
合計 52
drwxr-xr-x. 14 root root 4096  6月 27 23:58 .
drwxr-xr-x.  8 root root 4096  6月 27 23:49 ..
drwxr-xr-x.  2 root root 4096  6月 27 23:58 bin
drwxr-xr-x.  2 root root 4096  6月 27 23:58 build
drwxr-xr-x.  2 root root   74  6月 27 23:58 cgi-bin
drwxr-xr-x.  4 root root   79  6月 27 23:58 conf
drwxr-xr-x.  3 root root 4096  6月 27 23:58 error
drwxr-xr-x.  2 root root   23  6月 27 23:49 htdocs
drwxr-xr-x.  3 root root 8192  6月 27 23:58 icons
drwxr-xr-x.  2 root root 4096  6月 27 23:58 include
drwxr-xr-x.  2 root root    6  6月 27 23:58 logs
drwxr-xr-x.  4 root root   28  6月 27 23:58 man
drwxr-xr-x. 14 root root 8192  1月 23 03:50 manual
drwxr-xr-x.  2 root root 4096  6月 27 23:58 modules
[root@dctest01 ~]# porg -a
apr-util
httpd01
porg-0.8
[root@dctest01 ~]# porg -r httpd01
The following packages will be removed:
  httpd01
Do you want to proceed (y/N) ? y
[root@dctest01 ~]# ls -la /opt/httpd01/
合計 4
drwxr-xr-x. 4 root root   30  6月 28 00:52 .
drwxr-xr-x. 8 root root 4096  6月 27 23:49 ..
drwxr-xr-x. 2 root root    6  6月 27 23:58 logs
drwxr-xr-x. 3 root root   18  6月 28 00:52 manual
[root@dctest01 ~]# porg -a
apr-util
porg-0.8

大変便利なものなので、出来ればバンドルしてもらいたいくらいだ。