GNU/Linux >> Tutoriales Linux >  >> Linux

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

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

Encuentre el nombre del paquete

Usa yum search .

Descargar

Descarga el paquete y todas sus dependencias usando yumdownloader (que está disponible en CentOS por defecto). Tendrás que pasarlo --resolve para obtener la resolución de dependencia. yumdownloader se descarga al directorio actual a menos que especifique un --destdir .

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

Elija una ubicación de prefijo

Podría 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

Extraer todos los paquetes .rpm

Extraiga todos los paquetes .rpm a la ubicación de prefijo elegida.

cd ~/centos && rpm2cpio ~/rpm/x.rpm | cpio -id
  • rpm2cpio genera el archivo .rpm como archivo .cpio en la salida estándar.
  • cpio lo lee desde stdin
  • -i significa extraer (al directorio actual)
  • -d significa crear el directorio faltante

Opcionalmente, puede 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 los archivos de inicio, cuando se conecta a un servidor a través de ssh, solo se obtiene .bashrc:

Invocado por un 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 se puede leer.

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

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


TL;DR Use 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
  • hacer conda install make
  • cmake conda install cmake
  • git conda install git
  • peces 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 probar https://anaconda.org/search?q= .

He intentado durante mucho tiempo hacer 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 al servidor de destino (única forma de obtener un gcc adecuado para el prefijo de Gentoo). Podría emerge (construir e instalar) paquetes en el servidor de destino, pero siguió teniendo problemas con los locales y los permisos.

Recientemente logré una instalación de usuario de algunos paquetes interesantes usando conda. Aquí 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 quizás desee usar 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 una gran cantidad de 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 verificar 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 están desordenadas y usan una ruta absoluta codificada para el intérprete de ruby, que falla porque no es la última versión y así sucesivamente y le di arriba.

nada

Nix todavía requiere que uses la carpeta /nix. También lo codificaron y es difícil configurarlo correctamente desde 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)

OrigenPaquete

Voy a probar pkgsrc ahora. -- Use la versión (más antigua) EL 6.x de 64 bits si está en CentOS 6 o si tiene problemas con la versión (G)LibC con la versión 7.x. -- Sin suerte, códigos duros de 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 logra instalar cualquier otro administrador de paquetes.


Linux
  1. Cómo instalar Erlang en Rocky Linux/Alma Linux/CentOS 8

  2. Cómo administrar CentOS Linux con una GUI

  3. Instalar WordPress en Linux con Apache

  4. UNIX/Linux:cómo eliminar un usuario raíz equivalente (usuario no raíz con UID 0)

  5. ¿Cómo sé los permisos de un usuario específico en Linux con acceso de root?

Cómo instalar DRBD en CentOS Linux

Cómo instalar Java 14 en Linux, Ubuntu, CentOS

Cómo limitar el usuario root en CentOS

Cómo instalar Python 2.7 en CentOS 7.1 o 6.7 con Anaconda

Cómo instalar Drupal en CentOS 7 con Apache

Cómo instalar WordPress en CentOS 7.1 con Apache