Il modo migliore per rendere RHSCL PHP disponibile a livello globale


10

Ho installato RHSCL 2 usando il seguente URL:

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

utilizzando il gestore sottoscrizioni RedHat.

Poi ho corso yum remove php*seguito dayum install rh-php56

Tutto è andato liscio, tranne ora che PHP non si trova da nessuna parte. Ho quindi eseguito find / -name phpe trovato rh-php56nelle seguenti directory:

/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

Qual è il modo migliore per ottenere questi binari /usr/bino qualsiasi altra directory che è generalmente disponibile a livello globale per tutti gli utenti?

Ho perso un passaggio durante l'installazione dei pacchetti, motivo per cui non è disponibile a livello globale? O è proprio quello che succede quando si usano gli RHSCL?

Ho testato i binari in quelle cartelle e funzionano quando corro, php -vquindi funziona bene.

Il mio primo pensiero è quello di cpentrare /bino /usr/binforse c'è un modo ufficiale per fare quello che sto chiedendo?

modificare

Non posso commentare, nessun rappresentante ... dal capitolo 3 del link che ho pubblicato, dice che i pacchetti di raccolta software devono essere eseguiti in questo modo:

scl enable rh-php56 'php -v'

Il che funziona ... comunque come posso farlo funzionare per tutti gli utenti come $ php -vsenza comandi aggiuntivi. Ho bisogno dei binari php disponibili a livello globale in modo che i server web possano usarlo e gli utenti ssh con shell normali.


Hai dimenticato di leggere il capitolo 3 del link che hai fornito ...
Sven

1
Sven ... l'ho letto da solo .. e tutto ciò che ha è iniziare una sotto-shell con la collezione resa disponibile. NON specifica in dettaglio come rendere disponibile una raccolta PER impostazione predefinita senza che l'utente debba eseguire una sotto-shell. Descriverò in dettaglio una soluzione adeguata di seguito.
Anthony

Sven, ciò significherebbe che tutti gli utenti e tutti i demoni dovrebbero eseguire scl enable rh-php56 command, il che è complicato. Abilitarlo a livello globale tramite la risposta di @ antofthy è molto più elegante.
Stefan Lasiewski,

Risposte:


16

Il modo per importare una raccolta di software nella shell corrente (non avviare una shell secondaria) consiste nell'origine del file "abilita".

Ad esempio per rh-php56 su una macchina Redhat 7 ...

source / opt / rh / rh-php56 / enable

Ora puoi eseguire "php" o leggere le manpage "man php" come di consueto.

che aggiungerà le variabili di ambiente appropriate all'ambiente shell corrente. I singoli utenti possono farlo all'interno dei file .bashrc, permettendo che sia disponibile da SSH (shell non interattive)

Puoi anche copiare (o link simbolico) il file di abilitazione in /etc/profile.d/ con un suffisso ".sh" per abilitarlo automaticamente per TUTTI gli utenti.

Per esempio

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

Facendo questo, se è necessario più di un ambiente (come i demoni?). O se più versioni di quel software sono presenti su un sistema (per compatibilità con le versioni precedenti con altri software / servizi), poiché potrebbero esserci interazioni tra le versioni. Inoltre, gli utenti potrebbero non voler la versione "più recente" o confondersi sul motivo per cui il sistema "base" (ad es. Le configurazioni / etc) non influisce sulla versione della raccolta software.

Anthony Thyssen (un vecchio amministratore di sistema)


quale istanza di php.ini invoca questo metodo?
Darvanen,

1
Il file php.ini letto è codificato nel programma php. Nell'esempio sopra è "/etc/opt/rh/rh-php56/php.ini". Puoi verificarlo usando lo script PHP <? Php phpinfo ()?> Da una pagina web ".php" o usando il comando CLI PHP.
Anthony

Ahhh ... Stavo riavviando httpd invece del servizio php-fpm. Pubblicare qui nel caso in cui qualcun altro rimanga bloccato in quel modo.
Darvanen,

Questo è effettivamente sufficiente per abilitare un pacchetto SCL? access.redhat.com/solutions/527703 sembra creare uno script bash che fa qualcosa del generesource scl_source enable python33
Stefan Lasiewski,

Dovrebbe essere sufficiente. Fondamentalmente imposta l'ambiente per utilizzare la versione specifica sulla versione di sistema. Ma solo all'interno della sotto-shell è iniziata.
Anthony
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.