วิธีที่ดีที่สุดในการทำให้ RHSCL PHP ใช้งานได้ทั่วโลก


10

ฉันติดตั้ง RHSCL 2 โดยใช้ url ต่อไปนี้:

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

ใช้ตัวจัดการการสมัครสมาชิก 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 ที่มีอยู่ทั่วโลกเพื่อให้ webservers สามารถใช้มันและผู้ใช้ ssh ที่มีเชลล์ปกติ


คุณลืมอ่านบทที่ 3 ของลิงค์ที่คุณให้ ....
สเวน

1
สเวน ... ฉันอ่านด้วยตัวเอง .. และทั้งหมดนั้นเริ่มต้นเชลล์ย่อยด้วยชุดสะสมที่มีให้ ไม่มีรายละเอียดเกี่ยวกับวิธีการทำให้คอลเลกชันพร้อมใช้งานตามค่าเริ่มต้นโดยที่ผู้ใช้ไม่จำเป็นต้องเรียกใช้เชลล์ย่อย ฉันจะให้รายละเอียดโซลูชันที่เหมาะสมด้านล่าง
แอนโธนี

Sven นั่นหมายความว่าผู้ใช้ทุกคนและทุก daemon จะต้องเรียกใช้scl enable rh-php56 commandซึ่งมีความซับซ้อน การเปิดใช้งานทั่วโลกผ่านทางคำตอบของ @ antofthy นั้นงดงามยิ่งกว่ามาก
Stefan Lasiewski

คำตอบ:


16

วิธีนำเข้าคอลเลกชันซอฟต์แวร์ลงในเชลล์ปัจจุบันของคุณ (ไม่เรียกใช้เชลล์ย่อย) คือการระบุไฟล์ "enable"

ตัวอย่างเช่น rh-php56 บนเครื่อง Redhat 7 ...

แหล่งที่มา / opt / rh / rh-php56 / เปิดใช้งาน

ตอนนี้คุณสามารถเรียกใช้ "php" หรืออ่าน manpages "man php" ตามปกติ

ที่จะเพิ่มตัวแปรสภาพแวดล้อมที่เหมาะสมให้กับสภาพแวดล้อมเชลล์ปัจจุบัน ผู้ใช้แต่ละคนสามารถทำสิ่งนี้ได้ในไฟล์. bashrc ทำให้สามารถใช้งานได้จาก SSH (เชลล์แบบไม่มีการโต้ตอบ)

นอกจากนี้คุณยังสามารถคัดลอก (หรือ symlink) ไฟล์เปิดใช้งานลงใน /etc/profile.d/ ด้วยคำต่อท้าย ".sh" เพื่อเปิดใช้งานโดยอัตโนมัติสำหรับผู้ใช้ทั้งหมด

ตัวอย่างเช่น

ln -s / opt / rh / rh-php56 / เปิดใช้งาน /etc/profile.d/rh-php56.sh

ทำสิ่งนี้หากต้องการมากกว่าสภาพแวดล้อม (เช่น daemons?) หรือหากมีซอฟต์แวร์หลายเวอร์ชันแสดงอยู่บนระบบ (สำหรับความเข้ากันได้ย้อนหลังกับซอฟต์แวร์ / บริการอื่น) เนื่องจากอาจมีการโต้ตอบระหว่างเวอร์ชัน ผู้ใช้อาจไม่ต้องการรุ่น 'ล่าสุด' หรือสับสนว่าทำไมระบบ 'ฐาน' (EG: / etc configs) จึงไม่ส่งผลต่อรุ่นของคอลเลกชันซอฟต์แวร์

Anthony Thyssen (ผู้ดูแลระบบที่เก่าแก่มาก)


อินสแตนซ์ของ php.ini ใดที่ใช้วิธีการนี้
Darvanen

1
ไฟล์ php.ini ที่อ่านจะถูกเขียนลงในโปรแกรม php อย่างหนัก ในตัวอย่างข้างต้นเป็น "/etc/opt/rh/rh-php56/php.ini" คุณสามารถตรวจสอบได้โดยใช้สคริปต์ PHP <? php phpinfo ()?> จากหน้าเว็บ ".php" หรือใช้คำสั่ง CLI PHP
anthony

อ่า ... ฉันเริ่มต้น httpd ใหม่แทนบริการ php-fpm การโพสต์ที่นี่ในกรณีที่คนอื่นติดขัด
Darvanen

จริง ๆ แล้วเพียงพอสำหรับเปิดใช้งานแพคเกจ SCL หรือไม่ access.redhat.com/solutions/527703ดูเหมือนว่าจะสร้างสคริปต์ทุบตีซึ่งทำสิ่งที่ต้องการsource scl_source enable python33
Stefan Lasiewski

ควรจะเพียงพอ โดยทั่วไปจะเป็นการตั้งค่าสภาพแวดล้อมให้ใช้เวอร์ชันเฉพาะเหนือเวอร์ชันระบบ แต่เริ่มจากภายในเชลล์ย่อยเท่านั้น
anthony
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.