MindTouch Developer Center > Deki > Installation and Upgrade > 8.05 Jay Cooke Source Code Install and Upgrade Guide > SAMP (Solaris10,Apache2,MySQL5,PHP5) with Mono setup-guide for Deki Wiki

SAMP (Solaris10,Apache2,MySQL5,PHP5) with Mono setup-guide for Deki Wiki

 

IMPORTANT NOTICE

This content is contributed by a MindTouch Deki user to OpenGarden community. It has not been reviewed for technical accuracy by MindTouch. If you find an error or would like to comment on the article, please contact to contributor or use the comment field at the bottom of the document.

Overview

Prerequisites for Installation

  • Sun SPARC Solaris 10 11/06 Operating System

      NOTE: Users must have root access to install packages/softwares and should be familiar with the Solaris 10 Operating System command-line utilities.
     
  • Sun Freeware on "Solaris 10 11/06 DVD" fully installed.

      NOTE: This Installed with 'Solaris 10 11/06 OS' (example: Apache2, ImageMagick, Gcc, etc.)
     

Objective this guide

(1) Build runtime environment to run and up the MindTouch Deki for Sun SPARC Solaris 10 host.

This guide is applicable to:

  • Deki 8.05/8.05.x (Jay Cooke)
  • Deki 8.08 (Kilen Woods)

(2) Following softwares will be installed.

  • Apache HTTP server 2.0.X  (bundled with Solaris 10)
     
  • MySQL 5.0.X Database  ("TAR packages" from MySQL.COM)
          NOTE: MindTouch Deki uses stored procedures and is therefore incompatible with MySQL 4.x
          NOTE: MySQL shipped with Solaris 10 11/06 OS (Sun supported software) cannot use because this is "MySQL 4.0.24".
     
  • PHP 5.X  (compiled from source)
          NOTE: MindTouch Deki uses the PHP5 object model and is therefore incompatible with PHP4
          NOTE: php shipped with Solaris 10 11/06 OS (Community (not Sun) supported) cannot use because this is "php-4.3.2".
     
  • Mono 1.2.x  (compiled from source)
          NOTE : USE the latest Mono from the daily package . There are Mono-1.2.6 as "stable-release" but due to some bugs, the MindTouch Deki does not work on it.
     
  • Other MindTouch Deki required stuffs
          NOTE: Bulk of they come from the Solaris Companion CD/DVD

   

References

   

Installing Freewares bundled in Solaris 10

Working environment

  • Server machine
    SUNW, Sun-Blade-1000 (1 x Ultra SPARC-III 750MHz CPU, 1024MByte memory, 1 x 18GByte Disk)
     
  • Solaris Operating Environment
# /usr/bin/showrev
* Release: 5.10
* Kernel architecture: sun4u
* Application architecture: sparc
* Kernel version: SunOS 5.10 Generic_137111-06

# /usr/bin/showrev -w
* OpenWindows version: Solaris X11 Version 6.6.2  5 June 2008

   

Setting up working environment

(1) Create /.bash_profile file to build the MindTouch Deki world.

# cat /.bash_profile
LC_ALL=C
LC_MESSAGES=C
LANG=C

export PATH=/opt/mono/bin:/opt/mysql/bin:/opt/php5/bin:\
/usr/sbin:/usr/bin:/usr/sfw/bin:/usr/sfw/sbin:\
/usr/X/bin:/usr/ucb:/usr/ccs/bin:/opt/sfw/bin:/opt/sfw/sbin:\
/opt/SUNWspro/bin:/opt/subversion-current/bin

export LD_LIBRARY_PATH=/opt/mono/lib:/opt/mysql/lib:/opt/sfw/lib:/usr/sfw/lib:/usr/lib

export MANPATH=/opt/sfw/man:/usr/man:/opt/mysql/man:/opt/php5/man
export PAGER=/usr/bin/less

export LDFLAGS="-L/opt/mysql/lib -L/opt/sfw/lib -L/usr/sfw/lib -L/usr/lib -lstdc++"
export CPPFLAGS="-I/opt/mysql/include -I/opt/sfw/include -I/opt/mysql/include -I/usr/include"

export XFILESEARCHPATH=/opt/sfw/lib/X11/%T/%N%C:/usr/X/lib/X11/%T/%N%C
export LESSCHARSET=utf-8

(2) To take effect this configuration reload bash as:

# bash -login 

(OPTIONAL)
Create $HOME/.wgetrc to specify wget defaults. For example put proxy definition on corporate network.

# cat /.wgetrc
http_proxy=http://proxy.mydomain.com:8080
ftp_proxy=http://proxy.mydomain.com:8080

NOTE:
    * Environment variables for the wget command to use corporate proxy service (ex: http_proxy, ftp_proxy) may bring some side effects when run any other command.

Mount the Solaris 10 Companion DVD image

I get the Companion package collections ISO image from "ftp.sunfreeware.com" site below, in hope that to get latest packages.

1. Operation-guide

2. Download ISO image to your working directory, for example, /tmp.

# cd /tmp
# wget ftp://ftp.sunfreeware.com/pub/freeware/companioncd/iso/companion-sparc-sol10.iso.bz2

3. cd to extract directory and unzip ISO image.

# bunzip2 companion-sparc-sol10.iso.bz2

4. Mount the ISO image file with commands like (as root)

# lofiadm -a `pwd`/companion-sparc-sol10.iso /dev/lofi/1
# mount -F hsfs -o ro /dev/lofi/1 /mnt

5. Now cd to /mnt and you will find the packages, for example, SFWyasr.pkg.bz2. Copy the packages you want to some directory, here just /tmp.

6. In /tmp, run bunzip2 SFWyasr.pkg.bz2.

7. Then run pkgadd -d SFWyasr.pkg and follow the instructions. The files will be installed in /opt/sfw subdirectories.

   

   

Installs "Dependency Bundle" packages from Companion DVD image

Installing the Dependency Bundle, which are handling dependencies between packages.

Operation-guide:


1. copy the packages to working directory (for example : /export/home/archives/pkg)

# mkdir /export/home/archives/pkg
# cp -pi /mnt/*.pkg.bz2 /export/home/archives/pkg

2. Uncompress the files using the bunzip2 utility.

# bunzip2 /export/home/archives/pkg/*.pkg.bz2

3. Install the Dependency Bundle packages in the following order: SFWgcmn, SFWungif and SFWimlib.

# cd /export/home/archives/pkg/

o SFWgcmn     gcmn - Common GNU package
# pkgadd -d SFWgcmn.pkg

o SFWungif     libungif - library used with GIF files
# pkgadd -d SFWungif.pkg

o SFWimlib     imlib - Image loading and rendering library for X11
# pkgadd -d SFWimlib.pkg

4. Install the rest of the Dependency Bundle packages

o SFWaalib     aalib - ASCII Art Library
# pkgadd -d SFWaalib.pkg

o SFWasclk     asclock - the AfterStep clock
# pkgadd -d SFWasclk.pkg

o SFWbdb     berkeleyDB - Berkeley Database Library
# pkgadd -d SFWbdb.pkg

o SFWcoreu     coreutils - GNU core utilities
# pkgadd -d SFWcoreu.pkg

po SFWdb1     Berkeley DB - database library
# pkgadd -d SFWdb1.pkg

o SFWfnlib     fnlib - X11 font rendering library
# pkgadd -d SFWfnlib.pkg

o SFWlibsane     libsane - Scanner libraries and utilities
# pkgadd -d SFWlibsane.pkg

o SFWlpcap     libpcap - A Packet Capture Library
# pkgadd -d SFWlpcap.pkg

o SFWmpeg     MPEG Library - decode MPEG-1 video streams
# pkgadd -d SFWmpeg.pkg

o SFWncur     ncurses - new curses library
# pkgadd -d SFWncur.pkg

o SFWoggl     libogg libao libvorbis - Ogg and Vorbis libraries
# pkgadd -d SFWoggl.pkg

