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
大変便利なものなので、出来ればバンドルしてもらいたいくらいだ。