PHP

PHP的安装比较复杂,好在官方文档提供了详尽的安装指导,请到http://www.php.net/manual/zh/查看。这里安装的PHP除了核心模块(date,standard)之外,还包括下列PECL扩展:PCRE Session APC GD mbstring PostgresSQL 。PHP的测试程序不像其他软件包那样遇到错误就停下来并返回非零的错误代码,而是始终返回表示成功的零,因此不能在脚本中根据 make test 命令的返回状态判断测试的成败,你必须用眼睛亲自检查输出结果。

[提示]只有使用了–enable-cli选项后才能运行测试程序。[TODO]测试”-minline-all-stringops”的效果。

如果你想了解更多有关如何配置PHP的知识,可以看一看《适用于 php-5.2 的 php.ini 中文版》。

R=/root/php-5.2.5/ && mkdir $R/{etc,lib/apache,var/log} {,$R}/dev/shm/php_session {,$R}/www/upload  &&
tar -xf php-5.2.5.tar.bz2 && tar -xf APC-3.0.16.tgz &&
cd php-5.2.5 && mv ../APC-3.0.16 ext/apc &&
rm configure && ./buildconf --force &&
sed -i 's:/bin/ls:ls:g' build/shtool &&
sed -i 's:/bin/cat:/usr/bin/cat:g' ext/mbstring/tests/mb_send_mail*.phpt ext/standard/tests/general_functions/{bug34794,proc_open}.phpt &&
sed -i -e's:/bin/sleep:/usr/bin/sleep:g' -e's:string(28):string(32):' -e's:string(14):string(18):' ext/standard/tests/general_functions/{bug39322,proc_open02}.phpt &&
./configure --prefix=/usr --sbindir=/usr/bin --with-layout=GNU --with-apxs2=/usr/bin/apxs --enable-cli --disable-cgi --disable-mod-charset --without-pear  \
--disable-debug --disable-rpath --disable-libgcc --disable-ipv6 --enable-fd-setsize=4096 --disable-versioning --with-config-file-path=/etc  \
--enable-shared --disable-static --with-pic --with-tsrm-pthreads --enable-memory-limit --enable-zend-multibyte --disable-all --disable-reflection  \
--with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --enable-gd-native-ttf --disable-gd-jis-conv  \
--enable-mbstring --enable-mbregex --enable-mbregex-backtrack  --with-pcre-regex=/usr  --with-pgsql=/usr  --enable-session  \
--enable-apc --enable-apc-filehits --disable-apc-mmap --enable-apc-futex   &&
make && echo n | make test | tee $SRC/build_php.log &&
cp libs/libphp5.so   /lib/apache/ && cp $SRC/php.ini   /etc/ &&
cp libs/libphp5.so $R/lib/apache/ && cp $SRC/php.ini $R/etc/ &&
touch {,$R}/var/log/php_error.log &&
cd $SRC && rm */ &&
echo '45-php' >> $SRC/build.log && sync &&

现在所有软件包都已经安装完毕,距离完成最终系统只剩一步之遥了。可以通过查看 $SRC/build*.log 来了解前面的编译过程是否顺利。如果没有严重错误,那么就可以继续下面的操作。

Kbd[暂时不需要进行键盘设置,通过SSH一样可以在命令行上使用UTF-8中文],由于官方的包好久都没有人维护了,因此这里使用非官方的 legion 版本。

R=/root/kbd-1.13/ && mkdir $R/bin &&
tar -xf kbd-1.13.tar.bz2 && cd kbd-1.13 &&
sed -i '/LOADKEYS_BINDIR/s|$(DESTDIR)/bin|$(DESTDIR)$(PREFIX)/bin|' src/Makefile.in &&
./configure --prefix=/usr --datadir=/usr/share/kbd --mandir=/usr/share/man --disable-nls &&
make RPM_OPT_FLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" &&
make install            && mv   /usr/bin/unicode_start   /bin/ &&
make install DESTDIR=$R && mv $R/usr/bin/unicode_start $R/bin/ &&
cd $SRC && rm */ &&
echo '??-kbd' >> $SRC/build.log && sync &&(尚未调试好)Memcached[含libevent]