o SFWpcre     PCRE - Perl-compatible regular expression library
# pkgadd -d SFWpcre.pkg

o SFWrline     readline - library for editing command lines
# pkgadd -d SFWrline.pkg

o SFWslang     S-Lang library - for S-Lang language
# pkgadd -d SFWslang.pkg

o SFWtclx     TclX - TCL Extensions
# pkgadd -d SFWtclx.pkg

o SFWter     Freeware Terminal Information - terminfo files
# pkgadd -d SFWter.pkg

o SFWxaw3d     Xaw3d - ThreeD Athena Widgets
# pkgadd -d SFWxaw3d.pkg

Install GNU toolchain and other stuff packages to build Mono

Installing packages from the same DVD image.

o SFWgawk     gawk - pattern scanning and processing language
# pkgadd -d SFWgawk.pkg

o SFWoldap     openldap - Open source Lightweight Directory Access Protocol
# pkgadd -d SFWoldap.pkg

o SFWsed     GNU sed - streaming editor
# pkgadd -d SFWsed.pkg

o SFWaconf     autoconf - GNU autoconf utility
# pkgadd -d SFWaconf.pkg

o SFWamake     automake - GNU automake utility
# pkgadd -d SFWamake.pkg

o SFWltool     libtool - Generic library support script
# pkgadd -d SFWltool.pkg

o SFWgd   gd - GD Graphics Library
# pkgadd -d SFWgd.pkg

o SFWgtxt  GNU gettext - utilities for software localization
# pkgadd -d SFWgtxt.pkg

o SFWtop  top - display information about processes
# pkgadd -d SFWtop

o SFWfile  file - determine file type
# pkgadd -d SWFfile
# mv -i /usr/bin/file /usr/bin/file.orig
# ln -s /opt/sfw/bin/gfile /usr/bin/file

NOTE: Remember, you should be create symbolic link "gfile" to "file" as above, for compatibility reason to MindTouch Deki.

   

   

Update packages from the latest Solaris 10 DVD

You should update Freeware packages on your Solaris box, To avoid link error as below, when build the Mono.

if gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../.. -I../../mono -I../../libgc/include \
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include   -DMONO_BINDIR=\"/opt/mono/bin/\" \
-DMONO_ASSEMBLIES=\"/opt/mono/lib\" -DMONO_CFG_DIR=\"/opt/mono/etc\"  -I/opt/sfw/include \
-I/usr/sfw/include -I/usr/include -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT \
-D_POSIX_PTHREAD_SEMANTICS -DUSE_MMAP -DUSE_MUNMAP -DPLATFORM_SOLARIS \
-D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=500 -D__EXTENSIONS__ -D_XOPEN_SOURCE_EXTENDED=1 \
-DNO_UNALIGNED_ACCESS  -g -O2 -fno-strict-aliasing -Wdeclaration-after-statement -g -Wall \
-Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  \
-Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wcast-align \
-Wwrite-strings -Wno-char-subscripts -Wno-cast-align -mcpu=v9 -MT pedump.o -MD -MP -MF \
".deps/pedump.Tpo" -c -o pedump.o pedump.c; \
then mv -f ".deps/pedump.Tpo" ".deps/pedump.Po"; else rm -f ".deps/pedump.Tpo"; exit 1; fi
/bin/bash ../../libtool --tag=CC --mode=link gcc  -g -O2 -fno-strict-aliasing \
-Wdeclaration-after-statement -g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations \
-Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual \
-Wcast-align -Wwrite-strings -Wno-char-subscripts -Wno-cast-align -mcpu=v9  -L/opt/sfw/lib \
-L/usr/sfw/lib -L/usr/lib -o pedump  pedump.o libmonoruntime.la ../io-layer/libwapi.la \
../utils/libmonoutils.la ../../libgc/libmonogc.la -lgthread-2.0 -lglib-2.0   -lm -lrt   \
-lsocket -lnsl -lxnet -lpthread -lm
gcc -g -O2 -fno-strict-aliasing -Wdeclaration-after-statement -g -Wall -Wunused \
-Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes \
-Wnested-externs -Wpointer-arith -Wno-cast-qual -Wcast-align -Wwrite-strings \
-Wno-char-subscripts -Wno-cast-align -mcpu=v9 -o pedump pedump.o  -L/opt/sfw/lib \
-L/usr/sfw/lib -L/usr/lib ./.libs/libmonoruntime.a ../io-layer/.libs/libwapi.a \
../utils/.libs/libmonoutils.a ../../libgc/.libs/libmonogc.a -ldl -lgthread-2.0 -lglib-2.0 \
-lrt -lsocket -lnsl -lxnet -lpthread -lm
ld: fatal: relocation error: R_SPARC_32: file ../../libgc/.libs/libmonogc.a(sparc_mach_dep.o):\
 symbol <unknown>: offset 0xfd2ca06d is non-aligned
ld: fatal: relocation error: R_SPARC_32: file ../../libgc/.libs/libmonogc.a(sparc_mach_dep.o):\
 symbol <unknown>: offset 0xfd2ca073 is non-aligned
ld: fatal: relocation error: R_SPARC_32: file ../../libgc/.libs/libmonogc.a(sparc_mach_dep.o):\
 symbol <unknown>: offset 0xfd2ca077 is non-aligned
ld: fatal: relocation error: R_SPARC_32: file ../../libgc/.libs/libmonogc.a(sparc_mach_dep.o):\
 symbol <unknown>: offset 0xfd2ca07b is non-aligned
ld: fatal: relocation error: R_SPARC_32: file ../../libgc/.libs/libmonogc.a(sparc_mach_dep.o):\
 symbol <unknown>: offset 0xfd3a1c93 is non-aligned
ld: fatal: relocation error: R_SPARC_32: file ../../libgc/.libs/libmonogc.a(sparc_mach_dep.o):\
 symbol <unknown>: offset 0xfd3cb46e is non-aligned
collect2: ld returned 1 exit status
gmake[3]: *** [pedump] Error 1
gmake[3]: Leaving directory `/mono-20080223/mono/metadata'
gmake[2]: *** [all-recursive] Error 1
gmake[2]: Leaving directory `/mono-20080223/mono'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/mono-20080223'
gmake: *** [all] Error 2


(1) Mount the "Solaris 10 5_08 Operating System" DVD image.


(2) Update some packages with latest one.

o SUNWgcc  gcc - The GNU C compiler (sparc) 11.10.0,REV=2005.01.08.05.16
# pkgadd -d /mnt/Solaris_10/Product SUNWgcc

o SUNWbison  bison - A YACC Replacement (sparc) 11.10.0,REV=2005.01.08.05.16
# pkgadd -d /mnt/Solaris_10/Product SUNWbison

o SUNWflexlex  Flex Lexer (sparc) 11.10.0,REV=2005.01.08.05.16
# pkgadd -d /mnt/Solaris_10/Product SUNWflexlex

o SUNWflexruntime  Flex Lexer (Runtime Libraries) (sparc) 11.10.0,REV=2005.01.08.05.16
# pkgadd -d /mnt/Solaris_10/Product SUNWflexruntime

o SUNWgmake  gmake - GNU make (sparc) 11.10.0,REV=2005.01.08.05.16
# pkgadd -d /mnt/Solaris_10/Product SUNWgmake

o SUNWggrp  ggrep - GNU grep utilities (sparc) 11.10.0,REV=2005.01.08.05.16
# pkgadd -d /mnt/Solaris_10/Product SUNWggrp

o SUNWzlib  The Zip compression library (sparc) 11.10.0,REV=2005.01.08.05.16
# pkgadd -d /mnt/Solaris_10/Product SUNWzlib

Install cURL from source

PHP5 requires cURL 7.10.5 or greater, but the SFWcurl package bundled with Solaris 10 was curl 7.10.3. So that, I build latest cURL from source.

