Bagaimana saya bisa menginstal RPM tanpa menjadi root?

49

Bagaimana saya bisa menginstal RPM pada mesin di mana saya tidak memiliki izin root? Saya ingin menginstal paket untuk saya gunakan hanya di direktori kerja pribadi. Saya menjalankan SESe SLES10.

Tolong jangan nyalakan saya dengan "Gagasan ini sangat bodoh, Anda tidak boleh melakukannya karena semua permintaan harus melalui dewa akar perusahaan, semoga dia hidup selamanya."

Saya tahu saya dapat meminta ini dari root root, tetapi saya akan ditembak jatuh (untuk alasan yang sempurna, tanpa cela, saya yakin ...). Selain itu, dia tidak akan pernah sempat menginstalnya bahkan jika dia mengatakan akan melakukannya.

Ross Rogers
sumber
6
Ini bukan duplikat sama sekali. Mengganti jalur tidak selalu memungkinkan pengguna yang tidak memiliki hak pribadi untuk menggunakan rpm.
John T
Terima kasih HarryMC. Saya akan memeriksanya. Juga, menambahkan tautan ke tiket lain yang menurut orang adalah milik saya adalah duplikat. Mungkin remah roti akan membantu orang lain: superuser.com/questions/160530/override-rpm-install-path
Ross Rogers
Untuk masa depan yang lebih baik, lihat appimage.org .
Ross Rogers

Jawaban:

56
cd my-dir;
rpm2cpio to-install.rpm | cpio -idv

Lihat Cara Mengekstrak Paket RPM Tanpa Memasangnya (perintah ekstrak rpm) .

harrymc
sumber
2
Saya melakukan ini dan cpio sepertinya tidak melakukan apa-apa selain mencetak '1 blok'. Apakah saya melakukan sesuatu yang salah?
Nate Parsons
Terima kasih. Ternyata saya dapat menginstal dari sumber, jadi saya tidak perlu repot dengan RPM
Nate Parsons
10
Itu hanya membongkar isi RPM dan membuangnya di tempat Anda berada. Itu tidak berarti hasilnya bekerja (konfigurasinya tidak seperti yang seharusnya, ...)
vonbrand
Seandainya saya bisa memberi Anda beberapa hadiah reputasi amal. Terima kasih!
macetw
3

Cara mengekstrak konten paket rpm

export ins=foo-bar.rpm
rpm2cpio $ins | cpio -idv

Cara mengekstrak tar.gzarsip

gzip -dc foo-bar.tar.gz | tar xvf –
cd foo-bar-dir

Cara mengekstrak tar.gzpaket ke direktori saat ini

export file=foo-bar.tar.gz
# Note that `xovf` switch order *matters*
gzip -dc $file | tar -xovf -

Cara membangun binari sebagai non-root

./configure --prefix=$HOME && make && make install
Yordan Georgiev
sumber
1

Pilihan lain adalah menginstal dari sumber, tempat Anda biasanya dapat mengubah direktori instal menggunakan --prefixsakelar.

John T
sumber
1
Itulah yang biasanya saya lakukan, tetapi saya berharap untuk beberapa otomatisasi lagi.
Ross Rogers
2
Bagi saya ini tidak berfungsi karena mencoba untuk mendapatkan kunci file pada sesuatu di / var (dan izin ditolak).
Nir Friedman
0

Saya pikir jawaban "nyata" untuk "menginstal" rpm tanpa hak akses root adalah, Anda tidak bisa . TAPI dengan asumsi Anda benar-benar dapat memulai proses instalasi ...

RPM diinstal menggunakan daftar instruksi yang disediakan dalam file spesifikasi (.spec) yang biasanya mengikuti Hirarki Filesystem. Sebagian besar jalur pada hierarki itu hampir selalu merupakan jalur sistem operasi dan bukan jalur pengguna. Jadi, kecuali jika nama pengguna Anda memiliki akses ke semua jalur yang RPM pasang, maka itu pasti akan gagal. Jika Anda membuat RPM yang mengawali semua jalurnya dengan /home/me(atau jalur lain yang Anda miliki), maka itu akan berhasil. Ini akan membutuhkan memperoleh src.rpm dan mengekstraknya seperti yang dijelaskan dalam jawaban lain, lalu membangunnya kembali. Pada saat Anda melakukan itu, Anda mungkin hanya mempertimbangkan untuk mendapatkan akses root atau membangun perangkat lunak dari awal (biasanya apa yang Anda lakukan jika Anda tidak berencana mendistribusikan perangkat lunak di banyak mesin).

Ada trik pintar untuk membantu Anda dalam proses pembuatan manual. Misalnya, Anda dapat memanfaatkan dependensi yang sudah tercantum dalam RPM untuk mendapatkan semua dependensi Anda: https://stackoverflow.com/a/13877738/1236128 .

Jonathan Komar
sumber