我已经使用以下 URL 安装了 RHSCL 2:
使用 RedHat 订阅管理器。
然后我就跑yum remove php*
了yum install rh-php56
一切顺利,只是现在找不到 PHP。然后我运行并发find / -name php
现在rh-php56
以下目录中:
/var/opt/rh/rh-php56/lib/php
/opt/rh/rh-php56/register.content/var/opt/rh/rh-php56/lib/php
/opt/rh/rh-php56/root/usr/bin/php
/opt/rh/rh-php56/root/usr/lib64/php
/opt/rh/rh-php56/root/usr/share/php
/usr/bin
将这些二进制文件放入通常可供所有用户全局使用的任何其他目录的最佳方法是什么?
我在安装软件包时是否漏掉了某个步骤,导致它无法在全球范围内使用?或者这只是使用 RHSCL 时发生的情况?
我已经测试了这些文件夹中的二进制文件,它们在我运行时可以运行,php -v
所以运行良好。
我的第一个想法是cp
进入/bin
或者/usr/bin
但也许有一种官方的方式来做我所要求的?
编辑
无法评论,没有回复...从我发布的链接的第 3 章来看,它说软件集合包必须像这样运行:
scl enable rh-php56 'php -v'
确实有效……但是我如何让它为所有用户运行,而$ php -v
无需其他命令。我需要全局可用的 php 二进制文件,以便 Web 服务器可以使用它,并且 ssh 用户可以使用普通 shell。
答案1
将软件集合导入当前 shell(而不是启动子 shell)的方法是获取“enable”文件。
例如对于 Redhat 7 机器上的 rh-php56...
源 /opt/rh/rh-php56/enable
您现在可以运行“php”,或正常阅读手册页“man php”。
这会将适当的环境变量添加到当前 shell 环境中。个人用户可以在 .bashrc 文件中执行此操作,从而允许从 SSH(非交互式 shell)中使用它
您还可以将启用文件复制(或符号链接)到 /etc/profile.d/ 中,并以“.sh”后缀结尾,以便自动为所有用户启用它。
例如
ln -s /opt/rh/rh-php56/enable /etc/profile.d/rh-php56.sh
如果需要的环境不止一个(例如守护进程?),请谨慎执行此操作。或者,如果系统上存在该软件的多个版本(为了向后兼容其他软件/服务),因为版本之间可能会有交互。此外,用户可能不想要“最新”版本,或者对“基本”系统(例如:/etc 配置)为何不影响软件集合版本感到困惑。
Anthony Thyssen(一位非常老的系统管理员)