# cd /export/home/archives/
# wget http://curl.haxx.se/download/curl-7.18.1.tar.gz
# gtar xfz curl-7.18.1.tar.gz
# cd curl-7.18.1/
# ./configure --prefix=/opt/sfw \
--with-ssl=/usr/sfw \
--with-zlib=/usr/lib

You will see following configuration messages.

curl version:    7.18.1
Host setup:      sparc-sun-solaris2.10
Install prefix:  /opt/sfw
Compiler:        gcc
SSL support:     enabled (OpenSSL)
SSH support:     no      (--with-libssh2)
zlib support:    enabled
krb4 support:    no      (--with-krb4*)
GSSAPI support:  no      (--with-gssapi)
SPNEGO support:  no      (--with-spnego)
c-ares support:  no      (--enable-ares)
ipv6 support:    enabled
IDN support:     no      (--with-libidn)
Build libcurl:   Shared=yes, Static=yes
Built-in manual: enabled
Verbose errors:  enabled (--disable-verbose)
SSPI support:    no      (--enable-sspi)
ca cert bundle:  no
ca cert path:    no
LDAP support:    enabled (OpenLDAP)
LDAPS support:   no      (--enable-ldaps)

Then compile and install cURL.

# gmake
# gmake install

    

Install ImageMagick from Source

Solaris 10 bundled "convert" command in ImageMagick(SUNWimagick) has no "-thumbnail" option, which required by MindTouch Deki. So that, Install latest ImageMagick from UNIX source as workaround.
 

(1) Download ImageMagick.tar.gz from ftp.imagemagick.org or its mirrors ( http://www.imagemagick.org/script/download.php ) and unpack it with this command

# cd $HOME
# wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
# gtar xvfz ImageMagick.tar.gz

(2) Configure and compile ImageMagick 

# cd ImageMagick-6.?.?
# ./configure --prefix=/usr/sfw --with-perl=no
(snip)
ImageMagick is configured as follows. Please verify that this configuration
matches your expectations.

Host system type: sparc-sun-solaris2.10
Build system type: sparc-sun-solaris2.10

                  Option                        Value
-------------------------------------------------------------------------------
Shared libraries  --enable-shared=yes           yes
Static libraries  --enable-static=yes           yes
Module support    --with-modules=yes            yes
GNU ld            --with-gnu-ld=no              no
Quantum depth     --with-quantum-depth=16       16
High Dynamic Range Imagery
                  --enable-hdri=no              no

Delegate Configuration:
BZLIB             --with-bzlib=yes              yes
DJVU              --with-djvu=no                no
DPS               --with-dps=yes                yes
FlashPIX          --with-fpx=yes                no
FontConfig        --with-fontconfig=yes         yes
FreeType          --with-freetype=yes           yes
GhostPCL          None                          pcl6 (unknown)
GhostXPS          None                          gxps (unknown)
Ghostscript       None                          gs (8.15.1)
result_ghostscript_font_dir='none'
Ghostscript fonts --with-gs-font-dir=default
Ghostscript lib   --with-gslib=yes              no
Graphviz          --with-gvc=yes                no
JBIG              --with-jbig=yes               no
JPEG v1           --with-jpeg=yes               yes
JPEG-2000         --with-jp2=yes                no
LCMS              --with-lcms=yes               no
LQR               --with-lqr=no         no
Magick++          --with-magick-plus-plus=yes   yes
OpenEXR           --with-openexr=yes            no
PERL              --with-perl=no                no
PNG               --with-png=yes                yes
RSVG              --with-rsvg=yes               no
TIFF              --with-tiff=yes               yes
result_windows_font_dir='none'
Windows fonts     --with-windows-font-dir=
WMF               --with-wmf=yes                no
X11               --with-x=                     yes
XML               --with-xml=yes                yes
ZLIB              --with-zlib=yes               yes

X11 Configuration:
      X_CFLAGS        = -I/usr/openwin/include
      X_PRE_LIBS      = -lSM -lICE
      X_LIBS          = -L/usr/openwin/lib -R/usr/openwin/lib
      X_EXTRA_LIBS    = -lsocket -lnsl

Options used to compile and link:
  PREFIX          = /usr/sfw
  EXEC-PREFIX     = /usr/sfw
  VERSION         = 6.4.1
  CC              = gcc
  CFLAGS          = -g -O2 -Wall -W -D_REENTRANT -pthreads
  MAGICK_CFLAGS   = -g -O2 -Wall -W -D_REENTRANT -pthreads
  CPPFLAGS        = -I/usr/sfw/include/ImageMagick
  PCFLAGS         =
  DEFS            = -DHAVE_CONFIG_H
  LDFLAGS         = -L/opt/mysql/lib -L/opt/sfw/lib -L/usr/sfw/lib -L/usr/lib -lstdc++ -L/usr/openwin/lib \
-R/usr/openwin/lib -L/usr/sfw/lib -R/usr/sfw/lib -lfreetype
  MAGICK_LDFLAGS  = -L/usr/sfw/lib -L/opt/mysql/lib -L/opt/sfw/lib -L/usr/sfw/lib -L/usr/lib -lstdc++ \
-L/usr/openwin/lib -R/usr/openwin/lib -L/usr/sfw/lib -R/usr/sfw/lib -lfreetype
  LIBS            = -lMagickCore -ltiff -lfreetype -ljpeg -lfontconfig -lXext -lSM -lICE -lX11 -lsocket -lnsl -\
lXt -lbz2 -lz -lm -lpthread
  CXX             = g++
  CXXFLAGS        = -g -O2 -Wall -W -D_REENTRANT -pthreads

# gmake

(3) If ImageMagick configured and compiled without complaint, you are ready to install it on your system.

# gmake install
# ldd /usr/sfw/bin/convert
        libMagickCore.so.1 =>    /usr/sfw/lib/libMagickCore.so.1
        libMagickWand.so.1 =>    /usr/sfw/lib/libMagickWand.so.1
        libtiff.so.3 =>  /usr/lib/libtiff.so.3
        libjpeg.so.62 =>         /usr/lib/libjpeg.so.62
        libfontconfig.so.1 =>    /usr/lib/libfontconfig.so.1
        libXext.so.0 =>  /usr/lib/libXext.so.0
        libXt.so.4 =>    /usr/lib/libXt.so.4
        libbz2.so.1 =>   /usr/lib/libbz2.so.1
        libpthread.so.1 =>       /usr/lib/libpthread.so.1
        libstdc++.so.6 =>        /usr/sfw/lib/libstdc++.so.6
        libgcc_s.so.1 =>         /usr/sfw/lib/libgcc_s.so.1
        libfreetype.so.6 =>      /usr/sfw/lib/libfreetype.so.6
        libSM.so.6 =>    /usr/lib/libSM.so.6
        libICE.so.6 =>   /usr/lib/libICE.so.6
        libX11.so.4 =>   /usr/lib/libX11.so.4
        libsocket.so.1 =>        /usr/lib/libsocket.so.1
        libnsl.so.1 =>   /usr/lib/libnsl.so.1
        libm.so.2 =>     /usr/lib/libm.so.2
        libc.so.1 =>     /usr/lib/libc.so.1
        libz.so.1 =>     /usr/lib/libz.so.1
        libexpat.so.0 =>         /usr/sfw/lib/libexpat.so.0
        libdl.so.1 =>    /usr/lib/libdl.so.1
        libmp.so.2 =>    /usr/lib/libmp.so.2
        libmd.so.1 =>    /usr/lib/libmd.so.1
        libscf.so.1 =>   /usr/lib/libscf.so.1
        libdoor.so.1 =>  /usr/lib/libdoor.so.1
        libuutil.so.1 =>         /usr/lib/libuutil.so.1
        libgen.so.1 =>   /usr/lib/libgen.so.1
        /platform/SUNW,Sun-Blade-1000/lib/libc_psr.so.1
        /platform/SUNW,Sun-Blade-1000/lib/libmd_psr.so.1

# /usr/sfw/bin/convert -h | grep -i thumbnail
  -thumbnail geometry  create a thumbnail of the image

o Reference

  

  

REMOVE "-mt" flag for FORTE to GCC

(1) edit /usr/lib/pkgconfig/gthread-2.0.pc and change the last 2 lines

 from:
Libs: -L${libdir} -lgthread-2.0 -mt
Cflags: -mt

 To:
Libs: -L${libdir} -lgthread-2.0 -D_REENTRANT -lthread
CFlags: -D_REENTRANT
Then: 

# mv -i /usr/lib/pkgconfig/gthread-2.0.pc /usr/lib/pkgconfig/gthread-2.0.pc.orig
# cp -pi /usr/lib/pkgconfig/gthread-2.0.pc.orig /usr/lib/pkgconfig/gthread-2.0.pc
# vi /usr/lib/pkgconfig/gthread-2.0.pc
# diff /usr/lib/pkgconfig/gthread-2.0.pc.orig /usr/lib/pkgconfig/gthread-2.0.pc
10,11c10,11
< Libs: -L${libdir} -lgthread-2.0 -mt
< Cflags: -mt
---
> Libs: -L${libdir} -lgthread-2.0 -D_REENTRANT -lthread
> CFlags: -D_REENTRANT


(2) Reference

 

Install Mono

Build and Install Mono-1.2.x from source

The Mono daily package can obtain from the Mono-Project site (1).
You should build the Mono from source code as new as possible because 1.2.6-release of Mono doe's not work with MindTouch Deki.

There are two pages to get the Mono sources, but according to my experience, the forefront of (2)"Mono Daily Packages" obtain easy success, but in the latter case (3)"Mono trunk Sources" I failed by core dumped error.
So that I recommend that you should be select (2)"Mono Daily Packages" expect as otherwise your need.

If you intend to build the latest Mono-2.0, refer to later section Build and Install Mono-2.0 from source (Experiment record).
 


Extract Mono from archive, and run confgure on your working directory.
Please replace the Mono archive name with the latest name.

Before compiling the Mono, please re-setting environment variables as follows.
Therefore, keep required minimum parameter alive.

(NOTE) Rename Solaris original command "mcs" to aviod failuer of build the Mono.
Remember when finish a installation Mono restore "mcs" to normal name.

(NOTE) I need a Mono's patch to avoid next issue. So this guide are applied the patch in the following procedure. BTW, this patch was released for Mono 2.0 but it worked on Mono 1.2.x for me.

 

# export LDFLAGS="-L/opt/sfw/lib -L/usr/sfw/lib -L/usr/lib -lstdc++"
# export CPPFLAGS="-I/opt/sfw/include -I/usr/sfw/include -I/usr/include"
# export LD_LIBRARY_PATH=/opt/sfw/lib:/usr/sfw/lib:/usr/lib
# export PATH=/usr/sbin:/usr/bin:/usr/sfw/bin:/usr/sfw/sbin:/usr/X/bin:/usr/ucb:/usr/ccs/bin:\
/opt/sfw/bin:/opt/sfw/sbin:/opt/SUNWspro/bin:/opt/subversion-current/bin

# mv -i /usr/ccs/bin/mcs /usr/ccs/bin/mcs.orig

# cd /

# wget http://mono.ximian.com/daily/mono-20080223.tar.bz2
# bzip2 -d < mono-20080223.tar.bz2 | gtar xf -
# cd mono-20080223/

# find . -name inssel-sparc.brg
# cd mono/mini
# curl --insecure 'https://bugzilla.novell.com/attachment.cgi?id=241026' > inssel-sparc.brg.diff

# cat inssel-sparc.brg.diff
# ls -l inssel-sparc.brg*
# patch < inssel-sparc.brg.diff
# ls -l inssel-sparc.brg*
# cd ../../

# MAKE=gmake AR=gar RANLIB=granlib STRIP=gstrip AS=gas CC=gcc CFLAGS="-g -O2" \
./configure --prefix=/opt/mono \
--with-tls=pthread \
--with-includes=/usr/sfw/include/ \
--with-libs=/usr/sfw/lib/

(snip)
        mcs source:    $(top_srcdir)/mcs
        olive source:  

        GC:          included
        TLS:         pthread
        SIGALTSTACK: yes
        Engine:      Building and using the JIT
        2.0 Beta:    yes
        2.1 Alpha:   yes
        JNI support: IKVM Native
        libgdiplus:  assumed to be installed
        zlib:        system zlib
        oprofile:    no


Then make the Mono at the top of source tree.

This task take an hour, so you can take a coffee or cup of tea :)

