Meilleure façon de rendre RHSCL PHP disponible dans le monde

10

J'ai installé RHSCL 2 en utilisant l'url suivante:

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

en utilisant le gestionnaire d'abonnement RedHat.

J'ai ensuite couru yum remove php*suivi deyum install rh-php56

Tout s'est bien passé sauf que maintenant PHP ne se trouve nulle part. J'ai ensuite couru find / -name phpet trouvé rh-php56dans les répertoires suivants:

/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

Quelle est la meilleure façon d'obtenir ces fichiers binaires dans /usr/binou tout autre répertoire généralement disponible à l'échelle mondiale pour tous les utilisateurs?

Ai-je raté une étape lors de l'installation des packages, c'est pourquoi il n'est pas disponible dans le monde? Ou est-ce exactement ce qui se passe lors de l'utilisation des RHSCL?

J'ai testé les fichiers binaires dans ces dossiers et ils fonctionnent lorsque je lance php -vdonc cela fonctionne bien.

Ma première pensée est de juste cpentrer dans /binou /usr/binmais peut-être y a-t-il une manière officielle de faire ce que je demande?

Éditer

Je ne peux pas commenter, pas de représentant ... du chapitre 3 du lien que j'ai publié, il est dit que les packages de collecte de logiciels doivent être exécutés comme suit:

scl enable rh-php56 'php -v'

Ce qui fonctionne ... mais comment puis-je le faire fonctionner pour tous les utilisateurs comme $ php -vsans commandes supplémentaires. J'ai besoin des binaires php disponibles dans le monde entier pour que les serveurs web puissent l'utiliser et les utilisateurs ssh avec des shells normaux.

Ozzy
la source
Vous avez oublié de lire le chapitre 3 du lien que vous avez donné ....
Sven
1
Sven ... Je l'ai lu moi-même .. et tout ce qu'il y a c'est de commencer un sous-shell avec la collection mise à disposition. Il ne détaille PAS comment rendre une collection disponible PAR défaut sans que l'utilisateur ait besoin d'exécuter un sous-shell. Je vais détailler une solution appropriée ci-dessous.
anthony
Sven, cela signifierait que chaque utilisateur et chaque démon devrait s'exécuter scl enable rh-php56 command, ce qui est compliqué. L'activer globalement via la réponse de @ antofthy est beaucoup plus élégant.
Stefan Lasiewski

Réponses:

16

La façon d'importer une collection de logiciels dans votre shell actuel (et non de lancer un sous-shell) est de source le fichier "enable".

Par exemple pour rh-php56 sur une machine Redhat 7 ...

source / opt / rh / rh-php56 / activer

Vous pouvez maintenant exécuter "php" ou lire les pages de manuel "man php" normalement.

qui ajoutera les variables d'environnement appropriées à l'environnement shell actuel. Les utilisateurs individuels peuvent le faire dans leurs fichiers .bashrc, ce qui leur permet d'être disponible à partir de SSH (shells non interactifs)

Vous pouvez également copier (ou créer un lien symbolique) le fichier d'activation dans /etc/profile.d/ avec un suffixe ".sh" pour l'activer automatiquement pour TOUS les utilisateurs.

Par exemple

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

Faire attention à cela si plus que l'environnement est nécessaire (comme les démons?). Ou si plusieurs versions de ce logiciel sont présentes sur un système (pour une compatibilité descendante avec d'autres logiciels / services), car il peut y avoir une interaction entre les versions. De plus, les utilisateurs peuvent ne pas vouloir la «dernière» version ou ne pas comprendre pourquoi le système «de base» (EG: / etc configs) n'affecte pas la version de la collection de logiciels.

Anthony Thyssen (un très ancien administrateur système)

anthony
la source
quelle instance de php.ini cette méthode appelle-t-elle?
Darvanen
1
Le fichier php.ini lu est codé en dur dans le programme php. Dans l'exemple ci-dessus, il s'agit de "/etc/opt/rh/rh-php56/php.ini". Vous pouvez le vérifier à l'aide du script PHP <? Php phpinfo ()?> À partir d'une page Web ".php" ou à l'aide de la commande CLI PHP.
anthony
Ahhh ... Je redémarrais httpd au lieu du service php-fpm. Publier ici au cas où quelqu'un d'autre se retrouverait bloqué de cette façon.
Darvanen
Est-ce réellement suffisant pour activer un package SCL? access.redhat.com/solutions/527703 semble créer un script bash qui fait quelque chose commesource scl_source enable python33
Stefan Lasiewski
Devrait être suffisant. Il définit essentiellement l'environnement pour utiliser la version spécifique sur la version du système. Mais seulement dans le sous-shell a commencé.
anthony