ฉันกำลังพยายามคอมไพล์ php เวอร์ชันที่ต่ำกว่า (5.2) เนื่องจาก gentoo กำลังเลือก 5.3 และฉันมีปัญหาในการเขียนโค้ดกับเวอร์ชันใหม่

นาโน /etc/portage/package.use

=dev-lang/php-5.2.14 ~amd64

เมื่อฉันโผล่ออกมา -av php

ยังคงเลือกเวอร์ชัน 5.3 ซึ่งเป็นค่าเริ่มต้น

ฉันจะบังคับให้โผล่มาเพื่อเลือกเวอร์ชันที่ฉันต้องการได้อย่างไร

ls /usr/portage/dev-lang/php/ ChangeLog php-5.2.14.ebuild php-5.3.4.ebuild Manifest php-5.2.16.ebuild php-5.3.5.ebuild ไฟล์/ php-5.2.17 ebuild metadata.xml php-5.3.3-r1.ebuild

answer

คุณควรหาแพ็คเกจ ebuild เก่า ซึ่งควรอยู่ในไดเร็กทอรี portage

จากนั้น ถ้าฉันจำไม่ผิด คำสั่งที่จะรันคือ "ebuild old-package.ebuild" และจะคอมไพล์มัน

ไม่โผล่ออกมาแจ้งเตือนข้อผิดพลาดทันที? ข้อกำหนดของคำหลักควรอยู่ใน /etc/portage/package.keywords

@ความคิดเห็น:

emerge -av =php-5.2.17

หากมีคีย์เวิร์ดใดอยู่ในนั้นแล้ว:

echo "=dev-lang/php-5.2.17 ~amd64" >> /etc/portage/package.keywords

อย่างแรก php 5.2.17 มีอยู่แล้วamd64ในคีย์เวิร์ด ดังนั้น~amd64จะไม่ทำอะไรเลย

อย่างที่สอง แทบจะไม่เคยเป็นความคิดที่ดีเลยที่จะลองผสม~amd64และamd64นั่นคือเหตุผลที่คุณตั้งค่าACCEPT_KEYWORDS=~amd64(หรือamd64) ใน/etc/make.conf. เป็นตัวแปรต่อโฮสต์

ประการที่สาม คุณควรใช้/etc/portage/package.maskดังนี้:

>dev-lang/php-5.2.17

ซึ่งจะป้องกันไม่ให้ ebuild ทั้งหมดที่มีเวอร์ชันที่มากกว่า 5.2.17 ถูกปิดบัง

emerge -upv --deep --newuse phpแล้ววิ่ง

เวอร์ชัน PHP ถูกใส่ไว้ใน Gentoo ดังนั้นคุณจึงสามารถมีเวอร์ชันใดเวอร์ชันหนึ่งหรือทั้งสองเวอร์ชันพร้อมกันบนระบบได้อย่างง่ายดาย และสลับไปมาระหว่างเวอร์ชันเหล่านี้ด้วย eselect มีคู่มือฉบับสมบูรณ์บนโฮมเพจของ Gentoo เกี่ยวกับวิธีการโยกย้ายไปยังเวอร์ชัน PHP แบบ slotted อย่างถูกต้อง