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

インストール手順概要

インストール環境

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

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

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

apache 2.0.61 + mod_ssl + WebDAV

ソース

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

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

コンパイル

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

reject される。

そのうち,modules/generators/mod_autoindex.c に関するものは無視してヨサゲ.

srclib/apr/file_io/unix/Makefile.in を手直し

diff -c Makefile.in.014ed.org Makefile.in
*** Makefile.in.014ed.org       Tue Dec 11 13:46:39 2007
--- Makefile.in Tue Dec 11 13:47:14 2007
***************
*** 16,22 ****
	 readwrite.lo \
	 seek.lo \
	 mktemp.lo \
!       tempdir.lo

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

  # bring in rules.mk for standard functionality
  @INCLUDE_RULES@
 diff -c open.c.014ed.org open.c
 *** open.c.014ed.org    Tue Dec 11 13:37:18 2007
 --- open.c      Tue Dec 11 14:26:52 2007
 ***************
 *** 28,39 ****

   static apr_status_t file_cleanup(apr_file_t *file)
   {
 !     apr_status_t rv = APR_SUCCESS;

	if (close(file->filedes) == 0) {
	    file->filedes = -1;
	    if (file->flags & APR_DELONCLOSE) {
 !             unlink(file->fname);
	    }
   #if APR_HAS_THREADS
	    if (file->thlock) {
 --- 28,43 ----

   static apr_status_t file_cleanup(apr_file_t *file)
   {
 !     apr_status_t rv = APR_SUCCESS, rv2 = APR_SUCCESS;
 !     char fsname[APR_PATH_MAX];
	if (close(file->filedes) == 0) {
	    file->filedes = -1;
	    if (file->flags & APR_DELONCLOSE) {
 !          rv2 = apr_iconv_proc2fs(file->fname, fsname);
 !            if (rv2 != APR_SUCCESS)
 !                return rv2;
 !            unlink(fsname);
	    }
   #if APR_HAS_THREADS
	    if (file->thlock) {
$ 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' \
> ./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

このあと,ソースに手を加える. どうも,LDAP の SDK の種類を自動的に見分けられないようで httpd-2.0.61/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
     */

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

AP_LIBS = /home/nullpyon/build/httpd-2.0.61/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
% patch -p0 < ../src/mod_encoding-20020611a-safequery.patch

このあと,mod_encoding.c の冒頭の

/* #include <ap_compat.h> */

のコメントをはずし,

#include <ap_compat.h>

とする.

% 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:/usr/local/lib:/usr/sfw/lib \
 -R/opt/local/lib:/usr/local/lib:/usr/sfw/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

とする.



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