Installation d'un package localement auprès d'un user – meilleures pratiques?

Je veux installer localement Git à un user sur un server RHEL (je n'ai pas d'access root) Quelle serait votre façon la plus propre / la plus organisée d'installer un logiciel sur un count d'user local?

  • Installer tout dans le directory de base de cet user?
  • À quoi ressemblerait la layout du directory?
  • Souhaitez-vous installer à partir de la source ou RPM?
  • Si à partir de RPM utiliseriez-vous YUM ou RPM?

Il y a des façons d'installer des rpms dans un directory user en utilisant rpm , mais je ne crois pas que ce soit simple. Je ne crois pas qu'il y ait un moyen avec yum .

Ma pratique habituelle est de comstackr de la source vers un directory local chez moi

 $ 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 la racine, par exemple, dans ~/local/git .

Lors de la compilation, je place le préfixe dans le directory local

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

J'ajoute alors ~/local/bin à mon $ PATH dans .bash_profile .

Bien sûr, la difficulté avec l'installation de la source est que vous n'obtenez pas la résolution de dépendance automatique. Si vous trouvez que vous devez installer des dependencies, comstackz-les et installez-les comme ci-dessus. Ensuite, lorsque vous comstackz git , vous devez mettre à jour les indicateurs de compilation pour qu'ils apparaissent à l'location correct des bibliothèques de la dépendance et incluent les files:

 ./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' 

Un file .rpm est en fait une forme d'archive cpio , qui ressemble beaucoup à une forme simple de tar . L'utilitaire rpm2cpio est probablement installé sur le système et ne nécessite pas de privilèges; il écrit à 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 est de nourrir l'archive en cpio en mode "copyr en":

 cat whatever.cpio | cpio -i 

Il est très probable que le contenu soit organisé dans une arborescence de directorys afin que les files soient placés dans des locations appropriés (bin, etc, etc.). Si ceux-ci n'existent pas dans votre pwd, vous obtiendrez une erreur, mais cela --list les files dans l'archive (vous pouvez get la même chose avec le commutateur -t / --list ). Si vous souhaitez créer les directorys automatiquement, utilisez -d . Donc, un moyen rapide de déballer un rpm:

 rpm2cpio whatever.rpm | cpio -i -d 

Vous pouvez utiliser ceci pour installer dans $ HOME. Le seul problème sera si le programme s'attend à find des trucs dans /etc , etc., puisque beaucoup de choses ont leur location d'installation codé dans un but quelconque quand ils sont compilés.

Construire à partir de la source est probablement une meilleure option (puisque vous pouvez fournir l'location correct), mais si vous pouvez le faire fonctionner dans tous les cas, c'est rapide et simple.

De plus, le browser de files midnight order ( mc ), et probablement d'autres browsers de files, vous permettra de naviguer dans une hiérarchie rpm ou cpio (ou tar compressé ou zip) et de copyr des files individuels comme si l'archive était décompressée un système de files temporaire à parcourir avec le contenu de l'archive).

Ceci est une alternative (ne pas utiliser yum) et la permission sera loufoque mais vous pouvez faire une chown à l'user cible par la suite: – aussi c'est un hasard 🙁

 #-## Download all dependency for the RPM -- #sudo yum install yum-utils #sudo yumdownloader --resolve --destdir ~/download bash #-## Install all downloaded to an alternate root #sudo rpm --initdb --root <user_home_dir> #sudo rpm --root <user_home_dir> -Uvh --nodeps ~/download/* 

Ensuite, ajoutez les locations appropriés à votre path.