Linuxでソースからコンパイルしてインストールしたパッケージを管理する『porg』
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
大変便利なものなので、出来ればバンドルしてもらいたいくらいだ。