¿Cómo puedo instalar un RPM sin ser root?

49

¿Cómo puedo instalar un RPM en una máquina donde no tengo permisos de root? Quiero instalar un paquete para mi uso solo en un directorio de trabajo personal. Estoy ejecutando SuSe SLES10.

Por favor no me llame "Esta idea es tan tonta, no deberías hacerlo porque todas las solicitudes deben pasar por el dios raíz corporativo, que viva para siempre".

Sé que puedo solicitar esto al dios raíz, pero seré derribado (por razones impecables e impecables, estoy seguro ...). Además, nunca podrá instalarlo, incluso si dice que lo hará.

Ross Rogers
fuente
66
Esto no es un duplicado en absoluto. Anular la ruta no siempre permite que un usuario no privilegiado utilice rpm.
John T
Gracias HarryMC. Lo comprobaré Además, agregar un enlace al otro boleto que la gente pensó que el mío era un duplicado. Tal vez las migas de pan ayudarán a alguien más: superuser.com/questions/160530/override-rpm-install-path
Ross Rogers
Para un futuro mejor, mira appimage.org .
Ross Rogers

Respuestas:

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

Consulte Cómo extraer un paquete RPM sin instalarlo (comando de extracción de rpm) .

harrymc
fuente
2
Hice esto y cpio no parece hacer nada excepto imprimir '1 bloque'. ¿Hice algo mal?
Nate Parsons el
Gracias. Resulta que pude instalar desde la fuente, así que no necesito molestarme con los RPM
Nate Parsons
10
Eso solo descomprime el contenido del RPM y lo descarga donde está. Eso no significa que el resultado funcione (su configuración no es donde debería estar, ...)
vonbrand
Ojalá pudiera darte una recompensa de reputación de caridad. ¡Gracias!
macetw
3

Cómo extraer el contenido de los paquetes rpm

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

Cómo extraer el tar.gzarchivo

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

Cómo extraer tar.gzpaquetes al directorio actual

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

Cómo construir binarios como no root

./configure --prefix=$HOME && make && make install
Yordan Georgiev
fuente
1

Otra opción es instalar desde la fuente, donde generalmente puede cambiar el directorio de instalación con el --prefixinterruptor.

John T
fuente
1
Eso es lo que hago normalmente, pero esperaba algo más de automatización.
Ross Rogers
2
Para mí, esto no funciona porque intenta obtener un bloqueo de archivo en algo en / var (y se deniega el permiso).
Nir Friedman
0

Creo que la respuesta "real" a la "instalación" de un rpm sin privilegio de root es que no se puede . PERO suponiendo que realmente puedas comenzar el proceso de instalación ...

Los RPM se instalan utilizando una lista de instrucciones proporcionadas en un archivo de especificación (.spec) que generalmente sigue la Jerarquía del sistema de archivos. La mayoría de las rutas en esa jerarquía son casi siempre rutas del sistema operativo y no rutas de usuario. Entonces, a menos que su nombre de usuario tenga acceso a todas las rutas en las que se instala un RPM, entonces ciertamente fallará. Si crea un RPM que prefija todas sus rutas con /home/me(o alguna otra ruta que posea), entonces funcionaría. Esto requeriría adquirir un src.rpm y extraerlo como se explica en otras respuestas, luego reconstruirlo. En el momento en que lo haga, podría considerar obtener acceso a la raíz o crear el software desde cero (generalmente lo que hace si no planea distribuir el software en muchas máquinas).

Hay trucos ingeniosos para ayudarlo en el proceso de construcción manual. Por ejemplo, puede utilizar las dependencias que ya figuran en un RPM para obtener todas sus dependencias: https://stackoverflow.com/a/13877738/1236128 .

Jonathan Komar
fuente