รอบต่อนาทีไม่มีราก


คำตอบ:


2

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


1
สิ่งนี้ไม่ถูกต้องจริง ๆ แล้วคุณไม่สามารถเรียกใช้rpmคำสั่งโดยไม่ได้รับการเข้าถึง sudo

8

มีคำตอบมากมายที่บอกถึงแพ็คเกจที่เปลี่ยนตำแหน่งได้ ตัวเลือกการย้ายใหม่ใช้สำหรับผู้ดูแลระบบในการเลือกปลายทาง (ทำให้ปลายทางเป็น / opt แทน / usr / local เป็นต้น) และไม่ได้รับอนุญาตจากผู้ใช้

ในขณะที่อาจเป็นไปได้ที่จะแก้ไขปัญหาการอนุญาตโดยใช้วิธีนี้ปัญหา MAJOR คือเมื่อคุณทำการดำเนินการ rpm มันกำลังแก้ไขฐานข้อมูล /var/lib/rpm/__db.* ที่เป็นเจ้าของ root: root ดังนั้นอย่างที่ JPerkSter พูดว่า "คำตอบสั้น ๆ = ไม่" การตั้งค่า sudo เพื่อให้ความต้องการที่เฉพาะเจาะจงน่าจะเป็นทางออกที่ดีที่สุด


8

พิจารณาทั้งหมดข้างต้นเกี่ยวกับ relocatable สร้างคุณอาจจะลองทำตามคำแนะนำที่ระบุไว้ที่นี่

rpm --initdb --root /home/username/local --dbpath /home/username/local/lib/rpm
rpm --root /home/username/local --dbpath /home/username/local/lib/rpm \
 --relocate /usr=/home/username/local --nodeps -ivh package.rpm

3

ข้อมูลจำเพาะ RPM มีตัวเลือกที่เรียกว่า 'relocatable' หากรอบต่อนาทีถูกสร้างขึ้นพร้อม relocatability เปิดอยู่นั้นสามารถติดตั้งได้ในไดเรกทอรีที่ผู้ใช้ระบุโดยใช้ตัวเลือก '--prefix' ดังนั้นจึงสามารถติดตั้งรอบต่อนาทีในเครื่องโดยไม่ต้องใช้ superuser ตราบใดที่ตรงตามเงื่อนไขสองข้อ:

  1. แพคเกจเดิมถูกสร้างขึ้นเพื่อให้สามารถย้ายได้
  2. ไบนารี 'rpm' ไม่ได้พยายามที่จะเพิ่มแพ็คเกจไปยังแคตตาล็อกระบบทั่วโลก

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


3

บางแพ็กเกจสามารถย้ายตำแหน่งได้ดังนั้นจึงอาจทำงานได้ดีโดยไม่มีรูทเพียงระบุคำนำหน้าเมื่อติดตั้ง: rpm -i my.rpm --prefix = / my / home / folder

หากแพ็กเกจไม่สามารถย้ายตำแหน่งได้คุณยังสามารถแตกไฟล์จาก RPM และลองเรียกใช้ คุณสามารถแตกไฟล์ RPM โดยใช้ตัวอย่าง:

คัดลอกไฟล์ลงใน ~ / โฟลเดอร์ของคุณเพิ่มไลบรารีการพึ่งพาเพิ่มเติมใด ๆ และหวังว่าจะดีที่สุด ไม่รับประกัน แต่คุณอาจได้รับแพ็คเกจที่ไม่สามารถเปลี่ยนตำแหน่งได้ซึ่งทำงานในลักษณะนี้


2

คุณสามารถบังคับให้ติดตั้งภายใต้ไดเรกทอรีอื่นโดยใช้ dbpath ที่แตกต่างกัน นอกจากนี้คุณไม่ควรเรียกใช้สคริปต์ใด ๆ โดยตรงโดยไม่ตรวจสอบสคริปต์

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

rpm --install --badreloc --relocate /=`pwd` -dbpath `pwd`/rpm_db --nodeps --noscripts package.rpm

rpm --query --scripts -p package.rpm > scripts.txt

2

ใช่ แต่คุณอาจไม่ต้องการ ฉันใช้หุ่นกระบอกแบบกำหนดเองและแพ็กเกจ rpm เพื่อดูแลซอฟต์แวร์ในกลุ่มการคำนวณที่ฉันไม่สามารถเข้าถึงรูตได้ ในทางทฤษฎีมันง่ายเหมือน

rpm --inittb --root /foo 
rpm --dbpath /foo -i bar.rpm

อย่างไรก็ตามมีพฤติกรรมแปลก ๆ ในการทำงานของ EL4, EL5 และ EL6 ดังนั้นคุณจะต้องมีขั้นตอนและตัวเลือกที่แตกต่างกันสำหรับแต่ละคน ฉันไม่มีข้อมูลนั้นมีประโยชน์อีกต่อไป นิสัยใจคอเหล่านั้นรวมถึงปัญหาฐานข้อมูล RPM บ่อยครั้ง (อาจเป็นเพราะ NFS) ทำให้ฉันเสียใจที่ใช้ rpm


1

คุณสามารถสร้าง RPM ได้โดยไม่ต้องเข้าถึงรูทเพียงแค่ทำในไดเรกทอรีหลักของคุณ เท่าที่ติดตั้ง RPM ฉันจะบอกว่าคำตอบสั้น ๆ = ไม่


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