ユーザーがアクセスできるコンピュータで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.
rootアクセス権を持つパーソナルコンピュータからインストールするすべてのソフトウェアのRPMパッケージをビルドし、openSUSEプロジェクトでホストされているOpen Build ServiceにRPMをビルドしてから、Ansibleを使用してインストールします。リモートコンピュータでの作業は、Linuxを使用して最初から起動するのと同じで、アップグレードまたは削除できず、使用しているバージョンとフラグを覚えておく必要があります。
私が考えることができるのは、製品をTARでビルドしDESTDIR
て--prefix
から$HOME/local
。$HOME/local
これを行うより良い方法はありますか?