フリーソフトウェアのコンパイル

インストール手順概要

インストール環境

また,Cryptographic Framework については, Sun Bingadmin

http://www.sun.com/bigadmin/motd/042006.html

から crypto framework で検索して出てくる文書 「The Solaris Cryptographic Framework」(pdf)を参照.

apache 2.0.59 + mod_ssl + WebDAV

ソース

http://httpd.apache.org/download.cgi より

http://webdav.todo.gr.jp/download/ より

コンパイル

$ cd httpd-2.0.59
$ gzcat ../../src/014_path_iconv.gz |gpatch -p2

reject されるので srclib/apr/file_io/unix/Makefile.in を手直し

  diff -c Makefile.in Makefile.in.org 
  *** Makefile.in Wed Nov 26 17:02:50 2003
  --- Makefile.in.org     Wed Nov 26 17:10:21 2003
  ***************
  *** 16,23 ****
	   readwrite.lo \
	   seek.lo \
	   mktemp.lo \
  !       tempdir.lo \
  !       path_iconv.lo

    # bring in rules.mk for standard functionality
    @INCLUDE_RULES@
  --- 16,22 ----
	   readwrite.lo \
	   seek.lo \
	   mktemp.lo \
  !       tempdir.lo

    # bring in rules.mk for standard functionality
    @INCLUDE_RULES@
$ gzcat ../../src/015_escape_amp.gz | gpatch -p2
$ gzcat ../../src/016_ie_webdavize.gz | gpatch -p2

このままコンパイルするとエラーが出るんで, srclib/apr/file_io/unix/dir.c を修正する

  diff -c dir.c dir.c.org
  *** dir.c       Wed Nov 26 17:29:47 2003
  --- dir.c.org   Wed Nov 26 16:56:50 2003
  ***************
  *** 13,20 ****
     * limitations under the License.
     */

  - #define NAME_MAX 256
  - 
    #include "apr_arch_file_io.h"
    #include "apr_strings.h"
    #include "apr_portable.h"
  --- 13,18 ----
$ CFLAGS='-DSSL_EXPERIMENTAL -DSSL_ENGINE -xO4' \  (-xO4 はもしかしたら gcc じゃ NG?)
> ./configure --prefix=/opt/apache --enable-so \
> --enable-mods-shared=all \
> --enable-ssl --with-mpm=prefork --with-z=/usr \
> --enable-rule=SSL_EXPERIMENTAL \
> --with-ssl=/usr/sfw

その他,J 環境では同じく build/config_vars.mk に対して

AP_LIBS = /home/nullpyon/build/httpd-2.0.50/srclib/pcre/libpcre.la ...

の行の最後に

-liconv

を付け加え,さらに

EXTRA_LDFLAGS = -L/usr/local/lib -L/opt/SUNWconn/crypto/lib ...

の行の最初の所に

-L/opt/local/lib

を加えて,

EXTRA_LDFLAGS = -L/opt/local/lib -L/usr/local/lib ... 

となるようにする.

% make
# make install

apache ユーザ作成(アップデート時は必要なし)

# groupadd -g 80 apache
# useradd -d /dev/null -u 80 -g apache -s /bin/false apache

ssl.conf

SSLCryptoDevice pkcs11
SSLRandomSeed startup file:/dev/urandom 512
SSLRandomSeed connect file:/dev/urandom 512

という行を加えておく. あと,SSLCipherSuite の設定を次のようにするべし.

SSLCipherSuite ALL:!ADH:!EXPORT56:-AES256-SHA:-DHE-RSA-AES256-SHA:
-DHE-DSS-AES256-SHA:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
(実際は 1行)

SMF の管理下にする.

