ฉันจะติดตั้งแพ็กเกจที่ไม่มีการเข้าถึงรูทได้อย่างไร?


126

ฉันไม่มีสิทธิ์เข้าถึงรูทบนเครื่องนี้

ฉันอยากจะรู้ว่ามีวิธีที่ฉันสามารถดาวน์โหลดแพ็คเกจ Ubuntu และติดตั้งพวกเขาเป็นที่ไม่ใช่ราก?

อาจจะอยู่ในของฉัน~/binหรือ~/usr/shareหรือสิ่งที่ต้องการนั้น มันจะใช้ได้ไหม


1
หวังว่าพวกเขาจะสนับสนุนในไม่ช้า
Domi

4
คุณสามารถใช้แอพพกพาสำหรับ linux: ไม่ต้องติดตั้ง, ไม่จำเป็นต้องรูท ค้นหาได้ที่appimage.org แม้แต่ Linus Torvalds ก็ชอบ มันแปลกมากเพราะไลนัสไม่ชอบอะไรเลย
ipse lute

ฉันขอแนะนำให้ลองปลอมตัวรูท
Robert Pollak

การรวมกันของdpk -xและmvทำงานให้ฉัน หรือถ้ายังdpkไม่พร้อมใช้งานarและการวางท่อ / การใช้tarงานร่วมกับฉันในระบบที่ จำกัด มาก ๆ ให้ดูที่นี่
iolsmit

คำตอบ:


107

Apt ไม่สนับสนุนโดยตรง แต่มีหลายวิธีที่จะทำ

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

วิธีที่สองที่ฉันรู้คือติดตั้งจากแพ็คเกจ. deb คุณสามารถดาวน์โหลดได้จากเว็บไซต์หรือถ้าอยู่ในที่เก็บของ Ubuntu คุณสามารถดาวน์โหลดได้

apt-get download package

แทนที่packageด้วยชื่อของแพ็กเกจ

เมื่อคุณมีการเรียกไฟล์ deb dpkgโดยตรงจากบรรทัดคำสั่ง ตัวอย่างต่อไปนี้จะติดตั้ง package.deb ลงในโฮมไดเร็กตอรี่ของคุณ

dpkg -i package.deb --force-not-root --root=$HOME 

ข้อเสียของการใช้ dpkg เช่นนี้คือข้อความแสดงข้อผิดพลาดน่าจะเป็นความลับ dpkg ไม่ได้แก้ไขการขึ้นต่อกันโดยอัตโนมัติหรือสร้างโครงสร้างไดเรกทอรีที่คาดไว้

ในที่สุดคุณสามารถใช้apt-get sourceคำสั่งเพื่อดึงแหล่งที่มาของแพคเกจและกำหนดค่าให้ติดตั้งในเครื่อง โดยปกติจะมีลักษณะดังนี้:

apt-get source package
cd package
./configure --prefix=$HOME
make
make install

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

แก้ไข:

ในฐานะที่dpkg -iไม่ทำงาน (ดูความเห็น) ผมขอแนะนำทางเลือกนี้:

dpkg -x package.deb dir

สิ่งนี้จะแยกแพคเกจ. deb ไปยัง dir จากนั้นคุณสามารถส่งออก PATH โดยที่ไบนารีอยู่ ตราบใดที่มีการติดตั้งการพึ่งพาทั้งหมดของไบนารีมันควรจะทำงานตามปกติ


1
หากคุณมีสิทธิ์เข้าถึงรูท แต่ไม่ต้องการติดตั้งแพ็กเกจบางแพ็กเกจทั่วโลกคุณสามารถใช้sudo apt-get build-dep packageเพื่อติดตั้งทุกสิ่งที่จำเป็นในการสร้างแพ็คเกจ (หลังจากรับแพ็กเกจด้วยapt-get source)
Vladimir Panteleev

19
คำตอบนี้ถูกเขียนย้อนกลับไปในปี 2010 มีการเปลี่ยนแปลงใด ๆ เกี่ยวกับวิธีการทำสิ่งนี้ตั้งแต่นั้นมา?
becko

