Как я могу установить RPM без рута?

49

Как я могу установить RPM на машине, где у меня нет прав root? Я хочу установить пакет для моего использования только в личной рабочей директории. Я бегу SuSe SLES10.

Пожалуйста, не ругайте меня: «Эта идея настолько глупа, вы не должны делать это, потому что все запросы должны проходить через корпоративного корня, пусть он будет жить вечно».

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

Росс Роджерс
источник
6
Это совсем не дубликат. Переопределение пути не всегда позволяет непривилегированному пользователю использовать rpm.
Джон Т
Спасибо HarryMC. Я проверю это. Кроме того, добавив ссылку на другой билет, который, по мнению людей, был дубликатом. Может быть, хлебные крошки помогут кому-то еще: superuser.com/questions/160530/override-rpm-install-path
Росс Роджерс
Для лучшего будущего, посмотрите на appimage.org .
Росс Роджерс

Ответы:

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

См. Как извлечь пакет RPM без его установки (команда rpm extract) .

harrymc
источник
2
Я сделал это, и cpio, похоже, ничего не делает, кроме печати «1 блок». Я сделал что-то неправильно?
Нейт Парсонс
Спасибо. Оказывается, я смог установить из исходного кода, поэтому мне не нужно беспокоиться о RPM
Нейт Парсонс,
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 -

Как собрать бинарные файлы без полномочий root

./configure --prefix=$HOME && make && make install
Йордан Георгиев
источник
1

Другой вариант - установить из источника, где вы обычно можете изменить каталог установки с помощью --prefixпереключателя.

Джон Т
источник
1
Это то, что я обычно делаю, но я надеялся на еще большую автоматизацию.
Росс Роджерс
2
Для меня это не работает, потому что он пытается получить блокировку файла на что-то в / var (и разрешение отказано).
Нир Фридман,
0

Я думаю, что «реальный» ответ на «установку» rpm без прав root, вы не можете . Но при условии, что вы действительно можете начать процесс установки ...

RPM устанавливаются с использованием списка инструкций, представленных в файле спецификации (.spec), которые обычно следуют иерархии файловой системы. Большинство путей в этой иерархии почти всегда являются путями операционной системы, а не путями пользователей. Таким образом, если ваше имя пользователя не имеет доступа ко всем путям, на которые устанавливается RPM, то оно, безусловно, завершится ошибкой. Если вы создадите RPM с префиксами всех своих путей /home/me(или каким-либо другим вашим путем), он будет работать. Это потребует получения src.rpm и его извлечения, как объяснено в других ответах, а затем его перестроения. К тому времени, когда вы это сделаете, вы можете просто рассмотреть возможность получения root-прав или создания программного обеспечения с нуля (обычно это происходит, если вы не планируете распространять программное обеспечение на множество компьютеров).

Есть умные приемы, которые помогут вам в процессе сборки вручную. Например, вы можете использовать зависимости, уже перечисленные в RPM, чтобы получить все ваши зависимости: https://stackoverflow.com/a/13877738/1236128 .

Джонатан Комар
источник