如何在Debian上安装PHP xdiff扩展?

我正在尝试在Apache 2和PHP 5.4.44版本的Debian上安装PHP xdiff扩展 ,但是我无法正常工作。

我尝试了以下

pecl install xdiff 

但是我得到错误:

 […] 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/20100525 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 for xdiff support... yes, shared checking for xdiff files in default path... not found configure: error: Please reinstall the libxdiff distribution ERROR: `/tmp/pear/temp/xdiff/configure --with-xdiff' failed 

之后,我安装了re2c

 apt-get install re2c 

现在我得到:

 checking for re2c... re2c checking for re2c version... 0.13.5 (ok) checking for gawk... no checking for nawk... nawk checking if nawk is broken... no checking for xdiff support... yes, shared checking for xdiff files in default path... not found configure: error: Please reinstall the libxdiff distribution ERROR: `/tmp/pear/temp/xdiff/configure --with-xdiff' failed 

我觉得我必须安装libxdiff但我该怎么做呢?

[UPDATE]

由于我无法find任何可以自己编译的源代码,所以我试图将Fedorer的rpm包与alian

 apt-get install alian wget ftp://ftp.muug.mb.ca/mirror/fedora/linux/releases/20/Everything/x86_64/os/Packages/l/libxdiff-1.0-3.fc20.x86_64.rpm alian libxdiff-1.0-3.fc20.x86_64.rpm dpkg -i libxdiff-1.0-3.fc20.x86_64.deb 

虽然安装过程没有抛出任何错误,试图与pecl安装pecl我得到了同样的错误,如上所述。

[更新2]我试图编译如下:

 curl -O http://www.xmailserver.org/libxdiff-0.23.tar.gz tar -xzf libxdiff-0.23.tar.gz cd libxdiff-0.23/ ./configure make make install 

