Instala os arquivos de desenvolvimento localmente para construir no sistema sem acesso root?

8

Existe um servidor em que eu trabalho, executando uma versão mais antiga do Linux. Eu não tenho acesso root ao sistema, então eu queria construir uma versão mais recente de uma ferramenta que eu uso muito (Vim 7.3). Eu imaginei que iria apenas construí-lo e instalá-lo em ~ / bin. No entanto, ele requer arquivos de desenvolvimento ncurses que não estão instalados em todo o sistema. Eu encontrei o ncurses-devel rpm e extraí as pastas 'lib' e 'include', onde eu as colocaria e como eu contaria o script ./configure para localizá-las para que eu pudesse configurar e construir o pacote localmente?

Edit: Acabei trabalhando em torno disso instalando o sistema operacional idêntico no Virtualbox, e construindo o pacote lá e copiando os binários.

    
por postfuturist 16.09.2010 / 01:37

4 respostas

12

Eu fiz isso com bastante frequência no meu último trabalho - a solução que parecia funcionar melhor era criar um diretório ~ / usr e usar o argumento --prefix para apontar os scripts ./configure na direção certa. Aqui estão os passos:

  • Crie o diretório ~ / usr e inclua os diretórios lib e bin abaixo dele.
  • No seu script .profile, .bashrc ou outro script de inicialização do shell, adicione o seguinte (ou equivalente no dialeto do shell):
    export PATH=$PATH:~/usr/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/usr/lib
    export C_INCLUDE_PATH=$C_INCLUDE_PATH:~/usr/include
    export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:~/usr/include
  • Ao criar pacotes, use ./configure --prefix=/home/<username>/usr

Esse arranjo funcionou para mim na maioria das situações em que eu precisava construir coisas no espaço do usuário. A parte mais difícil é encontrar e construir todas as dependências de que você precisa, mas isso só requer um googling ou um uso criterioso da funcionalidade 'get source' do gerenciador de pacotes.

    
por 16.09.2010 / 02:04
3

Normalmente, você deve ser capaz de reconfigurar e alterar o código para definir um novo local em seu diretório pessoal ou outro caminho para todas as bibliotecas e programas ...

Mas, IMHO, a maneira mais fácil (se você tem muito espaço) é usar o chroot em um subdiretório com todas as distro linux instaladas nele. De cuorse como um usuário normal, você não pode usar chroot , mas você pode usar essas ótimas ferramentas: fakechroot e fakeroot

Para criar o sistema de arquivos chroot, eu gosto de implantar um diretório com o Debian (ou qualquer derivado Debian como o ubuntu) usando o debootstrap utilitário.

Portanto, o procedimento é fácil (não entrarei em detalhes técnicos, leia os manuais de comando):

  • Obtenha e instale: ferramentas fakeroot, fakechroot e debootstrap
  • crie um subdiretório usando o debootstrap (só consegui executá-lo como root. Você pode fazer isso em outro computador e copiar os binários, se necessário)
  • Executar: fakechroot fakeroot chroot mydebian-dir

Se você precisar de mais detalhes, acho que eu tinha um script em algum lugar para fazer tudo isso.

    
por 16.09.2010 / 14:31
1

Outra solução para esse problema é usar o Prefixo do Gentoo, como fazem os usuários do MacOSX e outras plataformas (solaris, AIX):

link

Ele irá compilar a pilha do Gentoo (com portage) em um local $ PREFIX. Ele usa os pacotes do Gentoo, a maioria dos pacotes suporta o uso dessas configurações.

O Portage irá acompanhar todas as dependências, você terá a última versão do software, foi testado pela comunidade ...

    
por 13.01.2012 / 14:50
1

Se prefix=/home/foo/usr não funcionar, tente:

CFLAGS=-I/home/foo/usr/include LDFLAGS=-L/home/foo/usr/lib ./configure
    
por 01.02.2013 / 12:13