ติดตั้งไฟล์การพัฒนาแบบโลคัลเพื่อสร้างบนระบบโดยไม่มีการเข้าถึงรูท?


11

มีเซิร์ฟเวอร์ที่ฉันทำงานอยู่ใช้งาน Linux เวอร์ชันที่เก่ากว่า ฉันไม่สามารถเข้าถึงระบบรูทได้ดังนั้นฉันจึงต้องการสร้างเครื่องมือเวอร์ชันที่ใหม่กว่าที่ฉันใช้บ่อยๆ (Vim 7.3) ฉันคิดว่าฉันจะสร้างและติดตั้งใน ~ / bin อย่างไรก็ตามมันต้องใช้ไฟล์การพัฒนาที่ไม่ได้ติดตั้งทั้งระบบ ฉันพบ ncurses-devel rpm และแตกโฟลเดอร์ 'lib' และ 'include' ฉันจะใส่ไว้ที่ไหนและฉันจะบอกสคริปต์. / config เพื่อค้นหาไฟล์เหล่านั้นได้อย่างไรเพื่อที่ฉันจะสามารถกำหนดค่าและสร้างแพ็คเกจได้อย่างถูกต้อง

แก้ไข: ฉันสิ้นสุดการทำงานนี้โดยการติดตั้งระบบปฏิบัติการที่เหมือนกันใน Virtualbox และสร้างแพคเกจที่นั่นและคัดลอกเหนือไบนารี


serverfault.com/questions/23734อาจคล้ายกันมากพอที่จะช่วยเหลือ คำตอบส่วนใหญ่เกี่ยวข้องกับการติดตั้งสิ่งที่มีประสิทธิภาพทั้งระบบภายในบ้านของคุณ แต่สามารถแก้ไขได้ใน Gentoo Prefix และ Rootless Gobo
ephemient

คำตอบ:


14

ฉันทำสิ่งนี้บ่อยครั้งในงานสุดท้ายของฉัน - วิธีแก้ปัญหาที่ดูเหมือนจะดีที่สุดคือการสร้างไดเรกทอรี ~ / usr และใช้อาร์กิวเมนต์ --prefix เพื่อชี้ไปที่สคริปต์. / config ในทิศทางที่ถูกต้อง นี่คือขั้นตอน:

  • สร้างไดเรกทอรี ~ / usr และรวมไดเรกทอรี lib และ bin ที่อยู่ด้านล่าง
  • ใน. profile, .bashrc หรือสคริปต์ init shell อื่น ๆ ของคุณให้เพิ่มสิ่งต่อไปนี้ (หรือเทียบเท่าในภาษาถิ่นของเชลล์):
    export PATH=$PATH:~/usr/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/usr/lib
    export C_INCLUDE_PATH=$C_INCLUDE_PATH:~/usr/include
    export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:~/usr/include
  • เมื่อสร้างแพ็คเกจให้ใช้ ./configure --prefix=/home/<username>/usr

ข้อตกลงนี้ใช้ได้กับฉันในสถานการณ์ส่วนใหญ่ที่ฉันต้องการสร้างสิ่งต่าง ๆ ใน userspace ส่วนที่ยากที่สุดคือการค้นหาและสร้างการพึ่งพาทั้งหมดที่คุณต้องการ แต่นั่นก็คือการใช้ฟังก์ชั่น 'get source' ของ googling หรือการพิจารณาอย่างรอบคอบ


ไม่ค่อยได้ผลสำหรับฉัน ดูเหมือนว่าสคริปต์การกำหนดค่าจะไม่พบสิ่งใดใน ~ / usr
postfuturist

ฉันมีปัญหาเดียวกันกับ @postfuturist ฉันสิ้นสุดการแก้ไขโดยใช้${HOME}แทน~การโทรออกของฉันทั้งหมดและจากนั้น pkg-config ก็มีความสุขและสามารถค้นหาไลบรารีและแพ็คเกจที่ผู้ใช้ติดตั้ง
phyatt

3

โดยปกติคุณควรจะสามารถกำหนดค่าและเปลี่ยนรหัสใหม่เพื่อกำหนดตำแหน่งใหม่ในโฮมไดเร็กตอรี่ของคุณหรือเส้นทางอื่น ๆ สำหรับไลบรารีและโปรแกรมทั้งหมด ...

แต่ IMHO วิธีที่ง่ายที่สุด (ถ้าคุณมีพื้นที่เหลือเฟือ) คือใช้ chroot ในไดเรกทอรีย่อยที่ติดตั้งลินุกซ์ distro ทั้งหมดไว้ในนั้น ในฐานะผู้ใช้ปกติคุณไม่สามารถใช้chrootได้ แต่คุณสามารถใช้เครื่องมือที่ยอดเยี่ยมเหล่านี้: fakechrootและfakeroot

เพื่อสร้างระบบไฟล์ chroot ฉันชอบที่จะปรับใช้ไดเรกทอรีที่มี Debian (หรือ Debian derivate เช่น ubuntu) โดยใช้ยูทิลิตี้debootstrap

ดังนั้นขั้นตอนเป็นเรื่องง่าย (ฉันจะไม่ใส่รายละเอียดทางเทคนิคอ่านคู่มือคำสั่ง):

  • รับและติดตั้ง: เครื่องมือ fakeroot, fakechroot และ debootstrap
  • สร้างไดเรกทอรีย่อยโดยใช้ debootstrap (ฉันสามารถเรียกใช้งานได้ในฐานะ root เท่านั้นคุณสามารถทำได้ในคอมพิวเตอร์เครื่องอื่นและคัดลอกไบนารีหากจำเป็น)
  • ดำเนินการ: fakechroot fakeroot chroot mydebian-dir

หากคุณต้องการรายละเอียดเพิ่มเติมฉันคิดว่าฉันมีสคริปต์อยู่ที่อื่นเพื่อทำสิ่งนี้


2

วิธีแก้ปัญหาอื่นสำหรับปัญหานี้คือการใช้คำนำหน้า Gentoo เนื่องจากผู้ใช้ MacOSX และแพลตฟอร์มอื่น ๆ (โซลาริส, AIX) ทำ:

http://www.gentoo.org/proj/en/gentoo-alt/prefix/

มันจะรวบรวมกอง Gentoo (พร้อมพอร์ต) ในตำแหน่ง $ PREFIX ใช้แพ็คเกจ Gentoo ซึ่งแพ็คเกจส่วนใหญ่รองรับการใช้งานการตั้งค่าเหล่านี้

พอร์เทจจะติดตามการอ้างอิงทั้งหมดคุณจะมีซอฟต์แวร์เวอร์ชันล่าสุดซึ่งได้รับการทดสอบโดยชุมชน ...


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