我正在尝试在我的 Ubuntu 12.04 VPS 上从源代码安装 PHP。
我像这样安装 PHP:
- 从 php.net 网站下载最新版本。
- 使用以下参数对其进行配置。
- 必要时安装任何依赖项。 (libxxxxx-dev)
- 然后做一个
- 然后进行安装
- 将 php.ini 文件和 fpm 配置文件移动到正确的位置
我在配置命令中使用这些参数:
--enable-intl
--with-openssl
--without-pear
--with-gd
--with-jpeg-dir=/usr
--with-png-dir=/usr
--with-freetype-dir=/usr
--with-freetype
--enable-exif
--enable-zip
--with-zlib
--with-zlib-dir=/usr
--with-mcrypt=/usr
--with-pdo-sqlite
--enable-soap
--enable-xmlreader
--with-xsl
--enable-ftp
--with-curl=/usr
--with-tidy
--with-xmlrpc
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--enable-pcntl
--with-readline
--enable-mbstring
--with-curl
--with-pgsql
--with-pdo-pgsql
--with-gettext
--enable-sockets
--with-bz2
--enable-bcmath
--enable-calendar
--with-libdir=lib
--enable-maintainer-zts
--with-gmp
--enable-fpm
现在,一切进展顺利。该版本按预期工作,在安装过程中我没有遇到任何问题。现在有趣的事情来了。每当我想安装类似的东西mcrypt
(例如)时,我通常会键入,apt-get install php5-mcrypt
但当我这样做时,并查看依赖项,我发现 PHP5 仍然被列为其中之一,并且一旦我点击y
(覆盖我自己的版本)就会安装。
现在我问题的真正核心是,如何让 Ubuntu 知道我已经安装了 PHP5,以便它不再尝试将 PHP5 作为依赖项安装。我必须在配置过程中更改某些内容吗?我是否必须apt-get
先使用该方式安装 PHP5,然后手动将其删除,然后再安装我自己的 PHP 版本。
值得一提的是,我需要这个自定义 PHP 构建来使 Pthreads 工作,因为没有提供 ZTS 版本 PHP 的存储库(但是,请制作一个,有人吗?)。
答案1
这里有几种选择:
添加
--prefix=/usr/local
到配置脚本(假设这是 PHP 使用的)或以其他方式确保您的 PHP 安装到/usr/local
.这意味着您将拥有自己的 PHP 版本与系统版本一起安装。例如,由于/usr/local/bin
优先于/usr/bin
inPATH
,因此在许多情况下将使用您自己的构建(特别是从命令行启动时)。默认情况下,这不会干扰可能针对特定版本的 PHP 构建的系统包,并且如果它们尝试使用您自己的构建提供的库,则会被破坏。使用这种方法,虽然您确实需要注意哪些程序正在使用哪些库,但是应该可以毫无问题地做到这一点。查找更接近您需求的 PHP 打包版本。如果它是较新的版本,则有很多 Ubuntu ppa 提供此功能(最好首先查看官方“向后移植”存储库,因为任何人都可以创建可能损坏的 ppa)。请注意,这也可能会导致冲突,迫使您从 ppa 安装其他软件包(或者如果它们不可用,则让您陷入困境)。
下载源码包并重新编译。如果您想要自定义构建选项,这可能是您需要执行的操作。互联网上有很多关于此的教程,但基本上您可以将必要的
deb-src
行添加到您的sources.list
文件(或sources.list.d
)并下载apt-get source
(或者直接从软件包.ubuntu.com)。使用存档提取dpkg-source
然后您将调整包目录中的构建选项debian
,使用debuild
或dpkg-buildpackage
构建并使用dpkg -i
.如果您还需要更新的版本,您甚至可以使用 ppa 中的软件包来执行此操作(尽管有同样的注意事项)。最后,最困难的选择是创建自己的包。从上述源代码包之一开始,并使用与其他可用版本不同的上游源代码版本是一个很好的起点。然而,这完全取决于您来确保该软件包与系统的其余部分良好配合。
答案2
好的,不要使用您首先提到的方法,请尝试以下方法:
首先,确保文件deb-src
中有条目sources.list
并且已运行apt-get update
.这将使下面的步骤变得更容易。现在安装构建工具:
sudo apt-get install devscripts
安装构建依赖项:
sudo apt-get build-dep php5
获取php5的源码:
apt-get source php5
cd php5*
您会注意到,除了下载源代码之外,它还应用了补丁。现在查找配置脚本,该脚本位于debian/rules
.有一个名为 的条目COMMON_CONFIG
,根据需要编辑它:
editor debian/rules
## add, remove, change the configuration and save the file.
## You will find that most of them are enabled by default,
## or already included.
我建议使用dch -i
.现在您已准备好构建您的东西:
debuild -us
这将在父目录中创建准备安装的文件。现在,您确实应该重新考虑为什么需要从源代码构建东西。大多数安全问题都会在有可用修复程序时立即得到修复,并且由于 PHP 的性质(在生产中使用),建议使用官方软件包。