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ólicoln -sT libtinfow.so.6.1 libtinfo.so.6
- Este tmux tiene un error con el nombre de la biblioteca ncurse que usa. Puede solucionarlo yendo a su
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.