Saltar al contenido

¿Cómo instalar paquetes en Linux (CentOS) sin usuario root con manejo automático de dependencias?

Este enunciado fue analizado por nuestros especialistas para asegurar la veracidad de nuestra esta crónica.

Solución:

Es posible usar yum y rpm para instalar cualquier paquete en el repositorio de la distribución. Aquí está la receta:

Encuentra el nombre del paquete

Usar yum search.

Descargar

Descargue el paquete y todas sus dependencias usando yumdownloader (que está disponible en CentOS de forma predeterminada). Tendrás que pasarlo --resolve para obtener una resolución de dependencia. yumdownloader descargas al directorio actual a menos que especifique un --destdir.

mkdir -p ~/rpm
yumdownloader --destdir ~/rpm --resolve vim-common

Escoge un prefix ubicación

Puede ser ~, ~/centos, o ~/y. Si su hogar es lento porque está en un sistema de archivos de red, puede ponerlo en /var/tmp/....

mkdir ~/centos

Extraiga todos los paquetes .rpm

Extraiga todos los paquetes .rpm a su elegido prefix ubicación.

cd ~/centos && rpm2cpio ~/rpm/x.rpm | cpio -id
  • rpm2cpio genera el archivo .rpm como un archivo .cpio en stdout.
  • cpio lo lee de stdin
  • -i significa extraer (al directorio actual)
  • -d significa crear directorio faltante

Opcionalmente puedes usar -v: detallado

Configurar el entorno

Deberá configurar la variable de entorno PATH y LD_LIBRARY_PATH para que los paquetes instalados funcionen correctamente. Aquí está la muestra correspondiente de mi ~/.bashrc:

export PATH="$HOME/centos/usr/sbin:$HOME/centos/usr/bin:$HOME/centos/bin:$PATH"

L='/lib:/lib64:/usr/lib:/usr/lib64'
export LD_LIBRARY_PATH="$L:$HOME/centos/usr/lib:$HOME/centos/usr/lib64"

Nota editada (gracias a @AmitNaidu por señalar mi error):

De acuerdo con la documentación de bash sobre archivos de inicio, cuando se conecta a un servidor a través de ssh, solo se obtiene .bashrc:

Invocado por el demonio de shell remoto

Bash intenta determinar cuándo se está ejecutando con su entrada estándar conectada a una conexión de red, como cuando lo ejecuta el demonio de shell remoto, generalmente rshd, o el demonio de shell seguro sshd. Si Bash determina que se está ejecutando de esta manera, lee y ejecuta comandos desde ~ / .bashrc, si ese archivo existe y es legible.


Ahora bien, si desea instalar muchos paquetes de esa manera, es posible que desee automatizar el proceso. Si es así, eche un vistazo a este repositorio.


Nota adicional: si está intentando instalar alguno de gcc, zlib, make, cmake, git, fish, zsh or tmux , realmente debería considerar usar conda, vea mi otra respuesta.

TL; DR Usa Miniconda, conda-forge es increíble.

curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh

O alternativamente:

curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh > Miniconda.sh
bash Miniconda.sh -b -p ~/conda
# -b is used to specify that this is done "in batch", so skip the EULA prompt
# -p lets you specify where you want conda installed

Paquetes comúnmente buscados:

  • gcc conda install gcc
  • zlib conda install zlib
  • fabricar conda install make
  • hacer conda install cmake
  • git conda install git
  • pescado conda install -c conda-forge fish
  • zsh conda install -c ActivisionGameScience zsh
  • tmux conda install -c conda-forge tmux
    • Este tmux tiene un error con el nombre de la biblioteca ncurse que usa. Puede solucionarlo yendo a su da/lib carpeta y enlace simbólico ln -sT libtinfow.so.6.1 libtinfo.so.6

Por lo demás, puedes intentar https://anaconda.org/search?q=.


He intentado durante mucho tiempo que un administrador de paquetes funcione bien en CentOS / RedHat, pero sin éxito. Lo mejor que pude hacer fue instalar un prefijo de Gentoo en la ubicación correcta en otro CentOS con acceso de root, luego scp a .tar.xz de toda la instalación en el servidor de destino (única forma de obtener un gcc adecuado para el prefijo de Gentoo). yo podría emerge (compilar e instalar) paquetes en el servidor de destino, pero seguía teniendo problemas con los locales y los permisos.


Recientemente logré una instalación de usuario de algunos paquetes interesantes usando conda. A continuación se explica cómo instalarlo desde la línea de comandos:

curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh

Si, como yo, su carpeta de inicio está alojada en una unidad remota (un sistema de archivos de red), es posible que no desee instalarla en su carpeta de inicio, por lo que es posible que desee utilizar algo como mkdir /var/tmp/lo luego especifique una carpeta de instalación como /var/tmp/lo/da durante la instalación.

Entonces podrá instalar bastantes paquetes, aunque tal vez no todos los que deseaba. La mayoría de las veces, si no está en el canal predeterminado, estará en conda-forge. Puede comprobar los paquetes existentes en https://anaconda.org/search?q=


Otros administradores de paquetes que he intentado usar después de conda:

Linuxbrew

Pensé que con eso sería fácil instalar homebrew (linuxbrew) pero sus fuentes son desordenadas y usan una ruta absoluta codificada al intérprete de ruby, que falla porque no es la última versión y así sucesivamente y le di arriba.

Nada

Nix aún requiere que use la carpeta / nix. También lo codificaron y es difícil sedimentarlo correctamente de cada descarga que tiene que hacer durante la instalación (y mucho menos las actualizaciones).

Prefijo de Gentoo

Espero que Gentoo Prefix sea más fácil de instalar directamente ahora que podemos usar gcc en el servidor de destino. – Ok, lo intenté pero encontré errores de permisos durante la instalación (2018-09-28):

portage.exception.OperationNotPermitted: chown(b'~/gentoo/tmp/var/tmp/portage/sys-apps/gentoo-functions-0.12/image/var', 2000, 2000)

PkgSrc

Voy a probar pkgsrc ahora. – Use la versión (más antigua) de EL 6.x de 64 bits si está en CentOS 6 o si encuentra problemas con la versión (G) de LibC con la versión 7.x. – Sin suerte, códigos duros pkgsrc /usr/pkg/sbin y /usr/pkg/bin. Por lo tanto, no se puede usar como usuario, a menos que se configure un entorno fakechroot. Pero nunca he hecho eso y espero problemas de usabilidad.


Comente / responda si tiene éxito en la instalación de cualquier otro administrador de paquetes.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *