web-dev-qa-db-fra.com

Installation d'un paquet localement à un utilisateur - meilleures pratiques?

Je souhaite installer Git localement vers un utilisateur sur un serveur RHEL (je n'ai pas d'accès root) Quelle serait votre mode d'installation de votre logiciel propre/la plus organisé à un compte d'utilisateur local?

  • Tout installer dans cet annuaire des utilisateurs?
  • À quoi ressemblerait la disposition du répertoire?
  • Souhaitez-vous installer à partir de la source ou du RPM?
  • Si de RPM utiliseriez-vous Yum ou RPM?
18
wiredin

Il existe des moyens d'installer des RPM dans un répertoire utilisateur à l'aide de rpm, mais je ne crois pas qu'il soit simple. Je ne crois pas qu'il y ait un moyen avec yum.

Ma pratique standard est devenue compiler de la source à un répertoire local dans ma maison

$ mkdir ~/local
$ mkdir ~/local/bin
$ mkdir ~/local/lib
$ mkdir ~/local/include

Je télécharge la source comme je le ferais à /usr/local Quand j'ai racine, par exemple, dans ~/local/git.

Lors de la compilation, je définit le préfixe sur le répertoire local

$ configure --prefix=/home/user_name/local
$ make
$ make install

J'ajoute ensuite ~/local/bin à ma cheminée dans .bash_profile.

Bien sûr, la douleur avec l'installation de la source est que vous n'obtenez pas la résolution automatique de la dépendance. Si vous constatez que vous devez installer des dépendances, les compiler et les installer comme ci-dessus. Ensuite, lorsque vous compilez git, vous devez mettre à jour les indicateurs de compilation afin qu'ils recherchent dans le bon emplacement des bibliothèques de dépendance et incluent des fichiers:

./configure --prefix=/home/user_name/local LDFLAG='-L/home/user_name/local/lib' CFLAGS='-I/home/user_name/local/include' CPPFLAGS='-I/home/user_name/local/include' CXXFLAGS='-I/home/user_name/local/include'
17
drs

Un fichier .RPM est en fait une forme de cpio archive, qui ressemble beaucoup à une forme simple de tar. Les rpm2cpio utilitaire est probablement installé sur le système et ne nécessite pas de privilèges à utiliser; Il écrit à la standard, afin de convertir:

rpm2cpio whatever.rpm > whatever.cpio

Il y a un man cpio Vous pouvez regarder vous-même, mais ce que vous voulez maintenant faire est de nourrir les archives à CPIO en mode "Copier":

cat whatever.cpio | cpio -i

Très probablement, le produit est organisé dans un arborescence de répertoire afin que les fichiers entrent dans les emplacements appropriés (bac, etc.). Si ceux-ci n'existent pas dans votre PWD, vous obtiendrez une erreur, mais cela répertoriera les fichiers de l'archive (vous pouvez obtenir la même chose avec le -t/--list changer). Si vous souhaitez créer automatiquement les répertoires, utilisez -d. Donc, un moyen rapide de déballer un RPM:

rpm2cpio whatever.rpm | cpio -i -d

Vous pouvez utiliser ceci pour installer en $ à la maison. Le seul problème sera si le programme prévoit de trouver des trucs dans /etc, etc., puisque beaucoup de choses ont leur emplacement d'installation, codé dur dans un but quelconque quand ils sont compilés.

Le bâtiment à partir de la source est probablement une meilleure option (puisque vous pouvez fournir le bon endroit), mais si vous pouvez obtenir cela pour travailler dans la mesure où il est rapide et rapide.

En outre, le navigateur de fichier Commander de Midnight (mc), et probablement d'autres navigateurs de fichiers en plus, vous permettra de naviguer dans une hiérarchie de RPM ou de goudron CPIO (ou CPIO) et de copier des fichiers individuels comme si l'archive ont été décompressés (cela crée un système de fichiers temporaire pour parcourir le contenu des archives de celui-ci).

13
goldilocks