9

我正在尝试从源代码编译 PHP 以使 ZTS 正常工作。我有 PHP 的源代码,我尝试安装依赖项

apt-get build-dep php5

我还为 Ubuntu 14.04LTS 安装了 MySQL 5.6,并且在命令之后出现此错误:

以下软件包具有未满足的依赖关系: mysql-server :依赖:mysql-server-5.5 但不会安装 E:无法满足 php5 的构建依赖关系。

无论如何绕过这种依赖关系,因为 MySQL 5.6 可以与预构建的 PHP5 一起工作,但由于缺少依赖关系,我无法开始编译?谢谢!

4

5 回答 5

5

虽然不是同一个问题,但这个 MySQL 错误报告暗示了一个解决方案。尝试以下步骤:

  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

于 2014-07-10T14:47:57.123 回答
2

这只是在黑暗中的一个镜头,但是您可以尝试先使用所需的 php 构建安装 mysql 5.5,一旦完成,将 mysql 升级到 5.6

于 2014-07-05T16:45:44.420 回答
2

为什么你使用 apt-get build-dep 而不是 install?根据 apt-get 的手册页,“build-deps”将尝试删除已安装的软件包以解决此处为 mysql-server-5.6 的依赖关系。我只是使用 install 并且它可以工作。

apt-get install php5

为了测试 php 是否使用 mysql-5.6,我使用 apt-get 安装了 PhpMyadmin,它在 5.6 上运行良好,你可以做同样的事情,并在变量页面中检查名为“版本”的变量。

正如 FYI apt-get build-dep 与从源代码构建不同一样。

于 2014-07-11T18:58:34.793 回答
1

由于这个问题是关于从源代码安装 PHP5:
apt-get build-dep 是有问题的。 依赖项检测应该对应于与提供的 php5 - debian - 包
中相同的定义。 据我了解,您希望 为您的 php5 安装提供不同的构建配置。 所以这通常是一个 ./configure --your-configure-options 和 make clean compile install 的过程。 调用配置生成的依赖项定义 不会被导出,也不会被 apt 看到。 因此,您必须自己解决依赖关系,安装 构建 php5 所需的正确版本的软件 - 安装









也许还有开发包,以提供构建所需的正确标头。

于 2014-07-11T14:59:48.423 回答
1

PHP 无法从 Ubuntu 14.04 开箱即用的 Git 签出中编译。

欢迎来到依赖地狱。

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

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 包和任何配置文件非常重要。您可以通过运行检查安装了哪些 mysql 包dpkg -l | grep mysql请参阅'ii' 'rc' 等各种标志是什么意思?dpkg

    使用清除选项卸载软件包: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已安装。

于 2014-07-14T20:33:20.570 回答