rpm sin raíz

12

¿Es posible usar rpm sin acceso de root?

David Nehme
fuente

Respuestas:

2

Dependiendo del contenido del paquete, simplemente puede extraer el contenido de las rpm y usarlo desde algún lugar dentro de su directorio de inicio. Incluso si no está marcado como reubicable. Si los binarios en el paquete tienen rutas codificadas, o si la aplicación requiere acceso de root, entonces puede que no sea posible.

Zoredache
fuente
1
esto es realmente incorrecto, no puede ejecutar el rpmcomando sin acceso a sudo / root.
8

Hay muchas respuestas que sugieren paquetes reubicables. La opción de reubicación es para que los administradores elijan el destino (haciendo que el destino sea / opt en lugar de / usr / local, por ejemplo) y no es realmente para permisos de usuario.

Si bien es posible solucionar algunos problemas de permisos utilizando este método, el problema MAYOR es que cuando realiza operaciones rpm, está modificando las bases de datos /var/lib/rpm/__db.* que son propiedad de root: root. Entonces, como JPerkSter dijo "respuesta corta = no". Configurar sudo para permitir las necesidades específicas probablemente sería la mejor apuesta.

Alex
fuente
8

Teniendo en cuenta todo lo anterior, con respecto a las compilaciones reubicables, puede intentar seguir las instrucciones que se enumeran aquí .

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
fuente
3

La especificación RPM contiene una opción llamada 'reubicable'. Si el rpm se construye con la reubicación activada, se puede instalar en un directorio especificado por el usuario utilizando la opción '--prefix'. Entonces, presumiblemente, se podría instalar un rpm localmente sin acceso de superusuario siempre que se cumplan dos condiciones:

  1. El paquete fue construido originalmente para ser reubicable
  2. El binario 'rpm' no intenta agregar el paquete al catálogo global del sistema

Pero, en general, no, necesita acceso de superusuario para instalar un RPM. Si bien existe la opción reubicable, casi nunca he visto un paquete que se haya creado para admitirlo.

Scott Pack
fuente
3

Algunos paquetes son reubicables, por lo que pueden funcionar bien sin root, solo especifique el prefijo al instalarlo: rpm -i my.rpm --prefix = / my / home / folder

Si el paquete no es reubicable, aún puede extraer los archivos de RPM e intentar ejecutarlo. Puede extraer archivos RPM utilizando, por ejemplo:

Copie los archivos en su carpeta ~ /, agregue bibliotecas de dependencias adicionales y espere lo mejor. No está garantizado, pero puede obtener algunos paquetes no reubicables que funcionan de esta manera.

Datageek
fuente
2

Puede forzarlo a instalarse en un directorio diferente utilizando un dbpath diferente. Además, probablemente no debería ejecutar ningún script directamente sin verificarlo.

Esto colocará un rpm en el directorio actual y extraerá los scripts para que pueda editarlos y ejecutarlos si es necesario.

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

rpm --query --scripts -p package.rpm > scripts.txt
usuario12722
fuente
2

Sí, pero es posible que no quieras. He utilizado manifiestos de títeres personalizados y paquetes rpm para mantener el software en clústeres de cómputo en los que no tenía acceso de root. En teoría es tan simple como

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

Sin embargo, hay peculiaridades en cómo se comporta esto en EL4, EL5 y EL6, por lo que necesitará un conjunto diferente de pasos y opciones para cada uno. Ya no tengo esa información a mano. Esas peculiaridades, así como los frecuentes problemas de la base de datos RPM (quizás debido a NFS), me hicieron arrepentirme de usar rpm.

Sciurus
fuente
1

Puede construir RPM sin acceso de root, solo hágalo dentro de su directorio de inicio. En cuanto a la instalación de RPM, diría que la respuesta corta = no.

JPerkSter
fuente
-2

no, no es posible rpm sin acceso root, su o sudo

Rajat
fuente