我应该用自编译的二进制文件替换 /usr/bin 中的 PHP 系统二进制文件吗?

我应该用自编译的二进制文件替换 /usr/bin 中的 PHP 系统二进制文件吗?

我在 Mac 10.9 计算机上安装了 PHP 5.4 版本,并想升级到 5.6。

我下载了源文件并运行了./configure,makemake install.我看了看,它似乎已经编译并安装成功,但它自己安装到了/usr/local/bin.旧版本的 PHP 安装在/usr/bin.

当我运行时php/usr/bin会使用该位置,因为它/usr/bin位于.我想使用新版本。/usr/local/bin$PATH

我应该/usr/bin用 中的版本替换旧版本的 PHP/usr/local/bin吗?或者我应该将它们完全删除/usr/bin

这有点棘手,因为 5.6 安装还安装了一些其他东西,例如新版本的perlpecl以及其他几个帮助程序二进制文件(包括php-configphpize)。其中一些(最后两个)已经存在于/usr/bin文件夹中,但perl并不pecl存在。我应该把所有新东西都移到 吗/usr/bin

最后,为什么新的可以安装,/usr/local/bin而旧的却不能呢?区别重要吗? PHP 团队是否出于某种原因决定移动它?或者只是/usr/bin因为它是我的系统附带的,而下载的更新被放入了/usr/local/bin

的位置php.ini取决于这些吗?

答案1

一般来说,/usr层次结构用于来自操作系统供应商/站点管理员的内容,而/usr/local用于本地安装的内容(例如在网络上,/usr可能是由多台计算机共享的 NFS 安装,而/usr/local本地文件系统)。这就是为什么配置脚本通常/usr/local默认安装到 - 以免破坏系统包。这也是原因,为什么PATH应该有/usr/local/{bin,sbin} /usr/{bin,sbin}

要更改它,您需要做的就是运行(对于表现良好的构建系统):

./configure --prefix=/path/to/install/to

这很大程度上取决于旧 PHP 版本的来源是什么。仅仅覆盖它不是一个好主意,因为它可能会留下旧版本中的一些文件(这就是为什么使用包管理器是一个好主意TM)。因此,除非您有一种干净的方式来卸载以前的版本,否则/usr/local可能会稍微好一些。另一种选择是(错误)使用单独的层次结构/opt- 例如安装到/opt/php5.6.

相关内容