Como mover corretamente configure --prefix = XX programa instalado para outro diretório?

1

Considere dois usuários comuns: A & B, nem tem privilégio de sudo.

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

A queria criar o git a partir do código-fonte:

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

Agora B queria reutilizar o git de A, então B pediu root

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

B exportou PATH & LD_LIBRARY_PATH para o git de B, e espera usar o git corretamente, mas não funciona !! git não reclama permissão para ler arquivos em / home / A / third / git:

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

Parece que o prefixo colocou o caminho absoluto em arquivos executáveis.

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

Como consertar isso? Existe uma maneira canônica de compartilhar o programa instalado localmente para outras pessoas sem usar o root?

Obrigado antecipadamente.

    
por ShenLei 04.11.2016 / 02:47

1 resposta

1

Existe um problema com a sua permissão, que inclui usuário, grupo etc. Aqui está alguma razão para o comportamento do git:

  1. O Git lê as configurações de uma variedade de caminhos e o <USER> não tem acesso a alguns deles.
  2. O Git tenta ler a configuração de configuração raiz em vez das configurações de configuração devido ao script inicial usando o comando su com opção de não redefinir variáveis de ambiente (-m):

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

Você pode tentar algumas coisas para corrigir:

  1. Corrigir a permissão:

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

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

  2. Recompile usando as opções padrão:

A segunda parte da sua resposta é como dois usuários podem compartilhar o programa instalado localmente?

Existem algumas maneiras em que posso pensar agora:

  1. Adicione o usuário B à lista A Lista de controle de acesso (ACL) usando o comando setfacl . li>
  2. Crie um grupo separado com a configuração de permissão adequada etc. e adicione A e B nesse grupo.
  3. Instale o programa nesse espaço comum que ambos podem usar. Como o caminho não padrão, que pode incluir um diretório que tenha acesso a ambas ou a uma partição separada que tenha acesso a cada uma, dependendo de suas necessidades.
por 04.11.2016 / 05:13