Як я можу встановити RPM, не використовуючи root?


49

Як я можу встановити RPM на машину, де у мене немає дозволів root? Я хочу встановити пакет для мого використання лише в особистому робочому каталозі. Я працюю на SuSe SLES10.

Будь ласка, не пишіть мене: "Ця ідея настільки німа, ви не повинні її робити, тому що всі запити повинні пройти через корпоративного бога-кореня, нехай він живе вічно".

Я знаю, що можу попросити цього кореневого бога, але мене зберуть (з непорочних, бездоганних причин, я впевнений ...). Крім того, він ніколи не обійдеться його встановити, навіть якщо він скаже, що зробить це.


6
Це зовсім не дублікат. Перезапис шляху не завжди дозволяє непривілейованому користувачу використовувати rpm.
Джон Т

Дякую HarryMC Я перевірю це. Крім того, додавши посилання на інший квиток, який люди вважали, що мій дублікат. Можливо, сухарі допоможуть комусь іншому: superuser.com/questions/160530/override-rpm-install-path
Росс Роджерс

Для кращого майбутнього дивіться на appimage.org .
Росс Роджерс

Відповіді:


56

2
Я зробив це, і cpio, здається, не робить нічого, крім друку "1 блок". Я щось зробив не так?
Нейт Парсонс

Спасибі. Виявляється, мені вдалося встановити з джерела, тому мені не потрібно морочитися з RPM
Nate Parsons

10
Це просто розпаковує вміст RPM і скидає його там, де ви є. Це не означає, що результат працює (його конфігурація не там, де повинна бути, ...)
vonbrand

Бажаю, я міг би просто дати вам якусь нагороду за репутацію благодійності. Дякую!
macetw

3

Як витягнути вміст пакетів rpm

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

Як витягнути tar.gzархів

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

Як витягнути tar.gzпакунки в поточний каталог

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

Як побудувати бінарні файли як некорінь

./configure --prefix=$HOME && make && make install

1

Інший варіант - встановити з джерела, де зазвичай можна змінити каталог встановлення за допомогою --prefixперемикача.


1
Це я зазвичай роблю, але я сподівався на ще одну автоматизацію.
Росс Роджерс

2
Для мене це не працює, оскільки він намагається отримати блокування файлів на щось у / var (і дозвіл відмовлено).
Нір Фрідман

0

Я думаю, що "справжньою" відповіддю на "встановлення" rpm без привілею root є, ви не можете . Але якщо припустити, що ви могли фактично запустити процес встановлення ...

RPM встановлюються за допомогою списку інструкцій, наданих у специфікаційному файлі (.spec), які зазвичай дотримуються Ієрархії файлової системи. Більшість шляхів у цій ієрархії майже завжди є контурами операційної системи, а не шляхами користувачів. Отже, якщо ваше ім'я користувача не має доступу до всіх шляхів, до яких встановлюється RPM, воно, безумовно, не вдасться. Якщо ви створите RPM, який префіксує всі його контури /home/me(або якийсь інший шлях, яким ви володієте), він би спрацював. Для цього знадобиться отримати src.rpm і витягти його, як пояснено в інших відповідях, а потім відновити його. До цього часу, ви можете просто розглянути можливість отримання кореневого доступу або створення програмного забезпечення з нуля (як правило, що ви робите, якщо не плануєте розповсюджувати програмне забезпечення на багатьох машинах).

Існують розумні хитрощі, які допоможуть вам у процесі ручного збирання. Наприклад, ви можете використовувати залежності, вже перелічені в RPM, щоб отримати всі свої залежності: https://stackoverflow.com/a/13877738/1236128 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.