ソースファイルを手に入れて,一からRPMを作っていくのはかなり大変な作業だ。そこでまずは,.src.rpmで配布されているパッケージを利用してRPMの構造を知ることから始めよう。ここでは,Red Hat Linux 7.2を前提としてApache 1.3.22を使用した例を解説をしていく。
# wget ftp://updates.redhat.com/7.2/en/os/SRPMS/apache-1.3.22-2.src.rpm #rpm -i apache-1.3.22-2.src.rpm |
上記のようにファイルをゲットしてrpmで指定(-i)をすると,「/usr/src/redhat/」ディレクトリ下に該当ファイルがインストールされる。このディレクトリ下には次のようなサブディレクトリがあり,それぞれの目的別に分類されるのだ。
# cd /usr/src/redhat # ls BUILD RPMS SOURCES SPECS SRPMS |
lsで表示されたディレクトリそれぞれの目的の詳細は次の通りである。
|
次に挙げるのは,SOURCES/とSPECS/下それぞれの内容である。上記表のように,この2つのディレクトリ下に主要ファイルが含まれている。
# ls SOURCES/ SSL-Certificate-Creation apache_1.3.20-apachectl-init.patch httpd.init apache-1.3.11-apxs.patch apache_1.3.20-db.patch poweredby.png apache-index.html apache_1.3.22-config.patch spacer48.png apache.logrotate apache_1.3.22-eapi-2.8.5.patch sslcfg.patch apache_1.3.14-mkstemp.patch apache_1.3.22-phhttpd-eapi.patch apache_1.3.14-redhat.patch apache_1.3.22.tar.gz ※ここでは見やすいように便宜上1ファイルごとに改行をした # ls SPECS/ apache.spec |
apache.specは,前述のようにインストール先や条件を設定する重要なファイルになるが,RPMパッケージを一から作成するためにはこのspecファイルを作らなければならない。ここでは,apache.specの中身の概要を載せてみた。
# cat SPECS/apache.spec %define contentdir /var/www %define mod_ssl_ver 2.8.5 %define piranha62 0 %define suexec_caller apache Summary: The most widely used Web server on the Internet. Name: apache Version: 1.3.22 Release: 2 Group: System Environment/Daemons Source: ftp://ftp.apache.org/apache/dist/apache_%{version}.tar.gz ........中略........ %build CFLAGS="$RPM_OPT_FLAGS -fPIC -DEAPI_MM_CORE_PATH='\"%{_localstatedir}/run/httpd.mm\"'" ; export CFLAGS LIBS="-lpthread" ; export LIBS EAPI_MM=SYSTEM; export EAPI_MM ./configure \ --prefix=%{_sysconfdir}/httpd \ --exec-prefix=%{_prefix} \ --bindir=%{_bindir} \ --sbindir=%{_sbindir} \ --mandir=%{_mandir} \ --sysconfdir=%{_sysconfdir}/httpd/conf \ --includedir=%{_includedir}/apache \ --libexecdir=%{_libdir}/apache \ --datadir=%{contentdir} \ --iconsdir=%{contentdir}/icons \ --htdocsdir=%{contentdir}/html \ --manualdir=%{contentdir}/html/manual \ --cgidir=%{contentdir}/cgi-bin \ --localstatedir=%{_localstatedir} \ --runtimedir=%{_localstatedir}/run \ --logfiledir=%{_localstatedir}/log/httpd \ --proxycachedir=%{_localstatedir}/cache/httpd \ --enable-module=all \ --enable-shared=max \ --enable-rule=EAPI \ --disable-rule=WANTHSREGEX \ --enable-module=auth_dbm \ --with-perl=%{__perl} \ --enable-suexec \ --suexec-docroot=%{contentdir} \ ......以下略....... |
ここで注目してほしいのは,「%build」以下で定義されているオプションだ。ソースのMakefile作成の際にお馴染みな,./configureの文字列も見られる。
例えば,ここに記述されているconfigureのオプションを編集後にRPMパッケージを生成(ビルド)すれば,レッドハットから配布されているRPMとは少し異なったオリジナルなパッケージを作成することが可能だ。
次回はspecファイルの読み方を解説していこう。
Copyright © ITmedia, Inc. All Rights Reserved.