로컬로 컴파일된 소프트웨어 관리

로컬로 컴파일된 소프트웨어 관리

사용자 액세스만 가능한 컴퓨터에서 C++ 소프트웨어를 실행해야 합니다. 관심 있는 프로그램을 실행하려면 먼저 여러 가지 종속성을 설치해야 합니다.

여기에 이미지 설명을 입력하세요.

이 모든 것은 GNU Autotools를 사용하는데, 이 ./configure컴파일러는 또한 비표준입니다(BlueGene/Q에 대해 크로스 컴파일합니다). 재현성을 확보하기 위해 Bash 스크립트를 작성하여 소스 코드를 가져와서 컴파일하고 설치했습니다 $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.

루트 액세스 권한이 있는 개인용 컴퓨터에서 설치하려는 모든 소프트웨어에 대한 RPM 패키지를 빌드하고, openSUSE 프로젝트에서 호스팅하는 Open Build Service에 RPM을 빌드한 후 Ansible을 사용하여 설치합니다. 원격 컴퓨터에서 작업하는 것은 Linux를 사용하여 처음부터 시작하는 것과 같아서 업그레이드하거나 제거할 수 없으며 사용 중인 버전과 플래그를 기억해야 합니다.

내가 생각할 수 있는 것은 제품 을 TAR로 빌드 DESTDIR--prefix다음 $HOME/local.$HOME/local

이를 수행하는 더 좋은 방법이 있습니까?

관련 정보