version 1.2.3 kommer förinstallerat (senaste versionen)
version 1.2.35 finns som package, 1.2.40 är den senaste
Port: png-1.2.35
version 6bp5 finns som package
Port: jpeg-6bp5
version 2.6.32p2 finns som package, 2.7.6 är den senaste
Port: libxml-2.6.32p2
export PKG_PATH=ftp://ftp.su.se/pub/OpenBSD/4.6/packages/`machine -a`/ pkg_add png-1.2.35 pkg_add jpeg-6bp5 pkg_add libxml-2.6.32p2 ln /usr/local/include/libpng/png.h /usr/local/include ln /usr/local/include/libpng/pngconf.h /usr/local/include
cd /tmp wget http://www.bsd-guide.net/openbsd-base-4.6/files/php/png_1.2.40.tgz cd /usr/ports/graphics tar cfv png.tar png tar xfz /tmp/png_1.2.40.tgz rm /tmp/png_1.2.40.tgz cd png make install ln /usr/local/include/libpng/png.h /usr/local/include ln /usr/local/include/libpng/pngconf.h /usr/local/includeDen medföljande porten av libpng innehåller en bugg som är fixad i den senaste versionen:
Vulnerability Warning
All versions of libpng from 0.89c through 1.2.34 contain an uninitialized-data bug that can be triggered by a malicious user. Specifically, there are several instances in which a malloc'd array of pointers is then initialized by a secondary sequence of malloc() calls. If one of these calls fails, libpng's cleanup routine will attempt to free the entire array, including any uninitialized pointers, which could lead to execution of an attacker's code with the privileges of the libpng user (including remote compromise in the case of a libpng-based browser visiting a hostile web site). This vulnerability has been assigned ID CVE-2009-0040 and is fixed in version 1.2.35, released 18 February 2009.cd /usr/local/src wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz tar xfz jpegsrc.v6b.tar.gz cd jpeg-6b ./configure --prefix=/usr/local --enable-shared make make test make install make install-lib ./configure --prefix=/usr/local make make test make install make install-libGivetvis går det/ska det gå att kombinera installation från ports/packages eller source. I libjpeg's fall, så har det nog inte hänt så mycket på den officiella källkoden att det är värt att kompilera själv, hellre tvärtom - den port som kommer med OpenBSD är en nyare, genomgången OpenBSD-anpassad version av originalkoden från 2001.
cd /usr/local/src wget ftp://xmlsoft.org/libxml2/libxml2-2.7.6.tar.gz tar xfz libxml2-2.7.6.tar.gz unset CFLAGS; cd libxml2-2.7.6 ./configure --prefix=/usr/local make make install
Med stor sannolikhet beror felet på att jag själv börjat fuska vid installationen och inte läser min guide :), för guiden är testad med OpenBSD 4.2 och de nyaste versionerna av allt..
Problemet uppstår inte om man installerar libxml2-2.6.30 från packages/ports,
och inte heller om man patchar och installerar libxml2-2.6.32 på samma
sätt.
jag har som för libpng gjort några smärre
modifieringar på ports filerna för att få in den nyaste versionen:
xml_version=2.6.32 cd /usr/ports/textproc/libxml wget http://www.bsd-guide.net/openbsd-base-4.3/files/php/libxml_${xml_version}.port.tgz mv Makefile 30_Makefile mv distinfo 30_distinfo mv patches/patch-doc_Makefile_in patches/30_patch-doc_Makefile_in mv patches/patch-python_Makefile_in patches/30_patch-python_Makefile_in tar xfz libxml_${xml_version}.port.tgz rm libxml_${xml_version}.port.tgz FLAVOR=no_python make install
(gmake behövs för bl.a FreeType2)
pkg_add gmake-3.81p0
cd /usr/local/src wget http://download.savannah.gnu.org/releases/freetype/freetype-2.3.11.tar.gz tar xfz freetype-2.3.11.tar.gz cd freetype-2.3.11 GNUMAKE=/usr/local/bin/gmake ./configure gmake gmake install
version 7.19.6 finns som package, 7.19.5 är den senaste
Port: curl-7.19.6
export PKG_PATH=ftp://ftp.su.se/pub/OpenBSD/4.6/packages/`machine -a`/ pkg_add curl-7.19.6
Som en bonus installeras även libidn-1.11
Paketversionen som finns lägger filerna på lite konstiga ställen. Det går säkert att lista ut vars alla filerna ligger, och ge rätt parametrar för PHP's configure, men den enklaste lösningen är att kompilera IMAP libraryt själv och lägga filerna samlade i /usr/local/imap.
mkdir -p /usr/local/imap cd /usr/local/imap wget ftp://ftp.cac.washington.edu/imap/imap.tar.Z uncompress imap.tar.Z tar xf imap.tar mv imap-* src cd src make bso EXTRACFLAGS='-fPIC -O3' cd .. ln -s /usr/local/imap/src/c-client include ln -s /usr/local/imap/src/c-client lib cd lib ln -s c-client.a libc-client.a cd ../src/c-client mkdir tmp cd tmp ar xv ../c-client.a gcc -shared -o c-client.so *.o cp c-client.so /usr/local/imap/lib/libc-client.so ldconfig -m /usr/local/imap/lib
Enligt instruktionerna på http://se2.php.net/imap, så ska man göra ovanstående manuella installation av IMAP includes och libs för att inte blanda ihop filerna med systemfilerna. På något sätt (kopiera filer istället för att länka) borde man kunna göra en installation som är fristående från källkoden (så att man kan ta bort den sen om man vill). Kopieringen beskrivs i PHP's dokumentation, men den som skrivit den första (sista) kommentaren tycker att man ska länka istället.
Fr.o.m guiden för OpenBSD 4.5 så har jag flyttat på källkoden så att den kommer att lämnas i /usr/local/imap/src.
ldconfig sist ser till att libc-client.so är tillgängligt när PHP ska startas upp via Apache.
För att libc-client.so ska hittas av PHP senare (efter omstart) måste shlib_dir ändras i /etc/rc.conf.local (fanns där sen MySQL installationen):
shlib_dirs="/usr/local/mysql/lib/mysql /usr/local/imap/lib"
libmcrypt
pkg_add libmcrypt
Hämta PHP källkoden och packa upp:
cd /usr/local/src
wget http://se2.php.net/distributions/php-5.3.0.tar.gz
tar xfz php-5.3.0.tar.gz
cd php-5.3.0
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/usr/local/php/conf \
--with-mysql=/usr/local/mysql --with-curl=/usr/local --with-openssl=/usr \
--enable-cli --with-gd --enable-ftp --with-gettext --enable-soap \
--with-zlib-dir=/usr --with-png-dir=/usr/local --with-jpeg-dir=/usr/local \
--with-freetype-dir=/usr --enable-gd-native-ttf --with-ttf \
--with-mcrypt --enable-mbstring \
--with-imap=/usr/local/imap --with-imap-ssl
make
make install
Om du inte installerat IMAP libraryt (c-client), så ska du inte ta med sista backslashen (\) och den sista raden på 'configure' kommandot ovan (det som ska bort är markerat)
FileInfo (som används, ifall det finns installerat, av RoundCube) installeras då PHP är kompilerat och installerat:
FileInfo
pkg_add autoconf-2.62p0 pkg_add libmagic AUTOCONF_VERSION=2.62 /usr/local/php/bin/pecl install FileInfo cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/fileinfo.so \ /usr/local/php/lib/php/extensions
Kopiera konfigurationsfil för PHP:
mkdir /usr/local/php/conf cp php.ini-production /usr/local/php/conf/php.ini
Ändra max_execution_time
(sök 'Resource Limits')
max_execution_time = 300
och upload_max_filesize
(sök 'File Uploads')
upload_max_filesize = 20M
Ändra så att sessions sparas i /var/sess istället för direkt i /tmp
session.save_path = "/var/sess"
(för FileInfo)
Lägg till/ändra i php.ini
extension_dir = "/usr/local/php/lib/php/extensions/" extension=fileinfo.so
Fyll på i slutet på path-variabeln.
/.cshrc (och /root/.cshrc)
/usr/local/apache2/bin /usr/local/mysql/bin /usr/local/php/bin
/.profile (och /root/.profile)
:/usr/local/apache2/bin:/usr/local/mysql/bin:/usr/local/php/bin
/etc/login.conf
/usr/local/apache2/bin /usr/local/mysql/bin /usr/local/php/bin