사용자 액세스만 가능한 컴퓨터에서 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
이를 수행하는 더 좋은 방법이 있습니까?