rpm tanpa root

12

Apakah mungkin menggunakan rpm tanpa akses root?

David Nehme
sumber

Jawaban:

2

Bergantung pada isi paket Anda cukup mengekstrak isi rpm dan menggunakannya dari suatu tempat dengan direktori home Anda. Bahkan jika tidak ditandai sebagai relocatable. Jika binari dalam paket memiliki jalur hard-coded, atau jika aplikasi membutuhkan akses root, maka itu tidak mungkin.

Sakit kepala
sumber
1
ini sebenarnya salah, Anda tidak bisa menjalankan rpmperintah tanpa sudo / akses root.
8

Ada banyak jawaban yang menyarankan paket relocatable. Opsi relokasi adalah untuk administrator untuk memilih tujuan (membuat tujuan menjadi / memilih bukan / usr / lokal misalnya) dan tidak benar-benar untuk izin pengguna.

Meskipun dimungkinkan untuk mengatasi beberapa masalah izin menggunakan metode ini, masalah UTAMA adalah bahwa ketika Anda melakukan operasi rpm, itu memodifikasi database /var/lib/rpm/__db.* yang dimiliki root: root. Jadi seperti JPerkSter mengatakan "jawaban singkat = tidak". Menyiapkan sudo untuk memungkinkan kebutuhan spesifik mungkin akan menjadi taruhan terbaik.

Alex
sumber
8

Mempertimbangkan semua hal di atas, terkait bangunan yang dapat dipindahkan, Anda dapat mencoba mengikuti instruksi yang tercantum di sini .

rpm --initdb --root /home/username/local --dbpath /home/username/local/lib/rpm
rpm --root /home/username/local --dbpath /home/username/local/lib/rpm \
 --relocate /usr=/home/username/local --nodeps -ivh package.rpm
Lee Gee
sumber
3

Spesifikasi RPM berisi opsi yang disebut 'relocatable'. Jika rpm dibangun dengan relocatability dihidupkan maka dapat diinstal di direktori yang ditentukan pengguna menggunakan opsi '--prefix'. Jadi agaknya satu rpm bisa dipasang secara lokal tanpa akses superuser selama dua kondisi terpenuhi:

  1. Paket ini awalnya dibangun agar dapat dipindahkan
  2. Biner 'rpm' tidak berusaha menambahkan paket ke katalog sistem global

Tapi, secara umum, tidak, Anda perlu akses pengguna super untuk menginstal RPM. Sementara opsi relocatable ada, saya hampir tidak pernah melihat paket yang telah dibangun untuk mendukungnya.

Scott Pack
sumber
3

Beberapa paket dapat dipindahkan sehingga dapat berfungsi dengan baik tanpa root, cukup tentukan awalan saat menginstalnya: rpm -i my.rpm --prefix = / my / home / folder

Jika paket tidak dapat dipindahkan, Anda masih dapat mengekstrak file dari RPM dan mencoba menjalankannya. Anda dapat mengekstrak file RPM menggunakan misalnya:

Salin file ke folder ~ / Anda, tambahkan pustaka dependensi tambahan dan berharap yang terbaik. Tidak dijamin tetapi Anda mungkin mendapatkan beberapa paket yang tidak dapat dipindahkan bekerja dengan cara ini.

Datageek
sumber
2

Anda dapat memaksanya untuk menginstal di bawah direktori yang berbeda menggunakan dbpath yang berbeda. Anda juga sebaiknya tidak menjalankan skrip apa pun secara langsung tanpa memeriksanya.

Ini akan menempatkan rpm di bawah direktori saat ini dan mengekstrak skrip sehingga Anda dapat mengedit dan menjalankannya jika perlu.

rpm --install --badreloc --relocate /=`pwd` -dbpath `pwd`/rpm_db --nodeps --noscripts package.rpm

rpm --query --scripts -p package.rpm > scripts.txt
pengguna12722
sumber
2

Ya, tetapi Anda mungkin tidak mau. Saya telah menggunakan paket manifes boneka dan paket rpm untuk memelihara perangkat lunak pada cluster komputer yang saya tidak punya akses root. Secara teori, sesederhana itu

rpm --inittb --root /foo 
rpm --dbpath /foo -i bar.rpm

Namun, ada kebiasaan bagaimana ini berlaku di EL4, EL5, dan EL6, jadi Anda akan memerlukan serangkaian langkah dan opsi yang berbeda untuk masing-masingnya. Saya tidak memiliki informasi yang berguna lagi. Keanehan itu, dan juga masalah basis data RPM yang sering terjadi (mungkin karena NFS), membuat saya menyesal menggunakan rpm.

sciurus
sumber
1

Anda dapat membangun RPM tanpa akses root, cukup lakukan di dalam direktori home Anda. Sejauh menginstal RPM, saya akan mengatakan jawaban singkat = tidak.

JPerkSter
sumber
-2

tidak ada rpm yang tidak memungkinkan tanpa akses root, su atau sudo

Rajat
sumber