Php – How to install PHP xdiff extension on Debian

debianpeclPHP

I am trying to install the PHP xdiff extension on Debian with Apache 2 and PHP Version 5.4.44, but I can't get it working.

I tried the following

pecl install xdiff

But I got errors:

[…]
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

After that I installed re2c with

apt-get install re2c

Now I get:

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

I gues I have to install libxdiff but how do I do it?

[UPDATE]

As I can't find any sources I could compile by my self, I tried to convert Fedorer's rpm-package with 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

Although the install process did not throw any errors, trying to install xdiff with pecl I got the same error as mentioned above.

[UPDATE 2]
I tried to compile as follows:

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

But I get errors:

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'

Best Answer

Your goal is just to install the php diff extension. Just execute the following command.

cd /usr/src/
curl -O http://www.xmailserver.org/libxdiff-0.23.tar.gz
tar -xzf libxdiff-0.23.tar.gz 
cd libxdiff-0.23/
./configure
make
pecl install xdiff-2.0.1

Directly enter as prompted

libxdiff library installation dir? [autodetect] : /usr/src/libxdiff-0.23