# gmake
 (snip)
sed -e 's,@''bindir@,/opt/mono/bin,g' -e 's,@''plat_bindir@,/opt/mono/bin,g' -e 
's,@''mono_instdir@,/opt/mono/lib/mono,g' -e 's,@''gtkdir@,,g' -e 
's,@''mono_interp@,mono --debug,g' -e 's,@''framework_version@,1.0,g' -e 
's,@''exe_name@,nunit-console,g' ./script.in > nunit-console.tmp
mv nunit-console.tmp nunit-console
sed -e 's,@''bindir@,/opt/mono/bin,g' -e 's,@''plat_bindir@,/opt/mono/bin,g' -e 
's,@''mono_instdir@,/opt/mono/lib/mono,g' -e 's,@''gtkdir@,,g' -e 
's,@''mono_interp@,mono --debug,g' -e 's,@''framework_version@,2.0,g' -e 
's,@''exe_name@,nunit-console,g' ./script.in > nunit-console2.tmp
mv nunit-console2.tmp nunit-console2
gmake[2]: Leaving directory `/mono-20080223/scripts'
Making all in man
gmake[2]: Entering directory `/mono-20080223/man'
gmake[2]: Nothing to be done for `all'.
gmake[2]: Leaving directory `/mono-20080223/man'
Making all in samples
gmake[2]: Entering directory `/mono-20080223/samples'
gmake[2]: Nothing to be done for `all'.
gmake[2]: Leaving directory `/mono-20080223/samples'
Making all in web
gmake[2]: Entering directory `/mono-20080223/web'
gmake[2]: Nothing to be done for `all'.
gmake[2]: Leaving directory `/mono-20080223/web'
Making all in msvc
gmake[2]: Entering directory `/mono-20080223/msvc'
gmake[2]: Nothing to be done for `all'.
gmake[2]: Leaving directory `/mono-20080223/msvc'
gmake[2]: Entering directory `/mono-20080223'
gmake[2]: Leaving directory `/mono-20080223'
gmake[1]: Leaving directory `/mono-20080223'


When the gmake leave with avobe message, it seems that your Mono built successfully.

Note: If you see "Segmentation Fault - core dumped" error, please delete created dll in 'class' directory, then try to re-run "gmake" once more.

Then run self tests, if you have enough latency time. ;)
 

# gmake CC=gcc -k check
 (snip)
Done

