ยำติดตั้งในบ้านของผู้ใช้สำหรับผู้ดูแลระบบที่ไม่ใช่


51

ฉันเป็นผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบบนคอมพิวเตอร์ขนาดใหญ่ ฉันต้องการแพ็คเกจล่าสุดที่ไม่ได้ติดตั้งไว้ในระบบ ฉันต้องการใช้ yum เพื่อติดตั้ง ในฐานะผู้ใช้ที่ไม่มี sudo, admin หรือ root access ฉันสามารถใช้การจัดการแพ็คเกจเพื่อติดตั้งแพ็คเกจในโฮมไดเร็กตอรี่ของฉันได้หรือไม่? ฉันสามารถใช้ผลิตจากแหล่งต่าง ๆ ได้เสมอ แต่การใช้ยำจะทำให้ชีวิตง่ายขึ้น


1
ไม่เว้นแต่ว่า yum binary จะเป็น suid root (โอกาสที่จะผอม)
h3rrmiller

1
@ h3rrmiller แต่มีตัวจัดการแพกเกจใด ๆ ที่สามารถติดตั้งโปรแกรมใน $ HOME และด้วยเหตุนี้จึงไม่จำเป็นต้องเข้าถึง sudo? ฉันรู้ว่า MacPorts บน OSX สามารถทำได้ ตัวเลือกดังกล่าวสำหรับ Linux มีอะไรบ้าง
สูง

คำตอบ:


8

/ไบนารีส่วนใหญ่จะถูกรวบรวมเพื่อติดตั้งลงในบางสถานที่ภายใต้

มีผู้จัดการแพคเกจที่ไม่ใช่รากเหมือนGentoo คำนำหน้าและราก GoboLinuxและอาจ0install

อย่างที่คุณบอกว่าการรวบรวมตัวเองจะช่วยบรรเทาปัญหานั้นหรือใช้ chroot อย่างไรก็ตามอุปสรรค์ที่ใหญ่ที่สุดของคุณที่มีการ chrooting จะเป็นข้อกำหนดเบื้องต้นและการเชื่อมโยงไปยังวัตถุที่ใช้ร่วมกันเคอร์เนล


10
Chroot ไม่ใช่ตัวเลือกที่นี่ คุณจำเป็นต้องรูทถึง chroot
Marco

38

แทนที่จะใช้yumหา rpms ที่คุณต้องการและดาวน์โหลด คุณยังไม่สามารถติดตั้งได้โดยตรงโดยไม่ต้องรูท แต่แพ็กเกจ RPM เป็นไฟล์แฟนซี. cpio ที่จริงและคุณสามารถแกะเนื้อหาออกได้ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือผ่านmcเบราว์เซอร์ไฟล์ ("เที่ยงคืนผู้บัญชาการ") (หนึ่งในซอฟต์แวร์ที่ยิ่งใหญ่ที่สุดเท่าที่เคยมีมา) ซึ่งช่วยให้คุณสามารถเรียกดูเนื้อหาของ.rpmและคัดลอกไฟล์ได้โดยตรง

Sans ที่คุณสามารถใช้rpm2cpioเพื่อแปลงเป็น. cpio จากนั้นcpioแยกไฟล์ภายในและวางไว้ในตำแหน่งที่ถูกต้อง ทั้งสองนี้จะถูกติดตั้งบนระบบ redhat หรือ fedora นี่คือตัวอย่างการติดตั้ง "xsnow" (คุณอาจต้องการทำสิ่งนี้ในไดเรกทอรีว่าง):

»rpm2cpio xsnow-1.42-17.fc17.x86_64.rpm > xsnow.cpio

แจ้งให้ทราบล่วงหน้าฉันพบ. rpm ที่เหมาะสมกับระบบของฉัน, fc17 x86_64 สิ่งนี้มีความสำคัญเนื่องจากสิ่งเหล่านี้เป็นไบนารีล่วงหน้าที่เชื่อมโยงกับส่วนประกอบอื่น ๆ ตอนนี้แยก. cpio:

