O Debian possui algum tipo de ambiente virtual para make install?

5

Se alguém usou um virtualenv em Python, ele sabe que podemos executar scripts em seu próprio ambiente, instalando todas as bibliotecas necessárias que não afetarão a distribuição principal do python.

Temos algo semelhante em um mundo Linux (Debian) para make utility?

  1. Caso 1: eu fiz o download de fontes e sei de quais dependências eu preciso. Eu colocar bibliotecas em algum lugar no diretório home e eu digo explicitamente para make utility onde procurá-los.
  2. Caso 2: Eu executo algum tipo de virtualenv para make utility e chamo lá apt-get install lib-required-dev para que as bibliotecas baixadas sejam colocadas nesse ambiente virtual e não poluam meu sistema operacional. E então eu corro make .
por Druid 02.10.2013 / 23:41

2 respostas

4

O primeiro caso é relativamente fácil, pelo menos para alguns programas. A maioria dos pacotes de fontes inclui um script configure que verifica a disponibilidade das bibliotecas necessárias. Esses scripts geralmente terão opções para especificar caminhos de pesquisa. Por exemplo, --lib-prefix . Dessa forma, você nem precisa modificar o Makefile sozinho. Agora, se isso funcionará ou não, dependerá da complexidade das dependências, mas vale a pena tentar.

Para a opção 2, você tem o programa chroot :

   chroot - run command or interactive shell with special root directory

chroot precisa que determinados arquivos e diretórios estejam presentes. Os detalhes dependerão do que exatamente você precisa fazer (por exemplo, você precisa de /dev ? Você precisa de /proc ?). Você pode obter um ambiente chroot mínimo como este (como root):

mkdir foo
cp -r /bin /lib /lib64 foo/
chroot foo

O último comando irá movê-lo para o diretório foo e executar seu shell padrão tratando foo as / . O procedimento que descrevi é uma simplificação. Você não precisa de tudo em /lib , por exemplo. Você provavelmente também precisará de mais diretórios para estar presente, dependendo do que você deseja fazer. Por fim, você também pode usar mount bind para vincular os diretórios ao ambiente chroot , mas não se quiser que ele seja completamente independente de seu sistema operacional real.

Uma maneira fácil de criar um playground é pegar uma pequena partição e instalar um sistema mínimo nessa partição. Você pode então simplesmente deixar o chroot assim (sempre como root):

mount /dev/sda2 foo/
chroot foo/

Obviamente, altere sda2 para qualquer partição na qual você instalou seu sistema mínimo. Para mais informações, consulte estes links:

por 03.10.2013 / 00:09
3

A resposta de Terdon está no local.

Outra abordagem, um pouco mais envolvida, porém mais durável, seria criar um ambiente virtual (virtualbox é minha vez.) Crie uma nova máquina virtual com uma versão básica / padrão do sistema operacional que estiver usando, salve o estado dessa máquina, e comecei a instalar quaisquer dependências como se você estivesse em um sistema regular. Quando você terminar de compilar, poderá redefinir a VM de volta ao seu estado original.

É importante notar que, embora você possa absolutamente fazer isso sem cabeça, ou seja, em um ambiente de servidor remoto, é muito mais fácil criar a VM em uma máquina local (ou em uma máquina remota com uma sessão X encaminhada). VM base que você sabe acessar, você pode exportar a VM.

    
por 03.10.2013 / 00:28