使用MySQL 5.6版本从源代码编译PHP

9
我正在尝试从源代码编译PHP来使ZTS工作。我已经获取了PHP的源代码,并尝试使用以下命令安装依赖项:

apt-get build-dep php5

我还在Ubuntu 14.04LTS上安装了MySQL 5.6,但在运行该命令后出现以下错误:

The following packages have unmet dependencies: mysql-server : Depends: mysql-server-5.5 but it is not going to be installed E: Build-dependencies for php5 could not be satisfied.

是否有任何方法可以绕过此依赖关系?因为MySQL 5.6与预构建的PHP5兼容,但由于缺少依赖项,我无法开始编译。谢谢!

你下载的 PHP 包是哪个版本?你也从源代码编译了 MySQL 吗? - smcjones
@smcjones 安装MySQL 5.6后,运行apt-get install mysql-server-5.6,然后运行apt-get build-dep php5会出现错误,即以下软件包有未满足的依赖关系:mysql-server : 依赖: mysql-server-5.5 但无法安装 E: 无法满足php5的构建依赖项。 - Gerard Roche
如果您尝试通过 apt-get install mysql-server 安装 mysql-server,是否会出现相同的错误? - smcjones
@smcjones 不会出现错误,因为它安装的是5.5版本。这是与5.6版本的依赖关系有关的问题。 - Gerard Roche
我已经编写了一篇教程,其中包括PHP5与pthreads、mongo、PDO、mysqli和curl,并且所有你通常喜欢使用的扩展。教程链接为:http://blog.flowl.info/2015/compile-php-5-6-pthreads-mongo-ubuntu/. - Daniel W.
5个回答

5
虽然不是相同的问题,但这个MySQL bug报告提供了一种解决方案。请按照以下步骤操作:
  1. 卸载mysql-client-5.6和mysql-server-5.6: [sudo] apt-get remove mysql-client-5.6 mysql-server-5.6

  2. 启动[sudo] apt-get build-dep php5命令。在升级之前允许自动构建必要的依赖项。

  3. 重新安装mysql-5.6。这应该会替换所有对mysql-5.5的引用。使用[sudo] apt-get install mysql-client-5.6 mysql-server-5.6命令。


帮帮忙!在我的Debian 8.5 x64上,最后一个命令出错了,错误信息如下:以下软件包存在无法满足的依赖关系: mysql-server-5.6 : 依赖于 mysql-common (>= 5.6.22-1~) 但是要安装的是 5.5.50-0+deb8u1 E: 无法纠正问题,您有损坏的软件包。 - Filip OvertoneSinger Rydlo
1
为了得到一个好的答案,我建议您创建自己的问题而不是在评论中发布 - 我建议您尽可能提供更多细节:您已经采取的步骤,您尝试过的命令等。 - smcjones
真的。谢谢 :-) - Filip OvertoneSinger Rydlo

2
这只是一个猜测,但您可以先安装所需的php构建和mysql 5.5,然后完成后再升级到mysql 5.6。

2
为什么要使用apt-get build-dep而不是install?根据apt-get的man页面,"build-deps"将尝试删除已安装的软件包以解决依赖关系,这里的依赖关系是mysql-server-5.6。我只需使用install即可正常工作。
apt-get install php5

为了测试php是否使用mysql-5.6,我使用apt-get安装了PhpMyadmin,并且它可以很好地与5.6一起工作。您也可以做同样的事情,在变量页面检查名为“Version”的变量。

只是提供一个FYI,apt-get build-dep与从源代码构建不同。


1

在Ubuntu 14.04上,无法直接从Git checkout编译PHP。

欢迎来到依赖地狱。

尝试从预编译下载进行编译。

Git checkout无法编译的原因是与Bison存在依赖问题。Ubuntu 14.04有Bison ~3.0.0版本,而编译PHP需要Bison ~2.0.0版本。

checking for bison... bison -y
checking for bison version... invalid
configure: WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: 3.0, min: 204, excluded: 3.0).
configure: error: bison is required to build PHP/Zend when building a GIT checkout!

解决方法

以下是一种解决方法,可以让apt-get build-dep php5成功运行。

  1. 完全删除MySQL(不仅是相关的5.6软件包)

    非常重要的是,任何和所有的MySQL软件包以及任何配置文件都必须被完全删除。您可以通过运行dpkg -l | grep mysql来检查安装了哪些mysql软件包,请参阅各种dpkg标志(如'ii' 'rc')的含义是什么?

    使用清除选项卸载软件包:apt-get remove --purge <package name>

    您可能还需要手动删除一些文件。阅读apt-get remove --purge打印的消息,它会告诉您如果它没有删除某些文件以及为什么没有删除它们。您需要手动删除apt-get没有删除的那些文件。它们很可能是在/etc/mysql目录中的某个地方的文件。

  2. 运行apt-get build-dep php5

    这将使apt-get build-dep php5成功运行,并安装MySQL 5.5!

  3. 确保已安装libmcrypt-dev

    稍后当您尝试编译时,您会得到关于readlinemcrypt的错误,例如:

    configure: error: Please reinstall readline - I cannot find readline.h
    

    所有这些错误都可以通过安装libmcrypt-dev来解决。:)花了我太久时间才解决这个问题。

    apt-get install libmcrypt-dev
    
  4. 再次完全删除MySQL

    按照步骤1中所做的过程进行,只不过这一次是要删除5.5。

  5. 安装MySQL 5.6

故障排除:尝试编译时仍然出现错误?

请确保已安装libmcrypt-dev


1
由于此问题涉及从源代码安装PHP5:
apt-get build-dep是有问题的。
依赖检测应该与提供的php5-debian软件包中的定义相对应。
据我所知,您想要不同的构建配置
用于您的php5安装。
因此,这通常是./configure --your-configure-options的过程
和make clean compile install。
由调用configure生成的依赖关系定义
将不会被导出或在apt中可见。
因此,您将不得不自己解决依赖关系,安装
需要构建您的php5安装的正确软件版本
以及可能为构建提供所需的正确头文件的开发包。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接