La mejor manera de hacer que RHSCL PHP esté disponible a nivel mundial

10

He instalado RHSCL 2 usando la siguiente url:

https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collections/2/html/2.0_Release_Notes/chap-Installation.html

utilizando el administrador de suscripción de RedHat.

Luego corrí yum remove php*seguido deyum install rh-php56

Todo salió bien, excepto que ahora PHP no se encuentra en ningún lado. Luego corrí find / -name phpy encontré rh-php56en los siguientes directorios:

/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

¿Cuál es la mejor manera de obtener estos archivos binarios /usr/bino cualquier otro directorio que generalmente esté disponible globalmente para todos los usuarios?

¿Perdí un paso al instalar los paquetes y por eso no está disponible a nivel mundial? ¿O es esto lo que sucede cuando se usan RHSCL?

He probado los archivos binarios en esas carpetas y funcionan cuando ejecuto, php -vpor lo que funciona bien.

¿Mi primer pensamiento es simplemente cpentrar /bino /usr/binquizás hay una forma oficial de hacer lo que estoy pidiendo?

editar

No puedo comentar, no rep ... del capítulo 3 del enlace que publiqué, dice que los paquetes de recopilación de software deben ejecutarse así:

scl enable rh-php56 'php -v'

Lo que funciona ... sin embargo, ¿cómo hago para que se ejecute para todos los usuarios $ php -vsin comandos adicionales? Necesito los binarios php disponibles a nivel mundial para que los servidores web puedan usarlo y los usuarios ssh con shells normales.

Ozzy
fuente
Olvidó leer el capítulo 3 del enlace que le dio ...
Sven
1
Sven ... Lo leí yo mismo ... y todo lo que tiene es comenzar un sub-shell con la colección disponible. NO detalla cómo hacer que una colección esté disponible POR defecto sin que el usuario necesite ejecutar un sub-shell. Detallaré una solución adecuada a continuación.
Anthony
Sven, eso significaría que cada usuario y cada demonio necesitarían ejecutarse scl enable rh-php56 command, lo cual es complicado. Habilitarlo globalmente a través de la respuesta de @ antofthy es mucho más elegante.
Stefan Lasiewski

Respuestas:

16

La forma de importar una colección de software en su shell actual (no iniciar un sub-shell) es obtener el archivo "enable".

Por ejemplo para rh-php56 en una máquina Redhat 7 ...

fuente / opt / rh / rh-php56 / enable

Ahora puede ejecutar "php" o leer las páginas de manual "man php" de forma normal.

eso agregará las variables de entorno apropiadas al entorno actual de shells. Los usuarios individuales pueden hacer esto en los archivos .bashrc, lo que permite que esté disponible desde SSH (shells no interactivos)

También puede copiar (o enlace simbólico) el archivo de habilitación en /etc/profile.d/ con un sufijo ".sh" para habilitarlo automáticamente para TODOS los usuarios.

Por ejemplo

ln -s / opt / rh / rh-php56 / enable /etc/profile.d/rh-php56.sh

Es útil hacer esto si se necesita algo más que medio ambiente (¿como demonios?). O si hay varias versiones de ese software en un sistema (por compatibilidad con otros programas / servicios), ya que puede haber interacción entre las versiones. Además, es posible que los usuarios no quieran la versión 'más reciente' o se confundan sobre por qué el sistema 'base' (configuraciones de EG: / etc) no afecta la versión de la colección de software.

Anthony Thyssen (un administrador de sistema muy antiguo)

Antonio
fuente
¿Qué instancia de php.ini invoca este método?
Darvanen
1
La lectura del archivo php.ini está codificada en el programa php. En el ejemplo anterior es "/etc/opt/rh/rh-php56/php.ini". Puede verificar esto usando el script PHP <? Php phpinfo ()?> Desde una página web ".php", o usando el comando CLI PHP.
anthony
Ahhh ... estaba reiniciando httpd en lugar del servicio php-fpm. Publicar aquí en caso de que alguien más se quede atrapado de esa manera.
Darvanen
¿Es esto realmente suficiente para habilitar un paquete SCL? access.redhat.com/solutions/527703 parece crear un script bash que hace algo comosource scl_source enable python33
Stefan Lasiewski
Debería ser suficiente Básicamente establece el entorno para usar la versión específica sobre la versión del sistema. Pero solo dentro del sub-shell comenzó.
anthony