yum cài đặt trong nhà người dùng cho người không phải quản trị viên


51

Tôi là người dùng không phải quản trị viên trên một hệ thống máy tính lớn. Tôi cần một số gói cập nhật chưa được cài đặt trên hệ thống. Tôi muốn sử dụng yum để cài đặt chúng. Là người dùng không có quyền truy cập sudo, admin hoặc root, tôi có thể sử dụng quản lý gói để cài đặt các gói trong thư mục chính của mình không? Tôi luôn có thể sử dụng make từ các nguồn, nhưng có thể sử dụng yum sẽ giúp cuộc sống dễ dàng hơn.


1
trừ khi nhị phân yum là gốc suid (cơ hội đó là mỏng).
h3rrmiller

1
@ h3rrmiller, nhưng có trình quản lý gói nào có thể cài đặt các chương trình trong $ HOME và do đó không yêu cầu truy cập sudo không? Tôi biết MacPorts trên OSX có thể làm như vậy. Các tùy chọn như vậy cho Linux là gì?
highBandWidth

Câu trả lời:


8

Hầu hết các nhị phân được biên dịch để được cài đặt vào các vị trí nhất định bên dưới /.

Có các trình quản lý gói không root như Gentoo PrefixRootless GoboLinux và có thể 0install .

Như bạn đã nói, việc tự biên dịch sẽ giảm bớt vấn đề đó hoặc sử dụng chroot. Tuy nhiên, trở ngại lớn nhất của bạn với chroot sẽ là điều kiện tiên quyết và liên kết đến các đối tượng chia sẻ kernel.


10
Chroot không phải là một lựa chọn ở đây. Bạn cần phải root để chroot.
Marco

38

Thay vì sử dụng yum, hãy tìm các rpms bạn muốn và tải chúng xuống. Bạn vẫn không thể cài đặt chúng trực tiếp mà không cần root, nhưng các gói RPM thực sự là các tệp .cpio ưa thích và bạn có thể giải nén nội dung của chúng. Cách dễ nhất để làm điều này có lẽ là thông qua mctrình duyệt tệp ("chỉ huy nửa đêm") (một trong những phần mềm lớn nhất từ ​​trước đến nay), cho phép bạn duyệt nội dung của một .rpmvà sao chép các tệp ra khỏi nó.

Vì vậy, bạn có thể sử dụng rpm2cpiođể chuyển đổi nó thành .cpio, sau đó cpiotrích xuất các tệp bên trong và đặt chúng vào đúng vị trí. Cả hai thứ này sẽ được cài đặt trên hệ thống redhat hoặc fedora. Đây là một ví dụ cài đặt "xsnow" (bạn có thể muốn làm điều này trong một thư mục trống):

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

Lưu ý rằng tôi tìm thấy một .rpm phù hợp với hệ thống của tôi, fc17 x86_64. Điều này rất quan trọng vì đây là các tệp nhị phân được biên dịch trước được liên kết với các thành phần khác. Bây giờ giải nén .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...

Nếu tôi duyệt qua cây thư mục này, mọi thứ tôi cần đều ở đó, ngoại trừ một số thông tin meta có thể giúp tôi giải quyết các phụ thuộc. Điều này có thể được tìm thấy bằng cách sử dụng 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

Khá chắc chắn rằng tôi đã có tất cả những thứ này. Vì vậy, bây giờ tất cả những gì tôi phải làm là đặt xsnow thực thi trong $ PATH của tôi, đã bao gồm một thùng trong thư mục nhà của tôi:

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

Viola! Bây giờ tôi có thể gõ xsnowvà xem không có gì, vì hóa ra xsnow không chơi tốt với KDE :( nhưng hy vọng rằng ý chính của quy trình là rõ ràng. Tôi không phải làm gì ngoài thư mục nhà của mình.

Nếu bạn cần cài đặt thư viện, bạn cũng sẽ cần tạo một thư mục tại nhà cho họ và thêm vào ~/.bashrc:

export LD_LIBRARY_PATH=/home/you/lib

@siamii Vâng, bạn có câu trả lời tốt hơn không?
Marcin

5
Ok, vậy làm thế nào về việc ai đó tạo ra một công cụ để tạo các tệp cpio, sau đó sao chép mọi thứ vào một thư mục không root, như ./usr/bin sang $ PREFIX / usr / bin, v.v., đồng thời kiểm tra và cài đặt phụ thuộc.
highBandWidth

2
Hai năm rưỡi sau, cảm ơn câu trả lời hữu ích. Bạn có thể làm điều này trong một dòng với: mkdir xsnow; cd xsnow; wget -O - 195.220.108.108/linux/rpmfusion/nonfree/fedora/release/17/iêu | vòng / phút - | cpio -idv
Larry Engholm

1
Tôi đã sử dụng điều này trong hơn 2 năm trên máy tính văn phòng của tôi và nó hoạt động như một bùa mê mỗi lần. Tôi muốn bày tỏ lòng biết ơn chân thành của bạn với bạn. Tôi muốn CNTT của trường đại học của tôi là có thẩm quyền.

Thỉnh thoảng trong khi làm điều này, tôi chạy vào một liên kết tượng trưng không thể đến '...': Quyền bị từ chối hoặc cpio: ....: Không thể mở: Quyền bị từ chối, có cách nào để khắc phục điều này không? Lưu ý rằng tôi tạo các tệp này mà không có sudo, nhưng sau đó vì một số lý do tôi cần sử dụng sudo để gỡ cài đặt chúng
Phylliida
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.