Quero instalar o Git localmente para um usuário em um servidor RHEL (não tenho acesso root). Qual seria a maneira mais limpa/organizada de instalar software em uma conta de usuário local?
- Instalando tudo no diretório inicial dos usuários?
- Como seria o layout do diretório?
- Você instalaria a partir do código-fonte ou RPM?
- Se fosse do RPM você usaria YUM ou RPM?
Responder1
Existem maneiras de instalar rpms em um diretório de usuário usando rpm
, mas não acredito que seja simples. Eu não acredito que haja uma maneira yum
.
Minha prática padrão passou a ser compilar do código-fonte para um local
diretório em minha casa
$ mkdir ~/local
$ mkdir ~/local/bin
$ mkdir ~/local/lib
$ mkdir ~/local/include
Eu baixo o código-fonte como faria /usr/local
quando tenho root, por exemplo, em ~/local/git
.
Ao compilar eu defino o prefixo para o local
diretório
$ configure --prefix=/home/user_name/local
$ make
$ make install
Em seguida, adiciono ~/local/bin
ao meu $PATH em .bash_profile
.
Obviamente, o problema de instalar a partir do código-fonte é que você não obtém resolução automática de dependências. Se você achar que precisa instalar dependências, compile e instale-as conforme acima. Então, ao compilar git
, você precisa atualizar os sinalizadores de compilação para que procurem no local correto as bibliotecas da dependência e incluam arquivos:
./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'
Responder2
Um arquivo .rpm é na verdade uma forma de cpio
arquivo, que é muito parecida com uma forma simples de tar
. O rpm2cpio
utilitário provavelmente está instalado no sistema e não requer privilégios para uso; ele grava para padronizar, então para converter:
rpm2cpio whatever.rpm > whatever.cpio
Você man cpio
pode olhar para si mesmo, mas o que você quer fazer agora é alimentar o arquivo para cpio no modo "copiar em":
cat whatever.cpio | cpio -i
Muito provavelmente o material está organizado em uma árvore de diretórios para que os arquivos vão para os locais apropriados (bin, etc, etc.). Se eles não existirem em seu pwd, você receberá um erro, mas isso listará os arquivos no arquivo (você pode obter a mesma coisa com a opção -t
/ --list
). Se você quiser criar os diretórios automaticamente, use -d
. Então, uma maneira rápida de descompactar um rpm:
rpm2cpio whatever.rpm | cpio -i -d
Você pode usar isso para instalar em $HOME. O único problema será se o programa espera encontrar coisas em /etc
, etc., já que muitas coisas têm seu local de instalação codificado para qualquer finalidade quando são compiladas.
Construir a partir do código-fonte é provavelmente uma opção melhor (já que você pode fornecer o local correto), mas se você conseguir que isso funcione em qualquer caso, será rápido e simples.
Além disso, o navegador de arquivos do Midnight Commander ( mc
), e provavelmente outros navegadores de arquivos, permitirá que você navegue em uma hierarquia rpm ou cpio (ou tar compactado ou zip) e copie arquivos individuais como se o arquivo estivesse descompactado (cria um sistema de arquivos temporário para navegar com o conteúdo do arquivo nele).
Responder3
Esta é uma alternativa (sem usar yum) e a permissão será maluca, mas você poderá chown
para o usuário alvo depois: - também é um acerto ou erro :-(
#-## 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/*
Em seguida, adicione locais apropriados ao seu caminho.