Quiero instalar Git localmente para un usuario en un servidor RHEL (no tengo acceso de root). ¿Cuál sería la forma más limpia/organizada de instalar software en una cuenta de usuario local?
- ¿Instalar todo en el directorio de inicio de ese usuario?
- ¿Cómo sería el diseño del directorio?
- ¿Lo instalarías desde la fuente o desde RPM?
- ¿Si es de RPM usarías YUM o RPM?
Respuesta1
Hay formas de instalar rpms en un directorio de usuario usando rpm
, pero no creo que sea sencillo. No creo que haya una manera de hacerlo yum
.
Mi práctica estándar es compilar desde el código fuente a un local
directorio en mi casa.
$ mkdir ~/local
$ mkdir ~/local/bin
$ mkdir ~/local/lib
$ mkdir ~/local/include
Descargo el código fuente como lo haría /usr/local
cuando tengo root, por ejemplo, en ~/local/git
.
Al compilar configuro el prefijo al local
directorio
$ configure --prefix=/home/user_name/local
$ make
$ make install
Luego agrego ~/local/bin
a mi $PATH en .bash_profile
.
Por supuesto, el problema de instalar desde el código fuente es que no obtienes una resolución automática de dependencias. Si descubre que necesita instalar dependencias, compílelas e instálelas como se indica arriba. Luego, cuando compilas git
, necesitas actualizar los indicadores de compilación para que busquen en la ubicación correcta las bibliotecas de la dependencia e incluyan archivos:
./configure --prefix=/home/user_name/local LDFLAG='-L/home/user_name/local/lib' CFLAGS='-I/home/user_name/local/include' CPPFLAGS='-I/home/user_name/local/include' CXXFLAGS='-I/home/user_name/local/include'
Respuesta2
Un archivo .rpm es en realidad una forma de cpio
archivo, que se parece mucho a una forma simple de tar
. La rpm2cpio
utilidad probablemente esté instalada en el sistema y no requiere privilegios para su uso; escribe en salida estándar, por lo que para convertir:
rpm2cpio whatever.rpm > whatever.cpio
Puedes man cpio
verlo tú mismo, pero lo que ahora quieres hacer es enviar el archivo a cpio en modo "copiar en":
cat whatever.cpio | cpio -i
Es muy probable que el material esté organizado en un árbol de directorios para que los archivos vayan a las ubicaciones apropiadas (bin, etc., etc.). Si no existen en su pwd, obtendrá un error, pero eso enumerará los archivos en el archivo (puede obtener lo mismo con el modificador -t
/ --list
). Si desea crear los directorios automáticamente, utilice -d
. Una forma rápida de descomprimir un rpm:
rpm2cpio whatever.rpm | cpio -i -d
Puede usar esto para instalar en $HOME. El único problema será si el programa espera encontrar cosas en /etc
, etc., ya que muchas cosas tienen su ubicación de instalación codificada para cualquier propósito cuando se compilan.
Construir desde el código fuente es probablemente una mejor opción (ya que puede proporcionar la ubicación correcta), pero si puede hacer que esto funcione en cualquier caso, entonces es rápido y simple.
Además, el explorador de archivos de Midnight Commander ( mc
), y probablemente otros exploradores de archivos, le permitirán navegar en una jerarquía rpm o cpio (o tar comprimido o zip) y copiar archivos individuales como si el archivo estuviera descomprimido (crea un sistema de archivos temporal para explorar con el contenido del archivo comprimido).
Respuesta3
Esta es una alternativa (no usa yum) y el permiso será una locura, pero chown
luego podrás dárselo al usuario objetivo: -- también es un éxito o un fracaso :-(
#-## Download all dependency for the RPM --
#sudo yum install yum-utils
#sudo yumdownloader --resolve --destdir ~/download bash
#-## Install all downloaded to an alternate root
#sudo rpm --initdb --root <user_home_dir>
#sudo rpm --root <user_home_dir> -Uvh --nodeps ~/download/*
Luego agregue ubicaciones apropiadas a su ruta.