ローカルにコンパイルされたソフトウェア管理

ローカルにコンパイルされたソフトウェア管理

ユーザーがアクセスできるコンピュータで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

これを行うより良い方法はありますか?

ベストアンサー1

おすすめ記事