Il est possible d'utiliser yum et rpm pour installer n'importe quel paquet dans le dépôt de la distribution. Voici la recette :
Rechercher le nom du package
Utilisez yum search
.
Télécharger
Téléchargez le package et toutes ses dépendances en utilisant yumdownloader
(qui est disponible sur CentOS par défaut). Vous devrez le passer --resolve
pour obtenir la résolution des dépendances. yumdownloader
télécharge dans le répertoire courant sauf si vous spécifiez un --destdir
.
mkdir -p ~/rpm
yumdownloader --destdir ~/rpm --resolve vim-common
Choisissez un emplacement de préfixe
Il pourrait s'agir de ~
, ~/centos
, ou ~/y
. Si votre maison est lente parce qu'elle est sur un système de fichiers réseau, vous pouvez le mettre en /var/tmp/...
.
mkdir ~/centos
Extraire tous les packages .rpm
Extrayez tous les packages .rpm à l'emplacement de préfixe de votre choix.
cd ~/centos && rpm2cpio ~/rpm/x.rpm | cpio -id
rpm2cpio
génère le fichier .rpm en tant qu'archive .cpio sur stdout.cpio
le lit à partir de stdin-i
signifie extraire (vers le répertoire courant)-d
signifie créer le répertoire manquant
Vous pouvez éventuellement utiliser -v
:verbeux
Configurer l'environnement
Vous devrez configurer la variable d'environnement PATH
et LD_LIBRARY_PATH
pour que les packages installés fonctionnent correctement. Voici l'échantillon correspondant de mon ~/.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"
Note modifiée (merci à @AmitNaidu d'avoir signalé mon erreur) :
Selon la documentation bash sur les fichiers de démarrage, lors de la connexion à un serveur via ssh, seul .bashrc est sourcé :
Invoqué par le démon shell distant
Bash tente de déterminer quand il est exécuté avec son entrée standard connectée à une connexion réseau, comme lorsqu'il est exécuté par le démon shell distant, généralement rshd, ou le démon shell sécurisé sshd. Si Bash détermine qu'il est exécuté de cette manière, il lit et exécute les commandes de ~/.bashrc, si ce fichier existe et est lisible.
Maintenant, si vous souhaitez installer un grand nombre de packages de cette manière, vous pouvez automatiser le processus. Si c'est le cas, jetez un œil à ce dépôt.
Remarque supplémentaire :si vous essayez d'installer l'un des gcc, zlib, make, cmake, git, fish, zsh or tmux
, vous devriez vraiment envisager d'utiliser conda, voir mon autre réponse.
TL;DR Utilisez Miniconda, conda-forge est incroyable.
curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh
Ou, alternativement :
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
Forfaits les plus recherchés :
- gcc
conda install gcc
- zlib
conda install zlib
- faire
conda install make
- cmake
conda install cmake
- git
conda install git
- poisson
conda install -c conda-forge fish
- zsh
conda install -c ActivisionGameScience zsh
- tmux
conda install -c conda-forge tmux
- Ce tmux a un bogue avec le nom de la bibliothèque ncurse qu'il utilise. Vous pouvez contourner ce problème en accédant à votre
da/lib
dossier et lien symboliqueln -sT libtinfow.so.6.1 libtinfo.so.6
- Ce tmux a un bogue avec le nom de la bibliothèque ncurse qu'il utilise. Vous pouvez contourner ce problème en accédant à votre
Pour le reste, vous pouvez essayer https://anaconda.org/search?q=
.
J'ai longtemps essayé de faire fonctionner correctement un gestionnaire de paquets sur CentOS/RedHat, mais sans succès. Le mieux que je pouvais faire était d'installer un préfixe Gentoo au bon endroit sur un autre CentOS avec un accès root, puis scp un .tar.xz
de toute l'installation sur le serveur cible (seul moyen d'obtenir un bon gcc pour Gentoo Prefix). Je pourrais emerge
(construire et installer) des packages sur le serveur cible, mais a continué à rencontrer des problèmes avec les locaux et les autorisations.
J'ai récemment réalisé une installation utilisateur de certains packages intéressants à l'aide de conda. Voici comment l'installer depuis la ligne de commande :
curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh
Si, comme moi, votre dossier personnel est hébergé sur un lecteur distant (un système de fichiers réseau), vous ne voudrez peut-être pas l'installer dans votre dossier personnel, vous voudrez peut-être utiliser quelque chose comme mkdir /var/tmp/lo
puis spécifiez un dossier d'installation comme /var/tmp/lo/da
lors de l'installation.
Vous pourrez alors installer un grand nombre de packages, mais peut-être pas tous ceux que vous vouliez. La plupart du temps, s'il n'est pas dans le canal par défaut, ce sera en conda-forge
. Vous pouvez vérifier les packages existants au https://anaconda.org/search?q=
Autres gestionnaires de paquets que j'ai essayé d'utiliser après conda :
Linuxbrew
Je pensais qu'avec cela, il serait facile d'installer homebrew (linuxbrew) mais leurs sources sont désordonnées et utilisent un chemin absolu codé en dur vers l'interpréteur ruby, qui échoue car ce n'est pas la dernière version et ainsi de suite et ainsi de suite et j'ai donné vers le haut.
Nix
Nix vous oblige toujours à utiliser le dossier /nix. Ils l'ont également codé en dur et il est difficile de le télécharger correctement à partir de chaque téléchargement qu'il doit effectuer pendant l'installation (sans parler des mises à jour).
Préfixe Gentoo
Je m'attends à ce que Gentoo Prefix soit plus facile à installer directement maintenant que nous pouvons utiliser gcc sur le serveur cible. -- Ok, j'ai essayé mais j'ai rencontré des bugs d'autorisations lors de l'installation (2018-09-28) :
portage.exception.OperationNotPermitted: chown(b'~/gentoo/tmp/var/tmp/portage/sys-apps/gentoo-functions-0.12/image/var', 2000, 2000)
PkgSrc
Je vais essayer pkgsrc maintenant. -- Utilisez la version (ancienne) EL 64 bits 6.x si vous utilisez CentOS 6 ou si vous rencontrez des problèmes de version (G)LibC avec la version 7.x. -- Pas de chance, pkgsrc code en dur /usr/pkg/sbin
et /usr/pkg/bin
. Il ne peut donc pas être utilisé en tant qu'utilisateur, à moins de configurer un environnement fakechroot. Mais je n'ai jamais fait cela et je m'attends à des problèmes d'utilisation.
Veuillez commenter/répondre si vous réussissez à installer un autre gestionnaire de paquets.