Comment déplacer correctement le programme installé configure --prefix = XX dans un autre répertoire?


1

Considérez deux utilisateurs communs: A & amp; B, ni l'un ni l'autre n'a le privilège sudo.

/home/A  A  A  rwx------
/home/B  B  B  rwx------

A voulu construire git à partir du code source:

cd /home/A/third-src
wget & extract git.source
./configure --prefix=/home/A/third/git
make install  # install without root
export PATH & LD_LIBRARY_PATH
# Here A can use git correctly

Maintenant, B voulait réutiliser le git de A, alors B a demandé à root de

cp -r /home/A/third/git /home/B/third/git
chown -R B:B /home/B/third/git

B exporté PATH & amp; LD_LIBRARY_PATH pour le git de B et devrait utiliser git correctement, mais cela ne fonctionne pas !! git ne se plaint pas de l'autorisation de lire le fichier dans / home / A / third / git:

git init
fatal: unable to access '/home/A/third/git/etc/gitconfig': Permission denied

Il semble que --prefix place le chemin absolu dans les fichiers exécutables.

strings bin/git  # it really lists /home/A/third/git

Comment le réparer? Existe-t-il un moyen canonique de partager un programme installé localement avec d'autres personnes sans utiliser root

Merci d'avance.

Réponses:


1

Il y a un problème avec votre permission qui inclut l'utilisateur, le groupe, etc. Voici une raison pour le comportement git:

  1. Git lit les paramètres de configuration à partir d’une variété de chemins et <USER> n'a pas accès à certains d'entre eux.
  2. Git tente de lire le paramètre de configuration racine au lieu des paramètres de configuration en raison du script de démarrage utilisant la commande su avec l'option ne pas réinitialiser les variables d'environnement (-m):

    /bin/su -m $USER -c "cd $BASE/logs && $BASE/bin/startup.sh &> /dev/null"

Vous pouvez essayer quelques chose à réparer:

  1. Fixer la permission:

    chown <USER>.<GROUP> -R /home/<USER>/.config

    chown <USER>.<GROUP> -R /home/<USER>/.gitconfig

  2. Recompiler en utilisant les options par défaut:

Dans la deuxième partie de votre réponse, comment deux utilisateurs peuvent-ils partager un programme installé localement?

Voici quelques façons dont je peux penser maintenant:

  1. Ajouter un utilisateur B à l'utilisateur UNE Liste de contrôle d'accès (ACL) à l'aide de setfacl commander.
  2. Créez un groupe séparé avec le paramètre d'autorisation approprié, etc., et ajoutez A et B dans ce groupe.
  3. Installez le programme dans cet espace commun que les deux peuvent utiliser. Comme un chemin non standard qui peut inclure un répertoire ayant accès aux deux ou une partition séparée ayant accès à chacun en fonction de vos besoins.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.