Memcached是一个基于内存的高性能对象缓存系统。常用于加速动态web应用(本文的PHP将配置为使用它来存储会话数据)。libevent是一个执行事件通知的库,Memcache依赖于它。[提示]内核必须支持事件轮循的系统调用(CONFIG_EPOLL=y),否则该库的运行效率将大大降低。

[说明]无论测试成功与否,libevent的测试程序总是返回表示成功的”0″,所以这里记录下测试输出(regress: FAILED 是正常的)。memcached的测试程序总是无法启动,原因不明,所以这里跳过测试步骤。

R=/root/libevent-1.4.2-rc/ && mkdir $R/lib &&
tar -xf libevent-1.4.2-rc.tar.gz && cd libevent-1.4.2-rc &&
./configure --prefix=/usr --sbindir=/usr/bin --enable-shared --disable-static --with-pic &&
make && make verify > $SRC/build_libevent.log &&
make install            && cp   /usr/lib/libevent-1.4.so.2   /lib/ &&
make install DESTDIR=$R && cp $R/usr/lib/libevent-1.4.so.2 $R/lib/ &&
cd $SRC && rm */ &&
R=/root/memcached-1.2.4/ && mkdir $R/bin $R/dev/shm &&
tar -xf memcached-1.2.4.tar.gz && cd memcached-1.2.4 &&
./configure --prefix=/usr --sbindir=/usr/bin --disable-threads --with-libevent=/usr &&
make && # make test &&
cp memcached   /bin/ &&
cp memcached $R/bin/ &&
touch {,$R}/dev/shm/memcached.sock &&
cd $SRC && rm */ &&
echo '??-memcached[libevent]' >> $SRC/build.log && sync &&FreeType2 + 中文字库[尚未调试好,且与本文主题关系不大,故而暂时取消它]

除了查看 builds/unix/configure 之外,对包的定制还需要通过修改 modules.cfg 和 include/freetype/config/ftoption.h 文件来完成的,详细的信息可以阅读 doc/CUSTOMIZE 文件。[说明]考虑到效率问题,这里的字体都是来自文泉驿的点阵字体。

R=/root/freetype-2.3.5/ && mkdir /share/fonts $R/{lib,share} &&
tar -xf freetype-2.3.5.tar.bz2 && cd freetype-2.3.5 &&
rm objs/* include/freetype/config/ftmodule.h &&
echo 'FONT_MODULES = pcf
HINTING_MODULES =
RASTER_MODULES =
AUX_MODULES = cache
BASE_EXTENSIONS =' > modules.cfg &&
echo '#define __FTOPTION_H__
#include <ft2build.h>
FT_BEGIN_HEADER
#undef  FT_CONFIG_OPTION_FORCE_INT64
#define FT_RENDER_POOL_SIZE  0
#define FT_MAX_MODULES  4
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
FT_END_HEADER' > include/freetype/config/ftoption.h &&
./configure --prefix=/usr --sbindir=/usr/bin --enable-shared --disable-static --without-zlib --without-old-mac-fonts --without-fsspec --without-fsref --without-quickdraw-toolbox --without-quickdraw-carbon --without-ats --with-pic &&
make && make install && make install prefix=$R/usr sbindir=$R/usr/bin &&
cp /usr/lib/libfreetype.so.* /lib/ && cp $R/usr/lib/libfreetype.so.* $R/lib/ &&
cd $SRC && tar -xf wqy-bitmapfont-pcf-0.8.1-7.tar.gz &&
cp wqy-bitmapfont/wenquanyi_{10,12}pt.pcf /share/fonts/ &&
cp -R /share/fonts $R/share/ &&
cd $SRC && rm */ &&
echo '??-freetype+fonts' >> $SRC/build.log && sync &&


相关内容

    暂无相关文章