36
แม้ด้วย --force-not-root ฉันได้รับ "dpkg: ข้อผิดพลาด: การดำเนินการที่ร้องขอต้องใช้สิทธิ์ superuser"
Clément

10
คน--force-not-root --root=$HOMEหรือรูปแบบของมันจะไม่ทำงาน แพ็คเกจไบนารีเดเบียนไม่ได้รับการออกแบบให้ติดตั้งในโฮมไดเรกทอรี, ช่วงเวลา หรือเพื่อใช้วิธีนี้อีกครั้ง ตัวอย่างต่อไปนี้จะติดตั้ง package.deb ลงในโฮมไดเร็กตอรี่ของคุณ ". ไม่มันจะไม่
Faheem Mitha

1
น่าเศร้าที่นี่ไม่ได้ผล ฉันลอง--force-not-root --root=/your/custom/path
เวีย

16

ผมถือว่าคุณต้องการติดตั้งjedit ก่อนอื่นคุณต้องค้นหาแพ็คเกจและดาวน์โหลด ฉันเพิ่งใช้ไฟล์ deb จากมิเรอร์และเปิดคอนโซล / เทอร์มินัล:

  1. mkdir /tmp/jedit && cd /tmp/jedit- สร้างไดเร็คทอรี่ใหม่tmpและเปลี่ยนแปลงมัน
  2. wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb - ดาวน์โหลดแพ็คเกจ
  3. ar x jedit_4.3.1.dfsg-0ubuntu1_all.debหรือง่ายต่อการพิมพ์ar x *.deb- ซึ่งจะแยกเนื้อหาไฟล์
  4. tar xvzf data.tar.gz- ไฟล์data.tar.gzมีทุกสิ่งที่คุณต้องการสำหรับการใช้งานซอฟต์แวร์
  5. usr/bin/jedit เปิดตัวแก้ไข
  6. เสร็จแล้ว :-)

คุณสามารถย้ายไฟล์ไปยังบางจุดในโฮมไดเร็กตอรี่ของคุณและเรียกใช้ไฟล์จากที่นั่น


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

คุณยังสามารถดาวน์โหลดแพคเกจโดยไม่ต้องค้นหามันเพียงแค่ทำ apt-get ดาวน์โหลด (ดูคำตอบอื่น ๆ )
lib

ฉันเชื่อว่าลิงก์ของคุณเสีย
Winnemucca

9

ฉันเขียนโปรแกรมที่เรียกว่าJuJuซึ่งโดยทั่วไปแล้วอนุญาตให้มีการแจกจ่ายลินุกซ์ขนาดเล็กมาก ๆ (มีเพียงผู้จัดการแพ็คเกจ) ในไดเรกทอรี $ HOME / .juju ของคุณ

อนุญาตให้มีระบบที่กำหนดเองของคุณภายในโฮมไดเร็กตอรี่เข้าถึงได้ผ่าน proot และดังนั้นคุณสามารถติดตั้งแพ็กเกจใด ๆ โดยไม่ต้องใช้สิทธิ์รูท มันจะทำงานได้อย่างถูกต้องกับการแจกแจงลินุกซ์ที่สำคัญทั้งหมดข้อ จำกัด เพียงอย่างเดียวคือ JuJu สามารถรันบนเคอร์เนลลินุกซ์ด้วยรุ่นที่แนะนำขั้นต่ำ 2.6.32

ตัวอย่างเช่นหลังจากติดตั้ง JuJu เพื่อติดตั้ง jedit:

$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit

มันจะทำงานได้ดีบน Ubuntu ใช่ไหม
เซท

ใช่ถ้ารุ่นลินุกซ์เคอร์เนลของอูบุนตูมีค่ามากกว่าหรือเท่ากับ 2.6.32 จะทำงานได้
user967489

2
ตอนแรกผมคิดว่าคุณกำลังพูดถึงนี้ ตัวพิมพ์ใหญ่ตัวที่สองสร้างความแตกต่าง
Kon psych

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