Gerenciando software compilado localmente

1

Eu tenho que executar um software C ++ em um computador onde eu só tenho acesso de usuário. Existem várias dependências que preciso instalar antes de poder executar o programa em que estou interessado:

TodosusamoGNUAutotoolseeutenhoquepassaralgumasopçõesespecíficaspara./configure.Ocompiladortambémnãoépadrão(elecompilacruzadoparaBlueGene/Q).Parateralgumareprodutibilidade,escreviumscriptBashquebuscaafonte,compilaeinstalaem$HOME/local:

base_flags="-O2 -finline-limit=50000 -Wall -Wpedantic $color_flags"

if ! [[ -d gmp-6.1.1 ]]; then
    wget https://gmplib.org/download/gmp/gmp-6.1.1.tar.xz
    tar -xf gmp-6.1.1.tar.xz
fi

pushd gmp-6.1.1
cflags="$base_flags"
cxxflags="$base_flags"
if ! [[ -f Makefile ]]; then
    ./configure $base_configure CFLAGS="$cflags"
fi
if ! [[ -f build-succeeded ]]; then
    nice make $make_smp_flags
    make install
    touch build-succeeded
    pushd $prefix/lib
    rm -f *.so *.so.*  # Force static linkage.
    popd
fi

# Similar stanzas for the other projects.

No meu computador pessoal em que tenho acesso de root, eu construo pacotes RPM para todos os softwares que eu quero instalar, deixo os RPMs construírem o Open Build Service hospedado pelo projeto openSUSE e os instalo com o Ansible. Trabalhar no computador remoto parece com o Linux from Scratch ou algo assim, não posso atualizar ou desinstalar algo e tenho que lembrar das versões e sinalizadores usados.

Tudo o que posso imaginar é tentar emular pacotes RPM definindo DESTDIR e --prefix de tal forma que eu possa TAR os produtos de compilação e, em seguida, não TAR que em $HOME/local . Então eu iria escrever algum desinstalador / atualizador que lista o conteúdo do arquivo e remove esses arquivos de $HOME/local .

Existe alguma maneira melhor de fazer isso?

    
por Martin Ueding 20.11.2016 / 15:41

0 respostas