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

インストール手順概要

インストール環境

apache 2.0.50(2.0.55) + mod_ssl + WevDAV + Sun Crypto Accelerator

ソース

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

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

コンパイル

% cd httpd-2.0.50
% 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 ----
% ./configure --prefix=/opt/apache --enable-so \
--enable-mods-shared="access actions alias asis auth auth_anon auth_dbm autoindex cern_meta cgi dav dav_fs dir encoding env expires ext_filter headers imap include info log_config mime mime_magic negotiation rewrite setenvif speling unique_id userdir usertrack vhost_alias" \
--enable-ssl --with-mpm=prefork --with-z=/opt/local \
--with-ssl=/opt/SUNWconn/crypto EXTRA_LIBS="-lcryptography -lnvpair"

で build/config_vars.mk

  EXTRA_LIBS = -lssl -lcrypto

の行を

  EXTRA_LIBS = -lssl -lcrypto -lcryptography -lnvpair

と変更する.

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

AP_LIBS = /home/user01/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

で,J 環境では,上記 EXTRA_LDFLAGS を元に戻して (2.0.50 で OpenSSL 0.9.7b ぐらいの時代), or "-L/opt/SUNWconn/crypto/lib" を一番前に持ってきて

% make clean
% make
# make install

しないと,Crypto Accelerator のライブラリにリンクしてくれない.

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

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

起動スクリプト(アップデート時は必要なし)

#!/bin/sh
#
#
# Startup for httpd
#

APACHE_FS_ENCODING=eucJP
export APACHE_FS_ENCODING

case "$1" in
'start')
	 /opt/apache/bin/apachectl startssl
	 ;;
'stop')
	 /opt/apache/bin/apachectl stop
	 ;;
'restart')
	 /opt/apache/bin/apachectl restart
	 ;;
*)
	 echo "Usage: /etc/rc2.d/S98wwwserver { start | stop }"
	   ;;
esac
exit 0

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

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 Makefile
diff -c Makefile Makefile.org 
*** Makefile    Wed Nov 26 19:26:34 2003
--- Makefile.org        Tue Jul 15 10:17:18 2003
***************
*** 149,156 ****
  # std system standard (typically passwd file), determined by port
  # two try alternative (defined by CHECKPWALT), then std

! #PASSWDTYPE=std
! PASSWDTYPE=pam


  # SSL type.  Defines whether or not SSL support is on this system
--- 149,155 ----
  # std system standard (typically passwd file), determined by port
  # two try alternative (defined by CHECKPWALT), then std

! PASSWDTYPE=std


  # SSL type.  Defines whether or not SSL support is on this system
% vi src/osdep/unix/Makefile
diff -c src/osdep/unix/Makefile src/osdep/unix/Makefile.org 
*** src/osdep/unix/Makefile     Wed Nov 26 19:55:39 2003
--- src/osdep/unix/Makefile.org Wed Nov 26 19:50:40 2003
***************
*** 28,37 ****

  # Extended flags needed for SSL.  You may need to modify.

! SSLDIR=/opt/local/ssl
  SSLCERTS=$(SSLDIR)/certs
! SSLKEYS=$(SSLDIR)/private
! SSLINCLUDE=/opt/local/include
! SSLLIB=/opt/local/lib

  SSLCRYPTO=-lcrypto
--- 28,37 ----

  # Extended flags needed for SSL.  You may need to modify.

! SSLDIR=/usr/local/ssl
  SSLCERTS=$(SSLDIR)/certs
! SSLKEYS=$(SSLCERTS)
! SSLINCLUDE=$(SSLDIR)/include
  SSLLIB=$(SSLDIR)/lib

  SSLCRYPTO=-lcrypto
% 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.12.1

% cd gettext-0.12.1
#   % ./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.3.8(4.4.2)

http://jp.php.net/get/php-4.3.8.tar.gz/from/this/mirror

Cypto Accelerator の場合,以下のパッチをあてる (リンクライブラリに -lcryptography -lnvpair を加えている)

  -----------------------------------------------------------------------
  % diff  configure configure.org 
  16461c16461
  < LIBS="-lssl  -lcryptography -lnvpair $LIBS"
  ---
  > LIBS="-lssl  $LIBS"
  40432c40432
  <         IMAP_SHARED_LIBADD="$IMAP_SHARED_LIBADD -lcrypto -lcryptography -lnvpair" 
  ---
  >         IMAP_SHARED_LIBADD="$IMAP_SHARED_LIBADD -lcrypto" 
  40439c40439
  <       DLIBS="$DLIBS -lcrypto -lcryptography -lnvpair" <--4.4.2 の場合は記述が少し違う(DLIBS じゃないので注意)
  ---
  >       DLIBS="$DLIBS -lcrypto" 
  -----------------------------------------------------------------------

