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

12

Возможно ли использовать rpm без рут-доступа?

Дэвид Неем
источник

Ответы:

2

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

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

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

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

Alex
источник
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-файлы, используя, например:

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

Datageek
источник
2

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

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

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

rpm --query --scripts -p package.rpm > scripts.txt
user12722
источник
2

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

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

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

Sciurus
источник
1

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

JPerkSter
источник
-2

нет, это не возможно, обороты без прав root, su или sudo

Раджу
источник