在Debian 6上安装Gearman PHP扩展

我正在拼命想让Gearman PHP扩展工作在Debian 6上。

我有所有的二进制文件和来源

root@debian:/tmp/pear/install# aptitude search gearman i gearman - A distributed job queue i A gearman-job-server - Job server for the Gearman i gearman-tools - Tools for the Gearman i libgearman-dev - Development files for the i libgearman4 - Library providing Gearman 

…但是,当PHP扩展confing有一些错误,不让我安装它

 # /usr/local/pear/bin/pecl install gearman downloading gearman-1.1.0.tgz ... Starting to download gearman-1.1.0.tgz (30,488 bytes) .........done: 30,488 bytes 3 source files, building running: phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 building in /tmp/pear/install/pear-build-rootrDO8Ob/gearman-1.1.0 running: /tmp/pear/install/gearman/configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for a sed that does not truncate output... /bin/sed checking for cc... cc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether cc accepts -g... yes checking for cc option to accept ISO C89... none needed checking how to run the C preprocessor... cc -E checking for icc... no checking for suncc... no checking whether cc understands -c and -o together... yes checking for system library directory... lib checking if compiler supports -R... no checking if compiler supports -Wl,-rpath,... yes checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for PHP prefix... /usr checking for PHP includes... -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib checking for PHP extension directory... /usr/lib/php5/20090626 checking for PHP installed headers prefix... /usr/include/php5 checking if debug is enabled... no checking if zts is enabled... no checking for re2c... no configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. checking for gawk... no checking for nawk... nawk checking if nawk is broken... no checking whether to enable gearman support... yes, shared not found configure: error: Please install libgearman ERROR: `/tmp/pear/install/gearman/configure' failed 

config.m4有一些有趣的行

  for i in $PHP_GEARMAN /usr/local /usr /opt/local; do if test -r $i/include/libgearman-1.0/gearman.h; then GEARMAN_LIB_DIR=/usr/lib GEARMAN_INC_DIR=/usr/include/ AC_MSG_RESULT([found in $i]) break fi done 

首先是对“libgearman-1.0”的引用(在源代码中使用相同的目录名称)。 安装包括去到/ usr / include / libgearman。 不是一个大问题,我创build了一个链接

 ln -s libgearman/ libgearman-1.0 

还有,以防万一GEARMAN_LIB_DIR和GEARMAN_INC_DIR指向正确的目录。 不幸的是,这是我得到的:

 ./configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for a sed that does not truncate output... /bin/sed checking for cc... cc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether cc accepts -g... yes checking for cc option to accept ISO C89... none needed checking how to run the C preprocessor... cc -E checking for icc... no checking for suncc... no checking whether cc understands -c and -o together... yes checking for system library directory... lib checking if compiler supports -R... no checking if compiler supports -Wl,-rpath,... yes checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for PHP prefix... /usr checking for PHP includes... -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib checking for PHP extension directory... /usr/lib/php5/20090626 checking for PHP installed headers prefix... /usr/include/php5 checking if debug is enabled... no checking if zts is enabled... no checking for re2c... no configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. checking for gawk... no checking for nawk... nawk checking if nawk is broken... no checking whether to enable gearman support... yes, shared found in /usr checking for gearman_client_set_context in -lgearman... yes checking for gearman_worker_set_server_option in -lgearman... no configure: error: libgearman version 0.21 or later required 

你知道在Debian / Ubuntu上安装这个PHP扩展最简单的方法是什么? 我在谷歌上find了一些主张,但其中没有一个对我有用。

这不起作用的原因是,正如错误消息所说,最新版本的PHP扩展需要libgearman-1.0(这就是为什么目录名为1.0)。 你需要至少在wheezy(这是debian 6 / squeeze之后的版本)才能获得libgearman-1.0。

这也可能是一个解决方案,从源代码编译libgearman,然后使用checkinstall创建一个debian软件包,然后安装,或者使用https://launchpad.net/~gearman-developers/+archive/ppa的gearman developer ppa。 https://launchpad.net/~gearman-developers/+archive/ppa 。 我们在各种发行版(包括Debian,Ubuntu,RHEL4和SL6)上构建了libgearman,gearmand和PHP扩展,并使用checkinstall来获得适当的包。

你可以在这里找到详细的安装说明来安装旧版的gearman(0.8.3),这可以解决你的问题http://blog.andyburton.co.uk/index.php/2012-12/gearman-0-41 -with MySQL的持久存储和- PHP-PECL-0-8-3与- gearmanmanager-上的ubuntu-12-04 /

 sudo apt-get install make gcc g++ sudo apt-get install libboost-thread-dev libboost-program-options-dev libevent-dev uuid-dev libpq-dev libcloog-ppl0 libcurl4-gnutls-dev sudo apt-get install libmemcached-dev libmariadbclient-dev libsqlite3-dev # option wget https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz tar xvfz gearmand-1.1.12.tar.gz cd gearmand-1.1.12 ./configure make sudo make install sudo useradd -M gearman -s /sbin/nologin -r sudo mkdir /var/run/gearman /var/log/gearman-job-server sudo touch /var/log/gearman-job-server/gearman.log sudo chown gearman:gearman /var/run/gearman /var/log/gearman-job-server sudo vi /etc/init.d/gearman-job-server 

资源