但是我得到错误:

 make all-recursive make[1]: Entering directory '/home/user/libxdiff-0.23' Making all in . make[2]: Entering directory '/home/user/libxdiff-0.23' make[2]: Leaving directory '/home/user/libxdiff-0.23' Making all in xdiff make[2]: Entering directory '/home/user/libxdiff-0.23/xdiff' if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xdiffi.lo -MD -MP -MF ".deps/xdiffi.Tpo" -c -o xdiffi.lo xdiffi.c; \ then mv -f ".deps/xdiffi.Tpo" ".deps/xdiffi.Plo"; else rm -f ".deps/xdiffi.Tpo"; exit 1; fi mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xdiffi.lo -MD -MP -MF .deps/xdiffi.Tpo -c xdiffi.c -fPIC -DPIC -o .libs/xdiffi.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xdiffi.lo -MD -MP -MF .deps/xdiffi.Tpo -c xdiffi.c -o xdiffi.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xprepare.lo -MD -MP -MF ".deps/xprepare.Tpo" -c -o xprepare.lo xprepare.c; \ then mv -f ".deps/xprepare.Tpo" ".deps/xprepare.Plo"; else rm -f ".deps/xprepare.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xprepare.lo -MD -MP -MF .deps/xprepare.Tpo -c xprepare.c -fPIC -DPIC -o .libs/xprepare.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xprepare.lo -MD -MP -MF .deps/xprepare.Tpo -c xprepare.c -o xprepare.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xpatchi.lo -MD -MP -MF ".deps/xpatchi.Tpo" -c -o xpatchi.lo xpatchi.c; \ then mv -f ".deps/xpatchi.Tpo" ".deps/xpatchi.Plo"; else rm -f ".deps/xpatchi.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xpatchi.lo -MD -MP -MF .deps/xpatchi.Tpo -c xpatchi.c -fPIC -DPIC -o .libs/xpatchi.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xpatchi.lo -MD -MP -MF .deps/xpatchi.Tpo -c xpatchi.c -o xpatchi.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xmerge3.lo -MD -MP -MF ".deps/xmerge3.Tpo" -c -o xmerge3.lo xmerge3.c; \ then mv -f ".deps/xmerge3.Tpo" ".deps/xmerge3.Plo"; else rm -f ".deps/xmerge3.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xmerge3.lo -MD -MP -MF .deps/xmerge3.Tpo -c xmerge3.c -fPIC -DPIC -o .libs/xmerge3.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xmerge3.lo -MD -MP -MF .deps/xmerge3.Tpo -c xmerge3.c -o xmerge3.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xemit.lo -MD -MP -MF ".deps/xemit.Tpo" -c -o xemit.lo xemit.c; \ then mv -f ".deps/xemit.Tpo" ".deps/xemit.Plo"; else rm -f ".deps/xemit.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xemit.lo -MD -MP -MF .deps/xemit.Tpo -c xemit.c -fPIC -DPIC -o .libs/xemit.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xemit.lo -MD -MP -MF .deps/xemit.Tpo -c xemit.c -o xemit.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xmissing.lo -MD -MP -MF ".deps/xmissing.Tpo" -c -o xmissing.lo xmissing.c; \ then mv -f ".deps/xmissing.Tpo" ".deps/xmissing.Plo"; else rm -f ".deps/xmissing.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xmissing.lo -MD -MP -MF .deps/xmissing.Tpo -c xmissing.c -fPIC -DPIC -o .libs/xmissing.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xmissing.lo -MD -MP -MF .deps/xmissing.Tpo -c xmissing.c -o xmissing.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xutils.lo -MD -MP -MF ".deps/xutils.Tpo" -c -o xutils.lo xutils.c; \ then mv -f ".deps/xutils.Tpo" ".deps/xutils.Plo"; else rm -f ".deps/xutils.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xutils.lo -MD -MP -MF .deps/xutils.Tpo -c xutils.c -fPIC -DPIC -o .libs/xutils.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xutils.lo -MD -MP -MF .deps/xutils.Tpo -c xutils.c -o xutils.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xadler32.lo -MD -MP -MF ".deps/xadler32.Tpo" -c -o xadler32.lo xadler32.c; \ then mv -f ".deps/xadler32.Tpo" ".deps/xadler32.Plo"; else rm -f ".deps/xadler32.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xadler32.lo -MD -MP -MF .deps/xadler32.Tpo -c xadler32.c -fPIC -DPIC -o .libs/xadler32.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xadler32.lo -MD -MP -MF .deps/xadler32.Tpo -c xadler32.c -o xadler32.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xbdiff.lo -MD -MP -MF ".deps/xbdiff.Tpo" -c -o xbdiff.lo xbdiff.c; \ then mv -f ".deps/xbdiff.Tpo" ".deps/xbdiff.Plo"; else rm -f ".deps/xbdiff.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xbdiff.lo -MD -MP -MF .deps/xbdiff.Tpo -c xbdiff.c -fPIC -DPIC -o .libs/xbdiff.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xbdiff.lo -MD -MP -MF .deps/xbdiff.Tpo -c xbdiff.c -o xbdiff.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xbpatchi.lo -MD -MP -MF ".deps/xbpatchi.Tpo" -c -o xbpatchi.lo xbpatchi.c; \ then mv -f ".deps/xbpatchi.Tpo" ".deps/xbpatchi.Plo"; else rm -f ".deps/xbpatchi.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xbpatchi.lo -MD -MP -MF .deps/xbpatchi.Tpo -c xbpatchi.c -fPIC -DPIC -o .libs/xbpatchi.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xbpatchi.lo -MD -MP -MF .deps/xbpatchi.Tpo -c xbpatchi.c -o xbpatchi.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xversion.lo -MD -MP -MF ".deps/xversion.Tpo" -c -o xversion.lo xversion.c; \ then mv -f ".deps/xversion.Tpo" ".deps/xversion.Plo"; else rm -f ".deps/xversion.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xversion.lo -MD -MP -MF .deps/xversion.Tpo -c xversion.c -fPIC -DPIC -o .libs/xversion.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xversion.lo -MD -MP -MF .deps/xversion.Tpo -c xversion.c -o xversion.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xalloc.lo -MD -MP -MF ".deps/xalloc.Tpo" -c -o xalloc.lo xalloc.c; \ then mv -f ".deps/xalloc.Tpo" ".deps/xalloc.Plo"; else rm -f ".deps/xalloc.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xalloc.lo -MD -MP -MF .deps/xalloc.Tpo -c xalloc.c -fPIC -DPIC -o .libs/xalloc.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xalloc.lo -MD -MP -MF .deps/xalloc.Tpo -c xalloc.c -o xalloc.o >/dev/null 2>&1 if /bin/bash ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xrabdiff.lo -MD -MP -MF ".deps/xrabdiff.Tpo" -c -o xrabdiff.lo xrabdiff.c; \ then mv -f ".deps/xrabdiff.Tpo" ".deps/xrabdiff.Plo"; else rm -f ".deps/xrabdiff.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xrabdiff.lo -MD -MP -MF .deps/xrabdiff.Tpo -c xrabdiff.c -fPIC -DPIC -o .libs/xrabdiff.o gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -MT xrabdiff.lo -MD -MP -MF .deps/xrabdiff.Tpo -c xrabdiff.c -o xrabdiff.o >/dev/null 2>&1 /bin/bash ../libtool --tag=CC --mode=link gcc -g -O2 -o libxdiff.la -rpath /usr/local/lib xdiffi.lo xprepare.lo xpatchi.lo xmerge3.lo xemit.lo xmissing.lo xutils.lo xadler32.lo xbdiff.lo xbpatchi.lo xversion.lo xalloc.lo xrabdiff.lo gcc -shared .libs/xdiffi.o .libs/xprepare.o .libs/xpatchi.o .libs/xmerge3.o .libs/xemit.o .libs/xmissing.o .libs/xutils.o .libs/xadler32.o .libs/xbdiff.o .libs/xbpatchi.o .libs/xversion.o .libs/xalloc.o .libs/xrabdiff.o -Wl,-soname -Wl,libxdiff.so.0 -o .libs/libxdiff.so.0.0.0 (cd .libs && rm -f libxdiff.so.0 && ln -s libxdiff.so.0.0.0 libxdiff.so.0) (cd .libs && rm -f libxdiff.so && ln -s libxdiff.so.0.0.0 libxdiff.so) ar cru .libs/libxdiff.a xdiffi.o xprepare.o xpatchi.o xmerge3.o xemit.o xmissing.o xutils.o xadler32.o xbdiff.o xbpatchi.o xversion.o xalloc.o xrabdiff.o ranlib .libs/libxdiff.a creating libxdiff.la (cd .libs && rm -f libxdiff.la && ln -s ../libxdiff.la libxdiff.la) make[2]: Leaving directory '/home/user/libxdiff-0.23/xdiff' Making all in test make[2]: Entering directory '/home/user/libxdiff-0.23/test' if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../xdiff -g -O2 -MT xdiff_test.o -MD -MP -MF ".deps/xdiff_test.Tpo" -c -o xdiff_test.o xdiff_test.c; \ then mv -f ".deps/xdiff_test.Tpo" ".deps/xdiff_test.Po"; else rm -f ".deps/xdiff_test.Tpo"; exit 1; fi if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../xdiff -g -O2 -MT xtestutils.o -MD -MP -MF ".deps/xtestutils.Tpo" -c -o xtestutils.o xtestutils.c; \ then mv -f ".deps/xtestutils.Tpo" ".deps/xtestutils.Po"; else rm -f ".deps/xtestutils.Tpo"; exit 1; fi /bin/bash ../libtool --tag=CC --mode=link gcc -g -O2 -o xdiff_test xdiff_test.o xtestutils.o ../xdiff/.libs/libxdiff.a mkdir .libs gcc -g -O2 -o xdiff_test xdiff_test.o xtestutils.o ../xdiff/.libs/libxdiff.a if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../xdiff -g -O2 -MT xregression.o -MD -MP -MF ".deps/xregression.Tpo" -c -o xregression.o xregression.c; \ then mv -f ".deps/xregression.Tpo" ".deps/xregression.Po"; else rm -f ".deps/xregression.Tpo"; exit 1; fi /bin/bash ../libtool --tag=CC --mode=link gcc -g -O2 -o xregression xregression.o xtestutils.o ../xdiff/.libs/libxdiff.a gcc -g -O2 -o xregression xregression.o xtestutils.o ../xdiff/.libs/libxdiff.a make[2]: Leaving directory '/home/user/libxdiff-0.23/test' Making all in tools make[2]: Entering directory '/home/user/libxdiff-0.23/tools' if gcc -DHAVE_CONFIG_H -I. -I. -I.. -DXRAB_WORD_TYPE=int -DXRAB_WORD_PFMT=\"0x%x\" -g -O2 -MT xrabin32-xrabin.o -MD -MP -MF ".deps/xrabin32-xrabin.Tpo" -c -o xrabin32-xrabin.o `test -f 'xrabin.c' || echo './'`xrabin.c; \ then mv -f ".deps/xrabin32-xrabin.Tpo" ".deps/xrabin32-xrabin.Po"; else rm -f ".deps/xrabin32-xrabin.Tpo"; exit 1; fi xrabin.c: In function 'main': xrabin.c:242:4: warning: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'long unsigned int' [-Wformat=] degree, XPLYW_BITS); ^ xrabin.c:255:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "#if defined(XRABPLY_TYPE%d)\n\n", XPLYW_BITS); ^ xrabin.c:256:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "#if !defined(XV%d)\n", XPLYW_BITS); ^ xrabin.c:257:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "#define XV%d(v) ((xply_word) v ## ULL)\n", XPLYW_BITS); ^ xrabin.c:260:3: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] XPLYW_BITS, ply); ^ xrabin.c:263:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "typedef unsigned XRABPLY_TYPE%d xply_word;\n\n", XPLYW_BITS); ^ xrabin.c:274:3: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "XV%d(" XRAB_WORD_PFMT ")", XPLYW_BITS, t[i]); ^ xrabin.c:288:3: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "XV%d(" XRAB_WORD_PFMT ")", XPLYW_BITS, u[i]); ^ xrabin.c:292:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "#endif /* if defined(XRABPLY_TYPE%d) */\n\n", XPLYW_BITS); ^ /bin/bash ../libtool --tag=CC --mode=link gcc -g -O2 -o xrabin32 xrabin32-xrabin.o mkdir .libs gcc -g -O2 -o xrabin32 xrabin32-xrabin.o if gcc -DHAVE_CONFIG_H -I. -I. -I.. -DXRAB_WORD_TYPE="long long" -DXRAB_WORD_PFMT=\"0x%llx\" -g -O2 -MT xrabin64-xrabin.o -MD -MP -MF ".deps/xrabin64-xrabin.Tpo" -c -o xrabin64-xrabin.o `test -f 'xrabin.c' || echo './'`xrabin.c; \ then mv -f ".deps/xrabin64-xrabin.Tpo" ".deps/xrabin64-xrabin.Po"; else rm -f ".deps/xrabin64-xrabin.Tpo"; exit 1; fi xrabin.c: In function 'main': xrabin.c:242:4: warning: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'long unsigned int' [-Wformat=] degree, XPLYW_BITS); ^ xrabin.c:255:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "#if defined(XRABPLY_TYPE%d)\n\n", XPLYW_BITS); ^ xrabin.c:256:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "#if !defined(XV%d)\n", XPLYW_BITS); ^ xrabin.c:257:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "#define XV%d(v) ((xply_word) v ## ULL)\n", XPLYW_BITS); ^ xrabin.c:260:3: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] XPLYW_BITS, ply); ^ xrabin.c:263:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "typedef unsigned XRABPLY_TYPE%d xply_word;\n\n", XPLYW_BITS); ^ xrabin.c:274:3: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "XV%d(" XRAB_WORD_PFMT ")", XPLYW_BITS, t[i]); ^ xrabin.c:288:3: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "XV%d(" XRAB_WORD_PFMT ")", XPLYW_BITS, u[i]); ^ xrabin.c:292:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] fprintf(stdout, "#endif /* if defined(XRABPLY_TYPE%d) */\n\n", XPLYW_BITS); ^ /bin/bash ../libtool --tag=CC --mode=link gcc -g -O2 -o xrabin64 xrabin64-xrabin.o gcc -g -O2 -o xrabin64 xrabin64-xrabin.o make[2]: Leaving directory '/home/user/libxdiff-0.23/tools' Making all in man make[2]: Entering directory '/home/user/libxdiff-0.23/man' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/home/user/libxdiff-0.23/man' make[1]: Leaving directory '/home/user/libxdiff-0.23' 

如果你使用PHP版本。 5.4或以上,如何在这种情况下。 实际包在这里http://pecl.php.net/package/xdiff/1.5.2

你可以通过pecl安装它:

 pecl install xdiff-beta 

祝你好运 !