software-installation – 我应该用自编的PHP替换/usr/bin中的PHP系统二进制文件吗?
作者:互联网
我在我的Mac 10.9机器上安装了PHP 5.4版,并希望升级到5.6.
我下载了源文件并运行./configure,make和make install.我看起来似乎已经成功编译和安装,但它将自己安装到/usr/local/bin中.旧版本的PHP安装在/usr/bin中.
当我运行php时,使用/usr/bin位置,因为/usr/bin位于$PATH中的/usr/local/bin之前.我想使用新版本.
我应该用/usr/local/bin中的版本替换/usr/bin中的旧版PHP吗?或者我应该从/usr/bin中删除它们?
这有点棘手,因为5.6安装还安装了一些其他的东西,比如新版本的perl和pecl以及其他一些辅助二进制文件(包括php-config和phpize).其中一些(最后两个)已经存在于/usr/bin文件夹中,但perl和pecl不存在.我应该将所有新内容移动到/usr/bin吗?
最后,为什么新的安装在/usr/local/bin中而旧的安装没有?区别是否重要? PHP团队是否出于某种原因决定移动它?或者它只是在/usr/bin中,因为它来自我的系统,而下载的更新被放入/usr/local/bin?
php.ini的位置是否依赖于这些?
解决方法:
通常,/ usr层次结构用于来自OS供应商/站点管理员的内容,而/usr/local用于本地安装的内容(例如,在网络上,/ usr可能是由多台计算机共享的NFS安装,而/usr/local是本地文件系统).这就是配置脚本通常默认安装到/usr/local的原因 – 不破坏系统包.这也是为什么PATH在/usr/{bin,sbin}之前应该有/usr/local/{bin,sbin}的原因.
要更改它,您需要做的就是运行良好的构建系统:
./configure --prefix=/path/to/install/to
这说了很多,取决于旧PHP版本的来源.只是覆盖它不是一个好主意,因为它可能会留下旧版本中的一些文件(这就是为什么使用包管理器是Good IdeaTM).因此,除非你有一个干净的卸载以前版本的方法,/usr/local可能稍好一些.另一个选择是(错误)在/ opt下使用单独的层次结构 – 例如安装到/opt/php5.6.
标签:php,path,package-management,software-installation 来源: https://codeday.me/bug/20190816/1669561.html