»cpio -idv < xsnow.cpio 
./usr/bin/xsnow
./usr/share/doc/xsnow-1.42
./usr/share/doc/xsnow-1.42/README
./usr/share/man/man6/xsnow.6.gz
212 blocks
Press any key to continue...

ถ้าฉันเรียกดูไดเรกทอรีต้นไม้นี้ทุกอย่างที่ฉันต้องการอยู่ที่นั่นยกเว้นเมตาดาต้าบางตัวที่อาจช่วยฉันแก้ไขการอ้างอิง สามารถพบได้โดยใช้rpm -q -p [package] --[query]:

»rpm -q -p xsnow-1.42-17.fc17.x86_64.rpm --requires
warning: xsnow-1.42-17.fc17.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID d2382b83: NOKEY
libX11.so.6()(64bit)  
libXext.so.6()(64bit)  
libXpm.so.4()(64bit)  
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)  
rpmlib(PayloadIsXz) <= 5.2-1

ค่อนข้างแน่ใจว่าฉันมีทุกสิ่งนี้แล้ว ดังนั้นตอนนี้สิ่งที่ฉันต้องทำก็คือใส่ xsnow ที่สามารถเรียกใช้งานได้ใน $ PATH ของฉันซึ่งมีถังขยะอยู่ในโฮมไดเร็กตอรี่ของฉัน:

»cp ./usr/bin/xsnow ~/bin

Viola! ตอนนี้ฉันสามารถพิมพ์xsnowและดูอะไรได้เนื่องจากเมื่อมันปรากฏว่า xsnow เล่นได้ไม่ดีกับ KDE :( แต่หวังว่า jist ของกระบวนการจะชัดเจนฉันไม่ต้องทำอะไรนอกไดเรกทอรีบ้านของฉัน

หากคุณต้องการติดตั้งไลบรารี่คุณจะต้องสร้างไดเร็กตอรี่ที่บ้านสำหรับพวกมันด้วยและเพิ่มไปที่~/.bashrc:

export LD_LIBRARY_PATH=/home/you/lib

@siamii เอาล่ะคุณมีคำตอบที่ดีกว่านี้ไหม?
Marcin

5
ตกลงดังนั้นวิธีที่บางคนสร้างเครื่องมือเพื่อสร้างไฟล์ cpio แล้วคัดลอกทุกสิ่งไปยังโฟลเดอร์ที่ไม่ใช่รูทเช่น. / usr / bin ไปที่ $ PREFIX / usr / bin ฯลฯ และตรวจสอบซ้ำ ๆ และติดตั้งการอ้างอิง
สูง

2
สองปีครึ่งขอขอบคุณสำหรับคำตอบที่เป็นประโยชน์ คุณสามารถทำได้ในหนึ่งบรรทัดด้วย: mkdir xsnow; cd xsnow; wget -O - 195.220.108.108/linux/rpmfusion/nonfree/fedora/releases/17/… | rpm2cpio - | cpio -idv
Larry Engholm

1
ฉันใช้สิ่งนี้มานานกว่า 2 ปีในคอมพิวเตอร์สำนักงานของฉันและใช้งานได้อย่างมีเสน่ห์ทุกครั้ง ฉันต้องการแสดงความขอบคุณอย่างจริงใจต่อคุณ ฉันหวังว่ามหาวิทยาลัยของฉันจะมีความสามารถ

ทุกครั้งที่ฉันทำสิ่งนี้ฉันพบว่าไม่สามารถเชื่อมโยงกับ '... ': การอนุญาตถูกปฏิเสธหรือ cpio: .... : ไม่สามารถเปิดได้: การอนุญาตถูกปฏิเสธมีวิธีแก้ไขไหม? โปรดทราบว่าฉันสร้างไฟล์เหล่านี้โดยไม่ใช้ sudo แต่ด้วยเหตุผลบางอย่างฉันจำเป็นต้องใช้ sudo เพื่อถอนการติดตั้ง
Phylliida
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.