Làm thế nào tôi có thể cài đặt một gói mà không cần truy cập root?


126

Tôi không có quyền truy cập root trên máy này.

Tôi muốn biết liệu có cách nào để tôi có thể tải xuống các gói Ubuntu và cài đặt chúng dưới dạng không root không?

Có lẽ trong tôi ~/binhay ~/usr/sharehay cái gì như thế? Liệu điều đó có hiệu quả?


1
Hy vọng, họ sẽ hỗ trợ nó sớm.
Domi

4
Bạn có thể sử dụng các ứng dụng di động cho linux: không cần cài đặt, không cần root. Tìm nó tại appimage.org . Ngay cả Linus Torvalds cũng thích nó. Điều đó thật kỳ quặc, vì Linus không bao giờ thích bất cứ điều gì.
ipse lute

Tôi đề nghị thử fakechroot .
Robert Pollak

Một sự kết hợp dpk -xmvlàm việc cho tôi. Hoặc, nếu thậm chí dpkkhông có sẵn, arvà đường ống / kết hợp với tarlàm việc cho tôi trên các hệ thống rất hạn chế, xem tại đây
iolsmit

Câu trả lời:


107

Apt không hỗ trợ trực tiếp, nhưng có nhiều cách để làm điều đó.

Một là sử dụng schrootđể tạo ra một chroot không root. Đây là một quá trìnhliên quan , nhưng bạn nên tìm sự trợ giúp của cộng đồng cho nhiều nhà phát triển thiết lập môi trường chroot để biên dịch mã.

Cách thứ hai tôi biết là cài đặt từ gói .deb. Bạn có thể tải xuống cái này từ một trang web hoặc nếu nó nằm trong kho Ubuntu mà bạn có thể tải xuống.

apt-get download package

Thay thế packagebằng tên của gói

Một khi bạn có tệp deb của bạn gọi dpkgtrực tiếp từ dòng lệnh. Ví dụ sau sẽ cài đặt pack.deb vào thư mục chính của bạn.

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

Nhược điểm của việc sử dụng dpkg như thế này là các thông báo lỗi có khả năng là khó hiểu; dpkg không tự động giải quyết các phụ thuộc hoặc tạo cấu trúc thư mục mà nó mong đợi.

Cuối cùng, bạn có thể sử dụng apt-get sourcelệnh để tìm nạp nguồn của gói và cấu hình nó để cài đặt cục bộ. Thông thường, cái này trông giống như:

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

Nhược điểm của phương pháp này là bạn cần môi trường phát triển có sẵn để phương pháp này hoạt động, và bạn có thể thấy mình biên dịch hàng tá gói để giải quyết tất cả các phụ thuộc.

BIÊN TẬP:

dpkg -ikhông hoạt động (xem bình luận), tôi đề nghị phương án này:

dpkg -x package.deb dir

Điều này sẽ trích xuất gói .deb vào dir. Sau đó, bạn có thể xuất PATH nơi nhị phân. Miễn là tất cả các phụ thuộc của nhị phân được cài đặt, nó sẽ chạy như bình thường.


1
Nếu bạn có quyền truy cập root nhưng chỉ không muốn cài đặt một gói cụ thể trên toàn cầu, bạn có thể sử dụng sudo apt-get build-dep packageđể cài đặt mọi thứ cần thiết để xây dựng gói (sau khi nhận được nguồn với apt-get source).
Vladimir Panteleev

19
Câu trả lời này đã được viết lại vào năm 2010. Có bất kỳ thay đổi nào đối với việc này được thực hiện kể từ đó không?
vẫy gọi

36
Ngay cả với --force-not-root, tôi vẫn nhận được "dpkg: error: hoạt động được yêu cầu yêu cầu đặc quyền siêu người dùng"
Clément

10
Mọi người, --force-not-root --root=$HOMEhoặc các biến thể của chúng sẽ không hoạt động. Các gói nhị phân Debian không được thiết kế để cài đặt trong thư mục chính, theo giai đoạn. Hoặc, để đặt cách này khác ,. "Ví dụ sau sẽ cài đặt gói.deb vào thư mục chính của bạn.". Không, nó sẽ không.
Faheem Mitha

1
Đáng buồn là điều này sẽ không làm việc. Tôi đã thử--force-not-root --root=/your/custom/path
Việt

16

Tôi giả sử bạn muốn cài đặt jedit . Đầu tiên bạn phải tìm gói và tải nó. Tôi chỉ lấy tệp deb từ một số máy nhân bản và mở giao diện điều khiển / thiết bị đầu cuối:

  1. mkdir /tmp/jedit && cd /tmp/jedit- Làm cho một diretory mới trong tmpvà thay đổi vào nó.
  2. wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb - Tải gói
  3. ar x jedit_4.3.1.dfsg-0ubuntu1_all.debhoặc, dễ gõ, ar x *.deb- phần này trích xuất nội dung tệp
  4. tar xvzf data.tar.gz- tệp data.tar.gzcó tất cả những thứ bạn cần để thực thi phần mềm
  5. usr/bin/jedit mở trình soạn thảo
  6. làm xong :-)

Bạn có thể di chuyển các tệp đến một số điểm trong thư mục chính của bạn và thực hiện chúng từ đó.


11
Lưu ý rằng các tập lệnh trước và sau khi cài đặt không được chạy; ngoài ra, bạn sẽ cần phải tự giải quyết mọi phụ thuộc hoặc đường dẫn. Nhưng trên một cài đặt mặc định, điều này là đủ cho rất nhiều ứng dụng máy tính để bàn.
jbowtie

bạn cũng có thể tải xuống gói mà không cần tìm kiếm, chỉ cần tải xuống apt-get (xem câu trả lời khác)
lib

Tôi tin rằng liên kết của bạn đã bị phá vỡ.
Winnemucca

9

Tôi đã viết một chương trình có tên JuJu , về cơ bản cho phép có một bản phân phối linux thực sự nhỏ (chỉ chứa trình quản lý gói) trong thư mục $ HOME / .juju của bạn.

Nó cho phép hệ thống tùy chỉnh của bạn bên trong thư mục chính có thể truy cập thông qua proot và do đó, bạn có thể cài đặt bất kỳ gói nào mà không có quyền root. Nó sẽ chạy đúng với tất cả các bản phân phối linux chính, hạn chế duy nhất là JuJu có thể chạy trên kernel linux với phiên bản tối thiểu 2.6.32 được đề xuất.

Chẳng hạn, sau khi cài đặt JuJu để cài đặt jedit:

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

Điều này sẽ chạy tốt trên Ubuntu phải không?
Seth

Có, nếu phiên bản kernel linux của ubfox lớn hơn hoặc bằng 2.6.32 thì nó sẽ hoạt động.
dùng967361

2
Lúc đầu tôi nghĩ bạn đang nói về điều này . Chữ j viết hoa thứ hai tạo nên sự khác biệt.
tâm lý kon

1
Câu hỏi là nếu chúng ta có thể cài đặt gói Ubuntu. Với Junest, chúng tôi sẽ chỉ có thể cài đặt gói ArchLinux và KHÔNG phải là gói Ubuntu. Ví dụ: nếu gói tương tự không có sẵn cho ArchLinux, thì điều này sẽ không giúp ích. Điều đó nói rằng, cảm ơn cho Junest.
Kiran
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.