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

     

    Applies toMindTouch 8.05 to 8.08LicenseAll versions
    Operating SystemLinuxDocumentation TypesSetup
    Community Documentation
     

     

     

    IMPORTANT NOTICE

    This content is contributed by a MindTouch 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 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 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 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 does not work on it.
       
    • Other MindTouch 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 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.
    

       

       

    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. 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.

    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 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 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

    # 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 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.

    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.
     

    o Workaround

    Install latest ImageMagick from UNIX source described above.
     

    Tag page
    You must login to post a comment.

    Copyright © 2011 MindTouch, Inc. Powered by