#END OF Crypto Accelerator

  % ./configure --prefix=/opt/local --with-apxs2=/opt/apache/bin/apxs \
    --enable-mbstring --enable-mbregex \
    --with-openssl=/opt/SUNWconn/crypto \
    --with-imap=/opt/local --with-imap-ssl=/opt/local \
    --with-zlib=/opt/local \
    --with-gettext=/opt/local \
    --with-xml \
    --with-mcrypt=/opt/local \
    --with-mysql=/opt/mysql
  % make
  # make install
  #  # cp php.ini-dist /opt/local/lib/php.ini
  # 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 モジュール

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

その他

/* snip   Horde のモジュール? kronolith のときにいる
 *Date_Calc
 *HTML_Common
 *HTML_Select
*/

IMP

Horde

# cd /opt/apache/htdocs
# gzcat horde-2.2.1-jp-0.2.tgz | tar xvf -
# mv horde-2.2.1-jp-0.2 horde             
# chown -R root:sys horde

horde用のデータベースを作成

# vi +23 horde/scripts/db/mysql_create.sql

で 23行目のパスワードを変更(********)

# mysql --user=root -p < horde/scripts/db/mysql_create.sql

horde の設定ファイル

# cd horde/config/
# for foo in *.dist; do cp $foo `basename $foo .dist`; done

(上記作業は新規の場合.J 版の場合はこの作業はしてあるが, 既存のものに上書きすると,現行設定が消えてしまうので注意. バージョンアップの場合は,J 版とダウンロード版で違いはないので, 現行設定をバックアップしておいて,それで上書きする)

# vi horde.php
$conf['log']['type'] = 'syslog';  // 116行目

$conf['log']['name'] = LOG_LOCAL1;  // 123行目

$conf['prefs']['driver'] = 'sql';   //148行目

$conf['prefs']['params']['phptype'] = 'mysql';       //157-162行目
$conf['prefs']['params']['hostspec'] = 'localhost';
$conf['prefs']['params']['username'] = 'horde';
$conf['prefs']['params']['password'] = 'r*******n';  //<--パスワード
$conf['prefs']['params']['database'] = 'horde';
$conf['prefs']['params']['table'] = 'horde_prefs';

$conf['mailer']['type'] = 'smtp';  //204 行目


//$conf['mailer']['params'] = array();
//$conf['mailer']['params'] = array('sendmail_path' => '/usr/lib/sendmail');
$conf['mailer']['params'] = array('host' => 'mailhost.******.jp');

                                                       // 211-213 行目
# chown apache:apache horde.php
# chmod 400 horde.php

http://localhost/horde/test.php にアクセスしてテスト.

テスト後は

# chmod 400 をしておく

IMP

# cd /opt/apache/htdocs/horde
# gzcat imp-3.2.1-jp-0.1.tgz | tar xvf -
# mv imp-3.2.1-jp-0.1 imp
# chown -R root:sys imp

horde のログインを IMP に統一

# vi +23 horde/config/registry.php
$this->registry['auth']['login'] = 'imp';    //コメントを外す
$this->registry['auth']['logout'] = 'imp';

IMP のステータスを active に

# vi +109 horde/config/registry.php
  'status' => 'active'

Horde の名前を AAAA に...

# vi +83 horde/config/registry.php
  'name' => _("AAAA WebMail System"), /* TNK */

この後,horde/imp/locale/ja_JP/LC_MESSAGES/imp.mo を入れ換える.

 (imp.mo は horde/imp/po/ja_JP.po から作成.
   一旦,同じディレクトリ階層を作って
   ja_JP.po を編集,その後 imp/po で make し,
   ../locale/ja_JP/LC_MESSAGES/imp.mo にできたファイルを
   コピー.
   ちなみに,imp.mo の作成作業は Linux でやった方が良い.
 )

IMP の設定ファイル

 # cd horde/imp/config/
 # for foo in *.dist; do cp $foo `basename $foo .dist`; done