既にOS標準の apache が SMF で管理されているので,これを修正する. (通常は修正しなくても大丈夫なはずだが...

# vi /var/svc/manifest/network/http-apache2.xml
# svccfg import /var/svc/manifest/network/http-apache2.xml
# vi /lib/svc/method/http-apache2
(以下の修正を加える)
---
--- /lib/svc/method/http-apache2.OSORG	Sat Jan  8 17:51:58 2005
+++ /lib/svc/method/http-apache2	Fri Jul 29 18:22:03 2005
@@ -8,9 +8,9 @@
 
 . /lib/svc/share/smf_include.sh
 
-APACHE_HOME=/usr/apache2
-CONF_FILE=/etc/apache2/httpd.conf
-PIDFILE=/var/run/apache2/httpd.pid
+APACHE_HOME=/usr/local/apache2
+CONF_FILE=/usr/local/apache2/conf/httpd.conf
+PIDFILE=/usr/local/apache2/logs/httpd.pid
 
 [ ! -f ${CONF_FILE} ] &&  exit $SMF_EXIT_ERR_CONFIG
 
@@ -17,7 +17,6 @@
 case "$1" in
 start)
 	/bin/rm -f ${PIDFILE}
-	/bin/mkdir -p /var/run/apache2
 	ssl=`svcprop -p httpd/ssl svc:/network/http:apache2`
 	if [ "$ssl" = false ]; then
 		cmd="start"
---

SSLを利用する場合には,以下のようにする.

# svccfg -s apache2 setprop httpd/ssl = true

(<-これ,再起動しないと反映しないんだけど,何か方法があるのか?)

この後,自己証明書などの作成.

mod_encoding(アップデート時は必要なし)

ソース

http://webdav.todo.gr.jp/download/ より

libiconv_hook

% gzcat ../src/mod_encoding-20021209.tar.gz | tar xvf -
% cd mod_encoding-20021209/
% mv mod_encoding.c mod_encoding.c.org
% cp ../../src/mod_encoding.c.apache2.20020611a-2 mod_encoding.c
% cd lib
% ./configure --prefix=/opt/local
% gmake
# gmake install

mod_encoding(アップデート時は必要なし)

2.0.X 同志のバージョンアップなら古いものをコピーしても可能

ソース展開は, libiconv_hook のところを参照.

% cd ..
% ./configure --prefix=/opt/local \
 --with-apxs=/opt/apache/bin/apxs \
 --with-iconv-hook=/opt/local/include
% gmake
# gmake install
-> エラー
% gcc -shared -o mod_encoding.so mod_encoding.o -Wc,Wall \
 -L/opt/local/lib -R/opt/local/lib -liconv_hook
# cp mod_encoding.so /opt/apache/modules

その後,/opt/apache/conf/httpd.conf に

  LoadModule encoding_module modules/mod_encoding.so

という行を加える.

PHP に必要なもろもろ

UW-IMAP 2002e の c-client のヘッダとライブラリ(アップデート時は必要なし)

% cd imap-2002e
% vi src/osdep/unix/Makefile

SSLDIR=/usr/sfw
SSLCERTS=/etc/sfw/openssl/certs
SSLKEYS=/etc/sfw/openssl/private
SSLINCLUDE=$(SSLDIR)/include
SSLLIB=$(SSLDIR)/lib

このまま make gso をするとエラーが出るので, 以下ファイルの scandir の部分を scandirtnk に変更する.

% make gso
# cp c-client/c-client.a /opt/local/lib/libc-client.a
# cp c-client/rfc822.h /opt/local/include/
# cp c-client/mail.h /opt/local/include/
# cp c-client/linkage.h /opt/local/include/

gnu gettext 0.14.6

% cd gettext-0.14.6
#   % ./configure --prefix=/opt/local
% ./configure --prefix=/opt/local CC=cc CXX=CC LD_RUNPATH=${LD_RUNPATH}
% make
# make install

libmcrypt-2.5.7

% cd libmcrypt-2.5.7
% ./configure --prefix=/opt/local   
% make

エラー?

% make clean;make  (なんで 2回目は通る?)
# make install

php 4.4.2

まず,以下の作業をしてから.

$ cd php-src/pear/packages
$ wget http://pear.php.net/get/Archive_Tar-1.3.1.tar
$ wget http://pear.php.net/get/Console_Getopt-1.2.tar
$ wget http://pear.php.net/get/HTML_Template_IT-1.1.tar
$ ./configure --prefix=/opt/local --with-apxs2=/opt/apache/bin/apxs \
   --enable-mbstring --enable-mbregex \
   --with-openssl=/usr/sfw \
   --with-imap=/opt/local --with-imap-ssl=/opt/local \
   --with-zlib \
   --with-gettext=/opt/local \
   --with-xml \
   --with-mcrypt=/opt/local \
   --with-mysql=/usr/sfw
