我正在尝试在我的 Ubuntu 12.04 VPS 上从源代码安装 PHP。我在 configure 命令中使用以下参数:
--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 的 repo(但是,请有人制作一个?)。
答案1
当您从源代码编译或安装 apt(apt-get)之外的包时,就会出现这个问题。
可能最简单的解决方案是使用 checkinstall
sudo apt-get install checkinstall
然后制作并安装php
make
sudo checkinstall
checkinstall 从您的源代码创建一个 .deb,然后安装一个 .deb,因此 apt 将会确认 php 已安装。
答案2
不要告诉 Ubuntu 任何事情。相反,将其安装到与 Ubuntu 包管理运行所在的目录不同的目录中。这就是/usr/local
和/opt
的用途。使用它们!