1709 test cases passed (92.48%)
1 test(s) ignored
58 known issue(s)
Segmentation Fault - core dumped
gmake[8]: *** [run-mcs-tests] Error 139
gmake[8]: Target `run-test-local' not remade because of errors.
gmake[8]: Leaving directory `/mono-20080223/mcs/errors'
gmake[7]: *** [do-run-test] Error 255
gmake[7]: Target `run-test' not remade because of errors.
gmake[7]: Leaving directory `/mono-20080223/mcs/errors'
gmake[6]: *** [run-test-recursive] Error 1
gmake[6]: Leaving directory `/mono-20080223/mcs'
gmake[6]: Entering directory `/mono-20080223/mcs'
gmake[6]: Leaving directory `/mono-20080223/mcs'
gmake[5]: *** [do-run-test] Error 255
gmake[5]: Target `run-test' not remade because of errors.
gmake[5]: Leaving directory `/mono-20080223/mcs'
gmake[4]: *** [profiles-do--run-test] Error 255
gmake[4]: Target `run-test-profiles' not remade because of errors.
gmake[4]: Leaving directory `/mono-20080223/mcs'
gmake[3]: *** [mcs-do-run-test-profiles] Error 2
gmake[3]: Leaving directory `/mono-20080223/runtime'
gmake[2]: *** [check-local] Error 2
gmake[2]: Leaving directory `/mono-20080223/runtime'
gmake[1]: *** [check-am] Error 2
gmake[1]: Target `check' not remade because of errors.
gmake[1]: Leaving directory `/mono-20080223/runtime'
Making check in scripts
gmake[1]: Entering directory `/mono-20080223/scripts'
gmake[1]: Nothing to be done for `check'.
gmake[1]: Leaving directory `/mono-20080223/scripts'
Making check in man
gmake[1]: Entering directory `/mono-20080223/man'
gmake[1]: Nothing to be done for `check'.
gmake[1]: Leaving directory `/mono-20080223/man'
Making check in samples
gmake[1]: Entering directory `/mono-20080223/samples'
gmake[1]: Nothing to be done for `check'.
gmake[1]: Leaving directory `/mono-20080223/samples'
Making check in web
gmake[1]: Entering directory `/mono-20080223/web'
gmake[1]: Nothing to be done for `check'.
gmake[1]: Leaving directory `/mono-20080223/web'
Making check in msvc
gmake[1]: Entering directory `/mono-20080223/msvc'
gmake[1]: Nothing to be done for `check'.
gmake[1]: Leaving directory `/mono-20080223/msvc'
gmake[1]: Entering directory `/mono-20080223'
gmake[1]: Leaving directory `/mono-20080223'
gmake: *** [check-recursive] Error 1
gmake: Target `check' not remade because of errors.

NOTE: It is more than pobable that some of errors, for example (1)"core dumped" error, (2) abnormal memory consumption, (3) hours of silence, but I can't fix it. Please ignore this, and go ahead !

NOTE: In my experience, there are some problems of self-test with overconsumption of memory possible. If you discovery abnormal memory consumption during self-test, you should kill the mono process correspond to the test, or else virtual memory of Solaris box will be exhaust.

NUnit version 2.2.0
Copyright (C) 2002-2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole.
Copyright (C) 2000-2003 Philip Craig.
All Rights Reserved.

OS Version: Unix 5.10.0.0    Mono Version: 1.1.4322.2032

Excluded categories: NotWorking,ValueAdd,CAS,InetAccess
......................................................................
......................................................................
......................................................................
......................................................................
......................................................................
............N.N.......................................................
......................................................................
......................................................................
............................................................. (snip)

Install the Mono into your Solaris box.

Before installation rename the destination If older version exists.

# mv -i /opt/mono/ /opt/mono-old
# gmake install
# mv -i /usr/ccs/bin/mcs.orig /usr/ccs/bin/mcs
# . /.bash_profile
# ldd /opt/mono/bin/mono
        libstdc++.so.6 =>        /usr/sfw/lib/libstdc++.so.6
        libgcc_s.so.1 =>         /usr/sfw/lib/libgcc_s.so.1
        libdl.so.1 =>    /usr/lib/libdl.so.1
        libgthread-2.0.so.0 =>   /usr/lib/libgthread-2.0.so.0
        libthread.so.1 =>        /usr/lib/libthread.so.1
        libglib-2.0.so.0 =>      /usr/lib/libglib-2.0.so.0
        librt.so.1 =>    /usr/lib/librt.so.1
        libsocket.so.1 =>        /usr/lib/libsocket.so.1
        libnsl.so.1 =>   /usr/lib/libnsl.so.1
        libxnet.so.1 =>  /usr/lib/libxnet.so.1
        libpthread.so.1 =>       /usr/lib/libpthread.so.1
        libm.so.2 =>     /usr/lib/libm.so.2
        libc.so.1 =>     /usr/lib/libc.so.1
        libaio.so.1 =>   /usr/lib/libaio.so.1
        libmd.so.1 =>    /usr/lib/libmd.so.1
        libmp.so.2 =>    /usr/lib/libmp.so.2
        libscf.so.1 =>   /usr/lib/libscf.so.1
        libdoor.so.1 =>  /usr/lib/libdoor.so.1
        libuutil.so.1 =>         /usr/lib/libuutil.so.1
        libgen.so.1 =>   /usr/lib/libgen.so.1
        /platform/SUNW,Sun-Blade-1000/lib/libc_psr.so.1
        /platform/SUNW,Sun-Blade-1000/lib/libmd_psr.so.1

# /opt/mono/bin/mono -V
Mono JIT compiler version 20080223 (tarball)
Copyright (C) 2002-2007 Novell, Inc and Contributors. www.mono-project.com
        TLS:           normal
        GC:            Included Boehm (with typed GC)
        SIGSEGV:       normal
        Notification:  Thread + polling
        Architecture:  sparc
        Disabled:      none

# /opt/mono/bin/gmcs --version
Mono C# compiler version 2008.223.0.0

# cd /

 

Instal libgdiplus (This is optional)

If you want to get support for System.Drawing, you can install the libgdiplus as mentioned below, but NO need for run MindTouch Deki in my experience.

# cd /
# wget http://go-mono.com/sources/libgdiplus/libgdiplus-1.2.6.tar.bz2
# bzip2 -d < libgdiplus-1.2.6.tar.bz2 | gtar xf -
# cd libgdiplus-1.2.6/
# GREP=ggrep MAKE=gmake AR=gar RANLIB=granlib STRIP=gstrip AS=gas CC=gcc \
./configure --prefix=/opt/mono 

cairo will be compiled with the following surface backends:
  image:         yes (always builtin)
  Xlib:          yes
  Xlib Xrender:  yes
  Quartz:        no (disabled, use --enable-quartz to enable)
  XCB:           no (disabled, use --enable-xcb to enable)
  Win32:         no (requires a Win32 platform)
  OS2:           no (disabled, use --enable-os2 to enable)
  PostScript:    yes
  PDF:           no (disabled, use --enable-pdf to enable)
  SVG:           no (disabled, use --enable-svg to enable)
  glitz:         no (disabled, use --enable-glitz to enable)
  BeOS:          no (disabled, use --enable-beos to enable)
  DirectFB:      no (disabled, use --enable-directfb to enable)

the following font backends:
  FreeType:      yes
  Win32:         no (requires a Win32 platform)
  ATSUI:         no (disabled, use --enable-atsui to enable)

the following features:
  PNG functions: yes

and the following debug options:
  gcov support:  no
  test surfaces: no
  pdf testing:   no
  svg testing:

using CFLAGS:
-I/usr/sfw/include
-I/usr/sfw/include/freetype2 -I/usr/include/libpng12
-I/usr/openwin/include -Wall -Wextra -Wsign-compare
-Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
-Wnested-externs -Wpacked -Wswitch-enum -Wmissing-format-attribute
-Wstrict-aliasing=2 -Winit-self -Wdeclaration-after-statement
-Wold-style-definition -Wno-unused-parameter -fno-strict-aliasing

---
Configuration summary

   * Installation prefix = /opt/mono
   * Cairo = internal
   * Text = cairo
   * EXIF tags = yes
   * Codecs supported:

      - TIFF: yes
      - JPEG: yes
      - GIF: no (See http://sourceforge.net/projects/libgif)
      - PNG: yes
      NOTE: if any of the above say 'no' you may install the
            corresponding development packages for them, rerun
            autogen.sh to include them in the build.


# gmake
# gmake install

 

Install MySQL5 database management system


I use MySQL (5.0.51a) binary distribution instead of Solaris 10 bundled MySQL (4.0.24).

References

   

Install MySQL 5.0 Community Server

You can download MySQL for Solaris in tar.gz format from MySQL.COM.

(1) create the mysql user and group

Before installing MySQL, you should create the mysql user and group, for example:

# groupadd -g 900 mysql
# useradd -g mysql -u 900 mysql
# grep mysql /etc/passwd
mysql:x:900:900::/home/mysql:/bin/sh
# grep mysql /etc/group
mysql::900:


(2) Download MySQL for Solaris 10 (SPARC, 32-bit) of "TAR packages"

# cd /export/home/archives/
# wget -O mysql-5.0.51a-solaris10-sparc.tar.gz \
http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.51a-solaris10-sparc.tar.gz\
/from/http://ftp.iij.ad.jp/pub/db/mysql/


(3) Extracting the "TAR packages"

# cd /opt/
# gtar xfz /export/home/archives/mysql-5.0.51a-solaris10-sparc.tar.gz
# mv -i mysql-5.0.51a-solaris10-sparc mysql


(4) Change installation ownership to mysql

# cd mysql
# chown -R mysql:mysql .


(5) If you have not installed MySQL before, you must create the MySQL data directory and initialize the grant tables

# /bin/bash scripts/mysql_install_db --user=mysql

Then you will see:

Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
./bin/mysqladmin -u root password 'new-password'
./bin/mysqladmin -u root -h <hostname> password 'new-password'

Alternatively you can run:
./bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd . ; ./bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl

Please report any problems with the ./bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com


(6) Make MySQL to start automatically

cp -pi support-files/mysql.server /etc/init.d/
ln -s /etc/init.d/mysql.server /etc/rc3.d/S91mysql
ln -s /etc/init.d/mysql.server /etc/rc0.d/K01mysql


(7) start the MySQL server

# bin/mysqld_safe --user=mysql &
# ps -ef | grep mysqld | grep -v grep
    root  1810   670   0 14:46:48 pts/2       0:00 /bin/sh bin/mysqld_safe --user=mysql
   mysql  1828  1810   2 14:46:48 pts/2       0:00 /opt/mysql/bin/mysqld --basedir=/opt/mysql \
--datadir=/opt/mysql/data --user=mys


(8) Set a password for the MySQL "root" user

./bin/mysqladmin -u root password <secret>
./bin/mysqladmin -u root -h <hostname> password <secret>


(8) connect to MySQL server from the mysql client, if you want.

# bin/mysql -uroot -p<secret> -hlocalhost
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.51a MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> exit
Bye

Configuration MySQL 5.0

(1) create new logs directory

# mkdir /opt/mysql/logs
# chown mysql:mysql /opt/mysql/logs

(2) create MySQL configuration file named "/etc/my.cnf"

# touch /etc/my.cnf
# chown mysql:mysql /etc/my.cnf
# vi /etc/my.cnf
# cat /etc/my.cnf
basedir         = /opt/mysql
port            = 3306
socket          = /tmp/mysql.sock

skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

#log            = /opt/mysql/logs/mysql.log
log-error       = /opt/mysql/logs/error.log
#log-bin        = /opt/mysql/logs/log-bin

query_cache_limit       =1M
query_cache_size        =32M

max_connections = 254

(3) start the mysql instance

# /etc/rc3.d/S91mysql reload
SUCCESS! Reloading service MySQL

REMOVE "-xarch=v8" flag for FORTE to GCC

cp -pi /opt/mysql/bin/mysql_config /opt/mysql/bin/mysql_config.orig
vi /opt/mysql/bin/mysql_config

diff /opt/mysql/bin/mysql_config.orig  /opt/mysql/bin/mysql_config
96c96,97
< ldflags='-xarch=v8'
---
> # ldflags='-xarch=v8'
> ldflags=''
105c106,107
< cflags="-I$pkgincludedir -xO3 -Xa -xstrconst -mt -D_FORTEC_ -xarch=v8 -xc99=none " #note: end space!
---
> # cflags="-I$pkgincludedir -xO3 -Xa -xstrconst -mt -D_FORTEC_ -xarch=v8 -xc99=none " #note: end space!
> cflags="-I$pkgincludedir -xO3 -Xa -xstrconst -mt -D_FORTEC_ -xc99=none " #note: end space!

   

   

Configure Apache2

Enable the Apache2 service

(1) Reference


(2) Create Apache2 configuration file from sample one

# cd /etc/apache2
# cp -pi httpd.conf-example httpd.conf

  

Then edit file '/etc/apache2/httpd.conf' as below, to set PHP files Apache will serve if a directory is requested.

From:
DirectoryIndex index.html index.html.var

To:
DirectoryIndex index.html index.html.var index.cgi index.php index.xhtml

Here is a sample operation for me.

# cd /etc/apache2
# cp -pi httpd.conf httpd.conf.01-fine-for-8052
# vi httpd.conf
# diff -u httpd.conf.01-fine-for-8052 httpd.conf
--- httpd.conf.01-fine-for-8052 Thu May 15 06:36:12 2008
+++ httpd.conf  Sun Aug 17 18:32:03 2008
@@ -450,7 +450,8 @@
 # negotiated documents.  The MultiViews Option can be used for the
 # same purpose, but it is much slower.
 #
-DirectoryIndex index.html index.html.var
+# DirectoryIndex index.html index.html.var
+DirectoryIndex index.html index.html.var index.cgi index.php index.xhtml

 #
 # AccessFileName: The name of the file to look for in each directory

(3) Create directory to store the pid file

# mkdir /var/run/apache2

(4) Start Apache2 server

o To check configuration
# /usr/apache2/bin/apachectl configtest

o To start the server:
# /usr/apache2/bin/apachectl -k start

o To stop the server:
# /usr/apache2/bin/apachectl -k stop

If you run into trouble check the logs under "/var/apache2/logs"

To connect your Web-browser to Apache2 server

http://<hostname>/


(5) Setting up SMF for Apache2

Stop the Apache2 server process

/usr/apache2/bin/apachectl -k stop

Enable Apache2 service provided by smf (svc:/network/http:apache2)

# svcadm clear svc:/network/http:apache2
svcadm: Instance "svc:/network/http:apache2" is not in a maintenance or degraded state.

# svcadm enable svc:/network/http:apache2

Check the status with :
# svcs -xv svc:/network/http:apache2
svc:/network/http:apache2 (Apache 2 HTTP server)
 State: online since Sun May 04 16:06:45 2008
   See: man -M /usr/apache2/man -s 8 httpd
   See: /var/svc/log/network-http:apache2.log
Impact: None.

# svcs -v apache2
STATE          NSTATE        STIME    CTID   FMRI
online         -             16:06:45     97 svc:/network/http:apache2

# svcadm disable svc:/network/http:apache2
# svcs -v apache2
STATE          NSTATE        STIME    CTID   FMRI
disabled       -             16:09:52      - svc:/network/http:apache2

(6) setting environment-variables for Apache HTTP server

# mv -i /lib/svc/method/http-apache2 /lib/svc/method/http-apache2.orig
# cp -pi /lib/svc/method/http-apache2.orig /lib/svc/method/http-apache2
# vi /lib/svc/method/http-apache2 

(Change the first line to /bin/bash)
 from:
#!/sbin/sh

 to:
#!/bin/bash

(insert the next line to beginning of script)
. /.bash_profile

# diff /lib/svc/method/http-apache2.orig /lib/svc/method/http-apache2
1c1
< #!/sbin/sh
---
> #!/bin/bash
8a9
> . /.bash_profile

    

    

Install PHP 5, mod_php5 and PEAR libraries

Install PHP5 

(1) Compile and Installing PHP5

# cd /export/home/archives/
# wget -O php-5.2.6.tar.gz http://jp2.php.net/get/php-5.2.6.tar.gz/from/this/mirror
# gtar xfz php-5.2.6.tar.gz
# cd php-5.2.6/
# gmake clean
# ./configure \
--prefix=/opt/php5 \
--with-apxs2=/usr/apache2/bin/apxs \
--with-libxml-dir=/usr/local \
--with-config-file-path=/etc/apache2 \
--with-mysql=shared,/opt/mysql \
--with-mysqli=shared,/opt/mysql/bin/mysql_config \
--with-curl=shared,/opt/sfw \
--with-xpm-dir=/usr \
--with-gd \
--with-bz2=/usr/lib \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib \
--enable-mbstring \
--enable-calendar \
--enable-bcmath \
--enable-ftp \
--enable-exif \
--enable-dbase \
--with-openssl=shared,/usr/sfw \
--with-ldap=shared,/usr \
--with-exec-dir=/opt/php5/bin \
--with-pdo-mysql=shared,/opt/mysql \
--with-gettext=shared,/opt/sfw \
--with-readline=shared,/opt/sfw

# gmake

# gmake test

Build complete.
Don't forget to run 'make test'.


=====================================================================
PHP         : /export/home/archives/php-5.2.6/sapi/cli/php
PHP_SAPI    : cli
PHP_VERSION : 5.2.6
ZEND_VERSION: 2.2.0
PHP_OS      : SunOS - SunOS <hostname> 5.10 Generic_127111-11 sun4u
INI actual  : /export/home/archives/php-5.2.6/tmp-php.ini
More .INIs  :
CWD         : /export/home/archives/php-5.2.6
Extra dirs  :
=====================================================================
  (snip)
PASS
Test copy() function: usage variations - destination file names(special
chars) [ext/standard/tests/file/copy_variation2.phpt]
SKIP Test
copy() function: usage variations - destination file names(white
spaces) [ext/standard/tests/file/copy_variation3-win32.phpt] reason:
only run on Windows
PASS Test copy() function: usage variations -
destination file names(white spaces)
[ext/standard/tests/file/copy_variation3.phpt]
SKIP Test copy()
function: usage variations - destination file names(empty string, nulls
& bools) [ext/standard/tests/file/copy_variation4-win32.phpt]
reason: Run only on Windows
ERROR: Cannot open file '/export/home/archives/php-5.2.6/ext/standard/tests/file/copy_variation4.clean.php' (save_text)
gmake: [test] Error 1 (ignored)


# gmake install
Installing PHP SAPI module:       apache2handler
/var/apache2/build/instdso.sh SH_LIBTOOL='/var/apache2/build/libtool' libphp5.la /usr/apache2/libexec
/var/apache2/build/libtool --mode=install cp libphp5.la /usr/apache2/libexec/
cp .libs/libphp5.so /usr/apache2/libexec/libphp5.so
chmod +x /usr/apache2/libexec/libphp5.so
cp .libs/libphp5.lai /usr/apache2/libexec/libphp5.la
libtool: install: warning: remember to run `libtool --finish /export/home/archives/php-5.2.6/libs'
chmod 755 /usr/apache2/libexec/libphp5.so
[activating module `php5' in /etc/apache2/httpd.conf]
Installing PHP CLI binary:        /opt/php5/bin/
Installing PHP CLI man page:      /opt/php5/man/man1/
Installing shared extensions:     /opt/php5/lib/php/extensions/no-debug-non-zts-20060613/
Installing build environment:     /opt/php5/lib/php/build/
Installing header files:          /opt/php5/include/php/
Installing helper programs:       /opt/php5/bin/
  program: phpize
  program: php-config
Installing man pages:             /opt/php5/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /opt/php5/lib/php/
[PEAR] Console_Getopt - installed: 1.2.3
[PEAR] Archive_Tar    - installed: 1.3.2
[PEAR] Structures_Graph- installed: 1.0.2
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
[PEAR] PEAR           - installed: 1.7.1
Wrote PEAR system config file at: /opt/php5/etc/pear.conf
You may want to add: /opt/php5/lib/php to your php.ini include_path
Installing PDO headers:          /opt/php5/include/php/ext/pdo/

# cp -pi php.ini-dist /etc/apache2/php.ini

(2) Install PEAR and MindTouch Deki required modules

# pear config-set http_proxy http://proxy.mydomain.com:8080
config-set succeeded

# pear channel-update pear.php.net
Updating channel "pear.php.net"
Channel "pear.php.net" is up to date

# cd /tmp
# wget http://pear.php.net/go-pear.phar
# /opt/php5/bin/php go-pear.phar

Below is a suggested file layout for your new PEAR installation.  To
change individual locations, type the number in front of the
directory.  Type 'all' to change all of them or simply press Enter to
accept these locations.

 1. Installation base ($prefix)                   : /opt/php5
 2. Temporary directory for processing            : /tmp/pear/install
 3. Temporary directory for downloads             : /tmp/pear/install
 4. Binaries directory                            : /opt/php5/bin
 5. PHP code directory ($php_dir)                 : /opt/php5/lib/php
 6. Documentation directory                       : /opt/php5/docs
 7. Data directory                                : /opt/php5/data
 8. User-modifiable configuration files directory : /opt/php5/cfg
 9. Public Web Files directory                    : /opt/php5/www
10. Tests directory                               : /opt/php5/tests
11. Name of configuration file                    : /opt/php5/etc/pear.conf

1-11, 'all' or Enter to continue: (hit a [Return] key)
 (snip)
# pear install XML_RPC
# pear install Cache_Lite
# pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.2   stable
Cache_Lite       1.7.3   stable
Console_Getopt   1.2.3   stable
PEAR             1.7.1   stable
Structures_Graph 1.0.2   stable
XML_RPC          1.5.1   stable


 (OPTIONAL but RECOMMENDED)
Update your PHP error reporting level to show all errors, except for notices and coding standards warnings

# cp -pi /etc/apache2/php.ini /etc/apache2/php.ini.orig
# vi /etc/apache2/php.ini

(edit as follows)
 from: 
error_reporting  =  E_ALL
allow_call_time_pass_reference = Off

 to: 
error_reporting = E_ALL & ~E_NOTICE 
allow_call_time_pass_reference = On

(3) enabling extension

# vi /etc/apache2/php.ini
 from:
extension_dir = "./"

 to:
; extension_dir = "./"
extension_dir = "/opt/php5/lib/php/extensions/no-debug-non-zts-20060613/"

(add next lines under the "Dynamic Extensions" section)

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
extension=curl.so
extension=gettext.so
extension=ldap.so
extension=mysql.so
extension=mysqli.so
extension=openssl.so
extension=pdo_mysql.so
extension=readline.so

(4) modifing PHP for MindTouch Deki

# vi /etc/apache2/php.ini
 from:
;session.save_path = "/tmp"

 to:
session.save_path = "/tmp"

(5) Restart Apache2 to take effect

# svcadm restart svc:/network/http:apache2

If any errors was show in error.log check it.

# tail -f /var/apache2/logs/error_log
[Sat May 10 19:57:20 2008] [notice] caught SIGTERM, shutting down
[Sat May 10 19:57:24 2008] [notice] Digest: generating secret for digest authentication ...
[Sat May 10 19:57:24 2008] [notice] Digest: done
[Sat May 10 19:57:24 2008] [notice] Apache/2.0.63 (Unix) DAV/2 PHP/5.2.6 configured -- resuming normal operations

(6) Testing PHP configuration

You can confirm PHP configuration by the phpinfo() function. All required extensions should be enabled at this point.

# php -i

o mysql section are:

MySQL Support => enabled
Active Persistent Links => 0
Active Links => 0
Client API version => 5.0.51a
MYSQL_MODULE_TYPE => external
MYSQL_SOCKET => /tmp/mysql.sock
MYSQL_INCLUDE => -I/opt/mysql/include
MYSQL_LIBS => -L/opt/mysql/lib -lmysqlclient

o curl section are:

cURL support => enabled
cURL Information => libcurl/7.18.1 OpenSSL/0.9.7d zlib/1.2.3

Install html2ps

(NOTE) You don't need html2ps for Deki 8.08 (Kilen Woods) because it is substituted by Prince XML.

Install the html2ps which need to convert Deki's page to PDF file.

(1) Reference

(2) Installing html2ps

# cd /export/home/archives
# wget http://user.it.uu.se/~jan/html2ps-1.0b5.zip
# unzip html2ps-1.0b5.zip
# cd html2ps-1.0b5/
# perl install
Do you want to proceed with the installation? [y]:

Searching for Image/Magick.pm: not found
Searching for LWP/UserAgent.pm: not found
Searching for ImageMagick: found (/usr/sfw/bin/mogrify)
Searching for djpeg: found (/usr/bin/djpeg)
Searching for TeX: not found
Searching for dvips: not found
Searching for Ghostscript: found (/usr/sfw/bin/gs)
Searching for weblint: not found
Searching for lynx: not found
Searching for wget: found (/usr/sfw/bin/wget)

By default html2ps uses libwww-perl to retrieve remote documents, I cannot
find this on your system. You may instead use some command that can retrieve
documents _with_a_complete_MIME_header_.
Enter such a command [wget -s -q -O-]:

By default all files will be installed in subdirectories 'bin', 'lib',
and 'man' in a common directory. Is this OK? [y]:

Enter the name of this directory (full path) [/usr/local]: /opt/sfw
Created directory /opt/sfw/lib/html2ps

Enter the default paper type, possible choices are:
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10,
letter, legal, arche, archd, archc, archb, archa,
flsa, flse, halfletter, 11x17, ledger, other [A4]:

Installing html2ps in /opt/sfw/bin
Installing html2psrc in /opt/sfw/lib/html2ps
Installing html2ps.1 in /opt/sfw/man/man1
Installing html2psrc.5 in /opt/sfw/man/man5
Installing hyphen.tex in /opt/sfw/lib/html2ps
Installing html2ps.html in /opt/sfw/lib/html2ps

# ls -l html2ps.html html2ps.ps
-rw-r--r--   1 root     other      62879 Dec 11  2005 html2ps.html
-rw-r--r--   1 root     root       98867 May 10 23:42 html2ps.ps

# which html2ps
/opt/sfw/bin/html2ps

Install PrinceXML

(NOTE) This section is under the work on my composition to fix the garbled charactors problem for multi-byte language (ex: Japanese).

Install the PrinceXML which need to convert Deki's page to a PDF document.

(1) Reference

(2) Install PrinceXML

Install PrinceXML from static binary tar file:

cd /export/home/archives
wget http://www.princexml.com/download/prince-6.0r7-sol10sparc.tar.gz
gtar xfz prince-6.0r7-sol10sparc.tar.gz
cd prince-6.0r7-sol10sparc
./install.sh
Prince 6.0

Install directory
    This is the directory in which Prince 6.0 will be installed.
    Press Enter to accept the default directory or enter an alternative.
    [/usr/local]: (hit a return)

Installing Prince 6.0...
     (snip)
Installation complete.
    Thank you for choosing Prince 6.0, we hope you find it useful.
    Please visit http://www.princexml.com for updates and development news.


(3) Configure Deki to use PrinceXML

Edit your mindtouch.deki.startup.xml and add the following configuration element

<princexml-path>/usr/local/bin/prince</princexml-path>

Here is a sample operations to do it.

cp -pi /etc/dekiwiki/mindtouch.deki.startup.xml /etc/dekiwiki/mindtouch.deki.startup.xml.01
vi /etc/dekiwiki/mindtouch.deki.startup.xml
diff -u /etc/dekiwiki/mindtouch.deki.startup.xml.01 /etc/dekiwiki/mindtouch.deki.startup.xml

--- /etc/dekiwiki/mindtouch.deki.startup.xml.01 Sun May 11 17:53:34 2008
+++ /etc/dekiwiki/mindtouch.deki.startup.xml    Sun Aug 17 20:47:40 2008
@@ -34,6 +34,7 @@
       <imagemagick-identify-path>/usr/sfw/bin/identify</imagemagick-identify-path>
       <html2ps-path>/opt/sfw/bin/html2ps</html2ps-path>
       <ps2pdf-path>/usr/sfw/bin/ps2pdf</ps2pdf-path>
+      <princexml-path>/usr/local/bin/prince</princexml-path>
       <!-- <deki-resources-path>/var/www/mks-wiki/resources</deki-resources-path> -->

   

Congratulations !

Your Solaris box are configured to run Deki. Please continue to Install Deki !

Currently, MindTouch Deki 8.05 (Jay Cooke) guide are available.

 

 

Updates

Update for Deki 8.08 (Kilen Woods)

[04-Oct-2008] Apply a patch to Mono

This fix the following issue for Mono on Solaris.


You need apply a patch to Mono source code, then re-compile and re-install Mono. Or you may be seen unacceptable permission problem.

To do this go-to "Install Mono" section on this guide.

 

[04-Oct-2008] Install PrinceXML

With Deki 8.08, PrinceXML is used to export PDF a page, instead of older html2pdf.
To referer my procedure, go-to "Install PrinceXML" section on this guide.

NOTE : There are an issue that garbled characters/fonts generated on PDF for multi-byte charactors like japanese.
 

[04-Oct-2008] Serve Apache an PHP file as index if directory is requested.

When open the new control panel introduced 8.08 (Kilen Woods), you may see "Forbidden: You don't have permission to access /deki-cp/ on this server."

Then edit file '/etc/apache2/httpd.conf' as below, to set PHP files Apache will serve if a directory is requested.

From:
DirectoryIndex index.html index.html.var

To:
DirectoryIndex index.html index.html.var index.cgi index.php index.xhtml

Here is a sample operation for me.

# cd /etc/apache2
# cp -pi httpd.conf httpd.conf.01-fine-for-8052
# vi httpd.conf
# diff -u httpd.conf.01-fine-for-8052 httpd.conf
--- httpd.conf.01-fine-for-8052 Thu May 15 06:36:12 2008
+++ httpd.conf  Sun Aug 17 18:32:03 2008
@@ -450,7 +450,8 @@
 # negotiated documents.  The MultiViews Option can be used for the
 # same purpose, but it is much slower.
 #
-DirectoryIndex index.html index.html.var
+# DirectoryIndex index.html index.html.var
+DirectoryIndex index.html index.html.var index.cgi index.php index.xhtml

 #
 # AccessFileName: The name of the file to look for in each directory

   

Errata for this guide

[11-Jun-2008] Fix the "file" command compatibility problem

When you upload an image, then next error recorded on Apache's logfile (/var/log/apache2/error-dekiwiki.log).

file: illegal option -- b
usage: file [-dh] [-M mfile] [-m mfile] [-f ffile] file ...
       file [-dh] [-M mfile] [-m mfile] -f ffile
       file -i [-h] [-f ffile] file ...
       file -i [-h] -f ffile
       file -c [-d] [-M mfile] [-m mfile]

o Cause

Solaris standard "file" command has no "-b" and "-i" options, which required by MindTouch Deki.

o Workaround

Install the SWFfile package from the Companion DVD, and create symbolic-link from /usr/bin/file to /opt/sfw/bin/gfile as mentioned below.

o SFWfile  file - determine file type
# pkgadd -d SWFfile
# mv -i /usr/bin/file /usr/bin/file.orig
# ln -s /opt/sfw/bin/gfile /usr/bin/file

NOTE: You should examine carefully for unexpected side-effect, with replacing "file" command from Solaris standard to Comanions one.

 

[17-Jun-2008] Fix the ImageMagick compatibility problem

When you upload an image, then next error recorded on Apache's logfile (/var/log/apache2/error-dekiwiki.log).

2008-06-16 18:52:08,614 [1] WARN  DekiWikiService_default - BuildThumb failed
(198,convert: Unrecognized option (-thumbnail).
)

o Cause:

Solaris 10 bundled "convert" command in ImageMagick(SUNWimagick) has no "-thumbnail" option, which required by MindTouch Deki.
 

o Workaround

Install latest ImageMagick from UNIX source described above.
 

     

Tag page
You must login to post a comment.
Powered by MindTouch Deki v.8.08.2