$ make
# make install
# cp php.ini-recommended /opt/local/lib/php.ini

編集

  [PHP]
  output_buffering = Off

  [mbstring]
  mbstring.language = Japanese
  mbstring.internal_encoding = EUC-JP
  mbstring.http_input = auto
  mbstring.http_output = EUC-JP
  mbstring.encoding_translation = On
  mbstring.detect_order = auto
  mbstring.substitute_character = none;

/opt/apache/conf/httpd に

  AddType application/x-httpd-php .php .phtml

という行を付け加える.

また DirectoryIndex 行に index.php を加える.

ex.)

  DirectoryIndex index.html index.html.var index.php

PEAR モジュール

Mime

# pear install --alldeps Mail

Log-1.8.0.tgz

  # pear install Log

Mail_Mime-1.2.1.tgz

  # pear install Mail_Mime

Net_Socket-1.0.1.tgz

  # pear install Net_Socket
  Package 'Net_Socket' already installed, skipping

Zend Optimizer

ZendOptimizer-3.0.1-sunos5.8-sparc.tar.gz インストール場所を

/opt/Zend

とする.


LDAP モジュールを追加する

上記で作成した WWW サーバに LDAP 関連モジュールを追加する.

Apache を作成したときのソースツリーを利用して

$ mkdir build/apx_mod
$ cd build/httpd-2.0.59/modules/experimental
$ cp *ldap* ../../../build/apx_mod
$ cd ../../../build/apx_mod
$ /opt/apache/bin/apxs -c mod_auth_ldap.c

でできるかと思ったが,apr-util が「LDAP 対応でないとだめ」という エラーが出て N.G.

apr, apr-util だけ作りなおすってこともできそうなんだけど, なんかちょっと不安なので, インストールしなおした方がいいかなと思う.

なので,

PATH=/opt/SUNWspro/bin:/usr/bin:/usr/sbin:/usr/sfw/bin:/usr/local/bin:/opt/local/bin:/usr/ccs/bin:.
export PATH

LD_LIBRARY_PATH=/opt/local/lib:/usr/local/lib:/usr/sfw/lib
LD_RUN_PATH=${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH LD_RUN_PATH

$ cd build/httpd-2.0.59
$ make distclean

$ CFLAGS='-DSSL_EXPERIMENTAL -DSSL_ENGINE' \
./configure --prefix=/opt/apache --enable-so \
--enable-mods-shared=all \
--enable-ssl --with-mpm=prefork --with-z=/usr \
--enable-rule=SSL_EXPERIMENTAL \
--with-ssl=/usr/sfw \
--with-ldap --enable-ldap --enable-auth-ldap

このまま make したのでは,LDAP_OPT_X_TLS_HARD が定義されていないだの たくさんのエラーが出る.

どうも,LDAP の SDK の種類を自動的に見分けられないようで httpd-2.0.59/srclib/apr-util/include/apr_ldap.h に次のパッチをあてる.

*** apr_ldap.h.org      Mon Dec 10 15:25:40 2007
--- apr_ldap.h  Mon Dec 10 15:26:48 2007
***************
*** 78,83 ****
--- 78,86 ----

  #endif /* APR_NOT_READY_YET */

+ #define APR_HAS_NETSCAPE_LDAPSDK   1
+ #define APR_HAS_LDAP_SSL 1
+
     /* If no APR_HAS_xxx_LDAPSDK is defined error out
      * Define if the SDK supports the ldap_url_parse function
     */

$ make
# make install

インストールが終われば,httpd.conf に次の 2行を追加して再起動.

LoadModule ldap_module  modules/mod_ldap.so
LoadModule auth_ldap_module     modules/mod_auth_ldap.so

その他,マニュアルを参考にディレクティブを書いていく必要がある.

一応テストで使った .htaccess は次の通り.

AuthType Basic
AuthName "LDAP Auth Test"
AuthLDAPURL ldap://192.168.1.1:389/ou=People,dc=ldap,dc=example,dc=jp?uid
require valid-user

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-05-26 (水) 10:45:32