GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer des packages sous Linux (CentOS) sans utilisateur root avec gestion automatique des dépendances ?

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 symbolique ln -sT libtinfow.so.6.1 libtinfo.so.6

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.


Linux
  1. Comment installer Nextcloud avec ISPConfig 3.1

  2. Ajouter un utilisateur au groupe sous Linux, comment le faire (avec exemples)

  3. Comment installer Erlang sur Rocky Linux/Alma Linux/CentOS 8

  4. Comment gérer CentOS Linux avec une interface graphique

  5. Installer WordPress sur Linux avec Apache

Comment installer DRBD sur CentOS Linux

Comment installer Java 14 sur Linux, Ubuntu, CentOS

Comment limiter l'utilisateur root dans CentOS

Comment installer Python 2.7 sur CentOS 7.1 ou 6.7 avec Anaconda

Comment installer Drupal sur CentOS 7 avec Apache

Comment installer WordPress sur CentOS 7.1 avec Apache