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ó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 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.