(上記作業は新規の場合.J 版の場合はこの作業はしてあるが, 既存のものに上書きすると,現行設定が消えてしまうので注意.

conf.php はマージする必要があり.prefs.php は微妙.

IMP 全般の設定

# vi conf.php
$conf['menu']['apps'] = array('turba');

$conf['msg']['append_trailer'] = false;

接続先 IMAP サーバの設定.

# vi server.php
$servers['imap'] = array(
    'name' => 'IMAP Server',
    'server' => 'mailhost.*******.jp',
    'protocol' => 'imap/notls',
    'port' => 143,
    'folders' => 'mail/',
    'namespace' => '',
    'maildomain' => 'up.*****.jp',
    'smtphost' => 'mailhost.******.jp',
    'realm' => 'up.*****.jp',
    'preferred' => ''
);

ゴミ箱を使う設定

# vi prefs.php
// should we move messages to a trash folder instead of just marking
// them as deleted?
// a value of 0 = no, 1 = yes
$_prefs['use_trash'] = array(
    'value' => 1,               //<--- 0 を 1に変える
    'locked' => false,
    'shared' => false,
    'type' => 'checkbox',
    'desc' => _("When deleting messages, move them to your Trash folder insteadof marking them as deleted?")
);

メールアドレスをアドレス帳に加える設定

$_prefs['add_source'] = array(
//    'value' => '',
 'value' => 'localsql',
   'locked' => false,
   'shared' => false,
   'type' => 'implicit'
);

IMP テスト

http://localhost/horde/imp/test.php にアクセスしてテスト.

テスト後は

chmod 400

をしておく

turba

# cd horde
# gzcat turba-1.2-jp-0.2.tgz | tar xvf -
# mv turba-1.2-jp-0.2/ turba
# chown -R root:sys turba

Hordeの導入で作成したデータベースに,Turba用テーブルを追加.

# /opt/mysql/bin/mysql --user=root -p horde \
  < turba/scripts/drivers/turba.sql

Turba の設定

# cd turba/config/
# for foo in *.dist; do cp $foo `basename $foo .dist`; done

(上記作業は新規の場合.J 版の場合はこの作業はしてあるが, 既存のものに上書きすると,現行設定が消えてしまうので注意.

sources.php はマージする必要があり.prefs.php は微妙.

# vi conf.php
 $conf['menu']['apps'] = array('imp');  // 31行目
# vi +140 sources.php
$cfgSources['localsql'] = array(
    'title' => 'My Addressbook',
    'type' => 'sql',
    'params' => array(
        'phptype' => 'mysql',
        'hostspec' => 'localhost',
        'username' => 'horde',
        'password' => 'r******n',
        'database' => 'horde',
        'table' => 'turba_objects'
    ),

また,$cfgSources['localsql'] と $cfgSources['prefs'] 以外の ブロックはコメントアウトしておく.

# chown apache sources.php
# chmod 400 sources.php

Horde に Turba を登録

# vi +118 horde/config/registry.php
 'name' => _("Address Book"),
 'allow_guests' => false,
 'status' => 'active'           //<-- この行

その他

syslog

/root/acct-log.sh の最後に

  #
  # horde.log の処理
  if [ "`/usr/bin/date +%u`" = "1" ]; then
      cp /var/adm/horde.log ${ACCTDIR}/horde.log.${DATE}
      cp /dev/null /var/adm/horde.log
  fi
  #

/etc/syslog.confの最後に

  local1.info                                     /var/adm/horde.log

Welcome メッセージ

とりあえず

horde/imp/templates/login

の login.inc で

# diff login.inc login.inc.org 
63c63
<   <?php printf(_("Welcome to %s"), "WebMail") ?>
---
>   <?php printf(_("Welcome to %s"), ($registry->getMethod('auth/login') == 'imp') ? $registry->getParam('name', 'horde') : $registry->getParam('name')) ?>

といった強引な patch を作ったがどうなのか.

motd

horde/imp/config/motd.php に以下のような内容を追加することで, horde/imp/config/motd.txt の内容をログイン画面に表示させることができる. (ただし,html のタグは食われるので注意)

<!-- It will be included below the log-in form on the login page. -->
<?php
echo '<div align="center" class="light">';
$trailer = implode(@file(IMP_BASE . '/config/motd.txt'), '');
echo "$trailer";

echo _("Tiger Tiger Gillets Tiger!</div>");
?>

また,たぶん horde/config/motd.php に同じような修正を加えると, ログイン後の最初の Horde の画面にメッセージが表示される.

preference2.pl 用 DB 作成

 % /opt/mysql/bin/mysql -u horde -p******* -e "CREATE TABLE horde_fromaddr \
	(user char(255) NOT NULL, fromaddr char(255) NOT NULL, \
	fullname char(255) DEFAULT '')" horde

preference2.pl の修正

bash-2.03$ diff preference2-tnk.pl preference2.pl 
1c1
< #!/usr/bin/perl -w
---
> #!/usr/local/bin/perl -w
21c21
< my $mysql = "/opt/mysql/bin/mysql";
---
> my $mysql = "/usr/local/bin/mysql";
23c23
< my $password = "********";
---
> my $password = "XXXXXXXX";
28d27
< my $domain = "******.jp";
59c58
<         system("$mysql -u $user -p$password -e \"delete from $pref_table where pref_uid='$username\@$domain'\" $db");
---
>         system("$mysql -u $user -p$password -e \"delete from $pref_table where pref_uid='$username\@localhost'\" $db");
61c60
<         system("$mysql -u $user -p$password -e \"delete from $addr_table where owner_id='$username\@$domain'\" $db");
---
>         system("$mysql -u $user -p$password -e \"delete from $addr_table where owner_id='$username\@localhost'\" $db");

Zend Optimizer

ZendOptimizer-2.5.3-sunos5.6-sparc.tar.gz を展開して,

./install

Zend Encorder

/opt/Zend/bin/zendenc --recursive --ignore config --no-header horde horde.n

このあと

# /opt/apache/htdocs/horde/config
# /opt/apache/htdocs/horde/imp/config
# /opt/apache/htdocs/horde/turba/config

内のファイルをこのディレクトリ構成でコピーしておく.


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