Debian 6.0 – How to Install mysqlnd_ms

debian-squeezepeclPHP

I'm trying to install mysqlnd_ms on my new server (Debian 6.0 i386).

To do so, I've tried as follow :

  1. I install php5-5.4.0-3 and php5-mysqlnd by testing repo.
  2. After read this link:1, I try to install mysqlnd_ms by pecl so I install php5-dev and php5-pear

After that I try pecl install mysqlnd_ms and I have this :

 downloading mysqlnd_ms-1.2.2.tgz ...
 Starting to download mysqlnd_ms-1.2.2.tgz (337,534 bytes)
 .............................done: 337,534 bytes
 ERROR: bad md5sum for file /tmp/pear/temp/mysqlnd_ms/package.xml

It's the same issue as this bug repport link:2.

So I've decided to do the job by myself and follow the same process than pecl (download, compile, install) link:3 :

  1. pecl download mysqlnd_ms
  2. After untar the source, phpize
  3. ./configure
  4. make test and I have an error because of missing ext/mysqlnd/*
  5. I get those files from php-src from link:4
  6. make test again and new issue :

    error: ./php_mysqlnd_config.h: No such file or directory
    
  7. I found link:5 and link:6 on the intraweb . So I try ./configure --enable-mysqlnd. After get this :

    configure: WARNING: unrecognized options: --enable-mysqlnd
    

    I try ./configure -h :

    Optional Features:
     --disable-option-checking  ignore unrecognized --enable/--with options
     --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
     --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
     --enable-mysqlnd-ms           Enable mysqlnd_ms support
     --enable-mysqlnd-ms-table-filter   Enable support for table filter in mysqlnd_ms      (EXPERIMENTAL - do not use!)
     --enable-shared[=PKGS]  build shared libraries [default=yes]
     --enable-static[=PKGS]  build static libraries [default=yes]
     --enable-fast-install[=PKGS]
                      optimize for fast installation [default=yes]
     --disable-libtool-lock  avoid locking (might break parallel builds)
    

    There is no such parameter to configure the build.I'm stuck right now.

Is there a way to install mysqlnd_ms on Debian with PHP5-5.4.0-3 ? or with a previous version of PHP ? In case of previous version of PHP, how can I get this version and all linked composants ?

Thank you for your help.

All links here (due to serverfault spam prevention limitation) : gist

Best Answer

I had the same problem(s) - turns out there were two issues here...

1. bad md5sum for file /tmp/pear/temp/mysqlnd_ms/package.xml

ERROR: bad md5sum for file /tmp/pear/temp/mysqlnd_ms/package.xml

This was as described, turns out in pecl packages there's a package.xml that lists the md5 value of all files in the tar. I solved this by downloading the pecl package and replacing the package.xml md5 with the correct value (using md5sum package.xml on the file itself). Steps:

sudo pecl download mysqlnd_ms

Then extract the tar, run the following on package.xml (which was in the root of the zip file, not the folder with everything else)

md5sum package.xml

And updating the contents of package.xml (line 458 for me) so it reads the correct md5, for me it was:

<file md5sum="f0051920d77ae99ba5a3fe6c3bcaa402" name="package.xml" role="src" />

Re-tar the package again, and you'll see running the installation gets you further..

sudo pecl install mysqlnd_ms-1.3.2.tar

But not all the way, leading me to the next issue you and I both faced...

2. error: ./php_mysqlnd_config.h: No such file or directory

I was using the standard Ubuntu 12.04 PHP 5.3 from the default apt-get repos, which does not come with the mysql native driver support out of the box, see http://php.net/manual/en/mysqli.installation.php.

So I removed the current PHP install, downloaded the PHP source and compiled / installed with the all important configure flags --enable-pdo --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd

There was a lot of dependencies missing from my default install to get everything I wanted, some of which might not matter to you, but here's my full package dependencies install and configure commands:

sudo apt-get install libxml2-dev libbz2-dev libcurl4-gnutls-dev libpng12-dev libjpeg62-dev libxpm-dev libfreetype6-dev libt1-dev libmcrypt-dev libmhash-dev libxslt1-dev

./configure --enable-fpm --enable-soap --enable-calendar --enable-ftp --enable-libxml --enable-mbstring --enable-sockets --enable-zend-multibyte --enable-zip --with-zlib --with-mcrypt --enable-pdo --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-gd

make test

make install

Now running the installation works fine for me:

sudo pecl install mysqlnd_ms-1.3.2.tar

Hope this helps somebody!