yum instal di rumah pengguna untuk non-admin

51

Saya adalah pengguna non-admin pada sistem komputer besar. Saya perlu beberapa paket terbaru yang tidak diinstal pada sistem. Saya ingin menggunakan yum untuk menginstalnya. Sebagai pengguna tanpa sudo, admin, atau akses root, dapatkah saya menggunakan manajemen paket untuk menginstal paket di direktori home saya? Saya selalu bisa menggunakan make dari sumbernya, tetapi bisa menggunakan yum akan membuat hidup lebih mudah.

highBandWidth
sumber
1
tidak kecuali yum biner adalah suid root (kemungkinannya kecil).
h3rrmiller
1
@ h3rrmiller, tetapi apakah ada manajer paket yang dapat menginstal program dalam $ HOME, dan karenanya tidak memerlukan akses sudo? Saya tahu MacPorts di OSX dapat melakukannya. Apa sajakah pilihan untuk Linux?
highBandWidth

Jawaban:

8

Sebagian besar binari dikompilasi untuk diinstal ke lokasi tertentu di bawah /.

Ada manajer paket non-root seperti Gentoo Prefix dan Rootless GoboLinux dan mungkin 0install .

Seperti yang Anda katakan, kompilasi sendiri akan mengatasi masalah itu, atau menggunakan chroot. Namun, rintangan terbesar Anda dengan chroot adalah prasyarat dan menghubungkan ke objek yang dibagikan kernel.

h3rrmiller
sumber
10
Chroot bukan opsi di sini. Anda harus root untuk chroot.
Marco
38

Daripada menggunakan yum, cari rpms yang Anda inginkan dan unduh. Anda masih tidak dapat menginstalnya langsung tanpa menjadi root, tetapi paket RPM sebenarnya adalah file .cpio yang bagus, dan Anda dapat membongkar isinya. Cara termudah untuk melakukan ini mungkin melalui mcperamban file ("komandan tengah malam") (salah satu peranti lunak terhebat yang pernah ada), yang memungkinkan Anda untuk menelusuri isi .rpmdan menyalin file langsung dari situ.

Jika begitu, Anda dapat menggunakannya rpm2cpiountuk mengonversinya menjadi .cpio, lalu cpiomengekstrak file di dalamnya dan meletakkannya di tempat yang tepat. Kedua ini sudah akan diinstal pada sistem redhat atau fedora. Berikut ini contoh pemasangan "xsnow" (Anda mungkin ingin melakukan ini di direktori kosong):

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

Perhatikan saya menemukan .rpm yang sesuai untuk sistem saya, fc17 x86_64. Ini penting karena ini adalah binari yang dikompilasi yang dihubungkan dengan komponen lain. Sekarang ekstrak .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...

Jika saya menelusuri pohon direktori ini, semua yang saya butuhkan ada di sana, kecuali beberapa informasi meta yang mungkin membantu saya menyelesaikan dependensi. Ini dapat ditemukan menggunakan 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

Cukup yakin saya sudah memiliki semua ini. Jadi sekarang yang harus saya lakukan adalah meletakkan xsnow dapat dieksekusi di $ PATH saya, yang sudah termasuk bin di direktori home saya:

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

Biola! Sekarang saya dapat mengetik xsnowdan menonton apa pun, karena ternyata xsnow tidak cocok dengan KDE :( tapi mudah-mudahan inti dari prosesnya jelas. Saya tidak perlu melakukan apa pun di luar direktori home saya.

Jika Anda perlu menginstal perpustakaan, Anda juga perlu membuat direktori di rumah untuk itu dan menambahkan ke ~/.bashrc:

export LD_LIBRARY_PATH=/home/you/lib
goldilocks
sumber
@siamii Baiklah, apakah Anda punya jawaban yang lebih baik?
Marcin
5
Ok, jadi bagaimana kalau seseorang membuat alat untuk membuat file cpio, dan kemudian menyalin semuanya ke folder non-root, seperti ./usr/bin ke $ PREFIX / usr / bin dll., Dan juga memeriksa dan menginstal dependensi secara rekursif.
highBandWidth
2
Dua setengah tahun kemudian, terima kasih atas jawaban yang bermanfaat. Anda dapat melakukan ini dalam satu baris dengan: mkdir xsnow; cdsekarang; wget -O - 195.220.108.108/linux/rpmfusion/nonfree/fedora/releases/17/… | rpm2cpio - | cpio -idv
Larry Engholm
1
Saya telah menggunakan ini selama lebih dari 2 tahun di komputer kantor saya dan itu berfungsi seperti pesona setiap saat. Saya ingin mengucapkan terima kasih yang tulus kepada Anda. Saya berharap TI universitas saya kompeten.
Kadang-kadang saat melakukan ini, saya mengalami symlink Cannot ke '...': Izin ditolak atau cpio: ....: Tidak dapat dibuka: Izin ditolak, apakah ada cara untuk memperbaikinya? Perhatikan bahwa saya membuat file-file ini tanpa sudo, tetapi kemudian untuk beberapa alasan saya perlu menggunakan sudo untuk menghapus instalannya
Phylliida