об / мин без рута


Ответы:


2

В зависимости от содержимого пакета вы можете просто извлечь содержимое rpm и использовать его где-нибудь в вашем домашнем каталоге. Даже если он не помечен как перемещаемый. Если двоичные файлы в пакете имеют жестко заданные пути или если приложению требуется доступ с правами root, это может быть невозможно.


1
на самом деле это неправильно, вы не можете запустить rpmкоманду без доступа sudo / root.

8

Есть много ответов, предлагающих перемещаемые пакеты. Параметр перемещения предназначен для администраторов, чтобы выбрать пункт назначения (например, для пункта назначения должен быть / opt вместо / usr / local), и он не предназначен для прав пользователя.

Хотя с помощью этого метода можно обойти некоторые проблемы с разрешениями, главная проблема заключается в том, что при выполнении операций rpm он изменяет базы данных /var/lib/rpm/__db.*, принадлежащие root: root. Так как JPerkSter сказал «короткий ответ = нет». Настройка sudo для удовлетворения конкретных потребностей, вероятно, будет лучшим выбором.


8

Учитывая все вышеизложенное в отношении перемещаемых сборок, вы можете попробовать следовать приведенным здесь инструкциям .

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

3

Спецификация RPM содержит опцию с именем relocatable. Если rpm построен с включенной перемещаемостью, его можно установить в каталог, указанный пользователем, используя параметр --prefix. Таким образом, предположительно rpm может быть установлен локально без доступа суперпользователя, если выполняются два условия:

  1. Пакет был изначально создан для перемещения
  2. Двоичный файл rpm не пытается добавить пакет в глобальный системный каталог

Но, как правило, нет, вам нужен доступ суперпользователя для установки RPM. Несмотря на то, что существует опция relocatable, я почти никогда не видел пакет, созданный для его поддержки.


3

Некоторые пакеты можно перемещать, поэтому они могут нормально работать без рута, просто укажите префикс при установке: rpm -i my.rpm --prefix = / my / home / folder

Если пакет не перемещаем, вы все равно можете извлечь файлы из RPM и попробовать запустить его. Вы можете извлечь RPM-файлы, используя, например:

Скопируйте файлы в папку ~ /, добавьте дополнительные библиотеки зависимостей и надейтесь на лучшее. Не гарантировано, но вы можете получить некоторые не перемещаемые пакеты, работающие таким образом.


2

Вы можете принудительно установить его в другой каталог, используя другой путь dbpath. Также вам, вероятно, не следует запускать какие-либо сценарии напрямую, не проверяя их.

Это поместит rpm в текущий каталог и извлечет сценарии, чтобы вы могли редактировать и запускать их при необходимости.

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

rpm --query --scripts -p package.rpm > scripts.txt

2

Да, но вы можете не захотеть. Я использовал пользовательские манифесты puppet и rpm-пакеты для поддержки программного обеспечения в вычислительных кластерах, к которым у меня не было root-доступа. В теории это так же просто, как

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

Тем не менее, есть некоторые особенности в том, как это ведет себя в EL4, EL5 и EL6, поэтому вам потребуется различный набор шагов и опций для каждого из них. У меня больше нет такой информации. Эти причуды, а также частые проблемы с базой данных RPM (возможно, из-за NFS) заставили меня сожалеть об использовании rpm.


1

Вы можете создавать RPM без корневого доступа, просто сделайте это в своем домашнем каталоге. Что касается установки RPM, я бы сказал, что короткий ответ = нет.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.