Instalando um pacote localmente para um usuário - melhores práticas?

14

Eu quero instalar o Git localmente em um usuário em um servidor RHEL (não tenho acesso root) Qual seria o seu modo mais limpo / organizado de instalar software em uma conta de usuário local?

  • Instalando tudo no diretório inicial desses usuários?
  • Como seria o layout do diretório?
  • Você instalaria a partir da origem ou do RPM?
  • Se a partir do RPM você usasse YUM ou RPM?
por wiredin 25.04.2013 / 17:41

3 respostas

13

Existem maneiras de instalar o rpms em um diretório de usuários usando rpm , mas não acredito que seja direto. Eu não acredito que haja uma maneira com yum .

Minha prática padrão tornou-se a compilação da fonte para um diretório local em minha casa

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

Eu faço o download da origem, como faria com /usr/local quando tenho raiz, por exemplo, em ~/local/git .

Ao compilar, defino o prefixo para o diretório local

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

Em seguida, adiciono ~/local/bin ao meu $ PATH em .bash_profile .

É claro que a dificuldade de instalar a partir da fonte é que você não obtém a resolução automática de dependência. Se você achar que precisa instalar dependências, compile e instale-as como acima. Então quando você compila git , você precisa atualizar os sinalizadores de compilação para que eles olhem no local correto para 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'
    
por 25.04.2013 / 18:01
12

Um arquivo .rpm é na verdade uma forma de cpio archive, que é muito parecido com uma forma simples de tar . O utilitário rpm2cpio provavelmente está instalado no sistema e não requer privilégios para usar; ele escreve para o padrão, portanto, para converter:

rpm2cpio whatever.rpm > whatever.cpio

Há um man cpio que você pode olhar para si mesmo, mas o que você quer fazer agora é alimentar o repositório para o cpio no modo "copiar em":

cat whatever.cpio | cpio -i

É muito provável que o material seja organizado em uma árvore de diretórios para que os arquivos entrem em locais apropriados (bin, etc, etc.). Se eles não existirem no 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ê deseja 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 propósito quando são compiladas.

A criação 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 midnight commander ( mc ), e provavelmente outros navegadores de arquivos, permitirá que você navegue em uma hierarquia de rpm ou cpio (ou compacted tar ou zip) e copie arquivos individuais como se o arquivamento foram descompactados (cria um sistema de arquivos temporário para navegar com o conteúdo do arquivo).

    
por 25.04.2013 / 19:07
0

Esta é uma alternativa (não usar o yum) e a permissão será maluca, mas você pode chown para o usuário alvo depois: - também é um sucesso ou um 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.

    
por 16.03.2017 / 16:53