Menginstal paket secara lokal ke praktik terbaik pengguna?

18

Saya ingin menginstal Git secara lokal ke pengguna di server RHEL (Saya tidak memiliki akses root) Apa yang akan menjadi cara terbersih Anda / paling terorganisir untuk menginstal perangkat lunak ke akun pengguna lokal?

  • Menginstal semua yang ada di direktori home pengguna itu?
  • Seperti apa tata letak direktori?
  • Apakah Anda menginstal dari sumber atau RPM?
  • Jika dari RPM apakah Anda akan menggunakan YUM atau RPM?
wiredin
sumber

Jawaban:

17

Ada beberapa cara untuk menginstal rpms dalam direktori pengguna yang menggunakan rpm, tetapi saya tidak percaya ini mudah. Saya tidak percaya ada jalan dengan yum.

Praktik standar saya adalah mengkompilasi dari sumber ke localdirektori di rumah saya

$ mkdir ~/local
$ mkdir ~/local/bin
$ mkdir ~/local/lib
$ mkdir ~/local/include

Saya mengunduh sumber seperti /usr/localketika saya melakukan root, misalnya di ~/local/git.

Saat mengkompilasi saya mengatur awalan ke localdirektori

$ configure --prefix=/home/user_name/local
$ make
$ make install

Saya kemudian menambahkan ~/local/bin$ PATH saya di .bash_profile.

Tentu saja, rasa sakit dengan menginstal dari sumber adalah Anda tidak mendapatkan resolusi ketergantungan otomatis. Jika Anda perlu menginstal dependensi, kompilasi dan instal seperti di atas. Kemudian ketika Anda mengkompilasi git, Anda perlu memperbarui flag kompilasi sehingga mereka melihat lokasi yang benar untuk pustaka dependensi dan menyertakan file:

./configure --prefix=/home/user_name/local LDFLAG='-L/home/user_name/local/lib' CFLAGS='-I/home/user_name/local/include' CPPFLAGS='-I/home/user_name/local/include' CXXFLAGS='-I/home/user_name/local/include'
drs
sumber
Ini bekerja dengan sempurna, terima kasih atas sarannya!
wiredin
13

File .rpm sebenarnya adalah bentuk cpioarsip, yang sangat mirip bentuk sederhana .rpm tar. The rpm2cpioutilitas mungkin diinstal pada sistem dan tidak memerlukan hak penggunaan; itu menulis ke standar, sehingga untuk mengkonversi:

rpm2cpio whatever.rpm > whatever.cpio

Ada yang bisa man cpioAnda lihat sendiri, tetapi yang sekarang ingin Anda lakukan adalah memberi makan arsip ke cpio dalam mode "salin":

cat whatever.cpio | cpio -i

Sangat mungkin barang-barang tersebut diatur ke pohon direktori sehingga file masuk ke lokasi yang sesuai (bin, dll, dll.). Jika itu tidak ada di pwd Anda, Anda akan mendapatkan kesalahan, tetapi itu akan mencantumkan file dalam arsip (Anda bisa mendapatkan hal yang sama dengan -t/ --listswitch). Jika Anda ingin membuat direktori secara otomatis, gunakan -d. Jadi cara cepat untuk membongkar rpm:

rpm2cpio whatever.rpm | cpio -i -d

Anda dapat menggunakan ini untuk menginstal ke $ HOME. Satu-satunya masalah adalah jika program mengharapkan untuk menemukan barang-barang /etc, dll., Karena banyak hal memiliki lokasi pemasangannya yang dikodekan untuk tujuan apa pun ketika mereka dikompilasi.

Membangun dari sumber mungkin merupakan opsi yang lebih baik (karena Anda dapat memberikan lokasi yang benar), tetapi jika Anda bisa membuatnya bekerja dalam kasus apa pun maka itu cepat dan sederhana.

Juga, browser file komandan tengah malam ( mc), dan mungkin browser file lain selain itu, akan memungkinkan Anda untuk menavigasi hierarki rpm atau cpio (atau tar terkompresi, atau zip) dan menyalin file individual seolah-olah arsip itu dibongkar (itu menciptakan sistem file sementara untuk menelusuri dengan isi arsip di dalamnya).

goldilocks
sumber
0

Ini adalah alternatif (tidak menggunakan yum) dan izin akan aneh tetapi Anda bisa chownuntuk pengguna target sesudahnya: - juga itu hit atau miss :-(

#-## Download all dependency for the RPM -- 
#sudo yum install yum-utils
#sudo yumdownloader --resolve --destdir ~/download bash

#-## Install all downloaded to an alternate root 
#sudo rpm --initdb --root <user_home_dir>
#sudo rpm --root <user_home_dir> -Uvh --nodeps ~/download/*

Kemudian tambahkan lokasi yang sesuai ke jalur Anda.

Kalpesh Patel
sumber