Como criar um ambiente para bibliotecas e binários?

Como criar um ambiente para bibliotecas e binários?

Eu tenho uma ferramenta que não pode ser executada no meu Desktop Linux. Então, eu gostaria de criar uma pasta que contenha todos os seus requisitos e executá-la na pasta. Máquina virtual ou contêiner não é uma solução aqui por algum motivo.

Eu inicializei um Ubuntu Trusty no /data/LTS.e tenho tudo que a ferramenta precisa instalada executando um chroot jail no /data/LTS.

Agora eu emito:

PATH=/data/LTS/usr/local/sbin:/data/LTS/usr/local/bin:/data/LTS/usr/sbin:/data/LTS/usr/bin:/data/LTS/sbin:/data/LTS/bin \
LD_LIBRARY_PATH=/data/LTS/usr/local/lib:/data/LTS/usr/lib/x86_64-linux-gnu:/data/LTS/usr/lib:/data/LTS/lib/x86_64-linux-gnu:/data/LTS/lib \
PYTHONHOME=/data/LTS/usr \
/data/LTS/usr/bin/python /tmp/test.py

Eu recebo:

Inconsistência detectada por ld.so: dl-close.c: 759: _dl_close: Asserção `map->l_init_call' falhou!

O que devo fazer?

Responder1

Isso parece um problema com o carregador. Ou seja, você está usando o carregador do ambiente externo.

Tente prefixar o comando com /data/LTS/lib/ld.so ou ld-XYso Este é o carregador e ao fazer isso você usará aquele do sistema fechado.

Responder2

Razão encontrada. É por causa do caminho absoluto para ld.so. Sem modificações adicionais, /data/LTS/usr/bin/python usará ld.so do sistema real em vez do ambiente falso.

/data/LTS/lib/ld.so /data/LTS/usr/bin/python /tmp/test.pyfunciona.

informação relacionada