rhel 6 x86_64に最新のgccをインストールする

rhel 6 x86_64に最新のgccをインストールする

gccバージョン4.4.7がインストールされているRHEL 6サーバーがあります。 gccのバージョンを更新したいです(現在のバージョンは4.8のようです)。 Yum アップデートが機能しません。返品、SOはCentOSに関する同様の質問に答えます。動作しません。私は受け入れられた答えの方法に従い、出力は「testing-1.1-devtools-6のストレージデータの取得中にエラーが発生しました。ストアが見つかりませんでした」。また、CentOsのアプローチに従うべきかどうかはわかりません。

RHEL 6 x86_64サーバーでgccを更新した人はいますか?

答え1

これまでの最も簡単な方法は、YUMリポジトリを介して提供されるバイナリビルドを使用することです。 1つのオプションは、次を使用することです。ジャンプ5インチリポジトリ。特にこのページは次のとおりです。gcc - さまざまなコンパイラ(C、C ++、Objective-C、Java ...)。 CentOS 6.3または6.4で動作する4.8.2を提供します。事前に更新できます。

$ sudo yum update

もう一つの選択肢は、以下を活用することです。開発者ツールセット特にScientific Linuxが提供するバンドル版です。

フォローするインストールに関する注意デフォルトでは、次の手順2を実行します。

ストレージの追加
$ sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo \
    http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
$ wget -O /etc/yum.repos.d/slc5-devtoolset.repo \
    http://linuxsoft.cern.ch/cern/devtoolset/slc5-devtoolset.repo
開発ツールセットのインストール
$ sudo yum install devtoolset-2

アップデート#1

YUMリポジトリのhop5が削除されたように見えるので、上記のハイライトされたdevtoolsetメソッドを使用することが唯一の方法です。

devtoolsetを介してインストールされた追加の例は、このGitHub Gistで強調されています。CentOS 6にgcc 4.8とLinuxbrewをインストールする

答え2

Red Hat ソフトウェアコレクションGCC 4.9に同梱すると、このチャンネルを有効にすることを検討できます。

答え3

これで、rhel6用の最新のgccバージョン(4.7.xから5.3.1まで)の複数のバージョンを構築しました。

RedhatのJakub Jelinekのおかげで、プロセスは非常に簡単になりました。kojiでFedora gccビルドが見つかりました。

必要なバージョンの最新のsrc rpmを入手してください(例:5.3.1)。

rpm -qpR src.rpmデフォルトでは、次を公開してバージョン要件を見つけてビルド要件を決定できます。

rpm -qpR gcc-5.3.1-4.fc23.src.rpm | grep -E '= [[:digit:]]'
binutils >= 2.24
doxygen >= 1.7.1
elfutils-devel >= 0.147
elfutils-libelf-devel >= 0.147
gcc-gnat >= 3.1
glibc-devel >= 2.4.90-13
gmp-devel >= 4.1.2-8
isl = 0.14
isl-devel = 0.14
libgnat >= 3.1
libmpc-devel >= 0.8.1
mpfr-devel >= 2.2.1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
systemtap-sdt-devel >= 1.3

今退屈な部分が出てきます。デプロイ用に提供された yum より高いパッケージは、以下からダウンロードする必要があります。、すべての依存関係要件が満たされるまで、プロセスを繰り返し繰り返します。

私はだまされた、ところで。
私は通常、gnuツールを使用して正しいビルドツリーを含め、正しく配置され、名前付き要件を使用するようにrpmを再パッケージするので、gmp/mpc/mpfr/isl(cloogはもう必要ありません)をダウンロードします正しいパスに解凍します。新しい(肥大した)tarは、パッケージ化(rpm)バージョンに関係なく、新しいsrc rpm(仕様ファイルがわずかに変更された)に再構築されます。私が知っている人はADAを使う人がいないので、仕様ファイルからgnat関連部分を削除してビルドプロセスをさらに簡素化し、binutilsについてだけ心配するだけです。
Gccは実際に古いbinutilsを使用してビルドできるため、緊急の場合は仕様ファイルをさらに編集して、システムにすでにbinutilsバージョンが必要です。これはgccをわずかに損傷しますが、ほとんどの場合十分にうまくいきます。
これはほとんどの場合にうまく機能します。

アップデート1

src rpmを開く最も簡単な方法は、おそらくyum install rpmを実行して〜/ rpmbuildの下のすべてのエントリにアクセスすることですが、私はもっと好むでしょう。

mkdir gcc-5.3.1-4.fc23
cd gcc-5.3.1-4.fc23
rpm2cpio ../gcc-5.3.1-4.fc23.src.rpm | cpio -id
tar xf gcc-5.3.1-20160212.tar.bz2
cd gcc-5.3.1-20160212
contrib/download_prerequisites
cd ..
tar caf gcc-5.3.1-20160212.tar.bz2 gcc-5.3.1-20160212
rm -rf gcc-5.3.1-20160212
# remove gnat
sed -i '/%global build_ada 1/ s/1/0/' gcc.spec
sed -i '/%if !%{build_ada}/,/%endif/ s/^/#/' gcc.spec
# remove gmp/mpfr/mpc dependencies
sed -i '/BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1/ s/.*//' gcc.spec
# remove isl dependency
sed -i '/BuildRequires: isl = %{isl_version}/,/Requires: isl-devel = %{isl_version}/ s/^/#/' gcc.spec
# Either build binutils as I do, or lower requirements
sed -i '/Requires: binutils/ s/2.24/2.20/' gcc.spec
# Make sure you don't break on gcc-java
sed -i '/gcc-java/ s/^/#/' gcc.spec

オプションでプレフィックスを設定することで、リリースrpmを中断することなくrpmを並列にインストールできます(ただし、名前の変更と内部パッケージ名の一部の変更が必要です)。私は通常、環境モジュールを追加することで、必要に応じて(コレクションの仕組みに似ています)、このgccをrpmの一部としてロードおよびアンロードできます(新しい依存関係を追加します)。

最後に、rpmbuildツリーを作成し、ビルドする必要があるファイルを配置します。

yum install rpmdevtools rpm-build
rpmdev-setuptree
cp * ~/rpmbuild/SOURCES/
mv ~/rpmbuild/{SOURCES,SPECS}/gcc.spec
rpmbuild -ba ~/rpmbuild/SPECS/gcc.spec

アップデート2

通常、開発に「サーバー」オペレーティングシステムを使用しないでください。これが、最新のgccですでに提供されているFedoraを使用する理由です。いくつかの特定の要件がありますが、作業に適したツール(本番アプリケーションを実行するためのrhel / centos、アプリケーションを開発するためのfedoraなど)を使用することを実際に考慮する必要があります。

答え4

gccソースビルドを試してみてください。 GCCには前提条件としてMPC、MPFR、GMPが必要です。 GCC 4.8の場合、バージョン依存性はMPC 0.8 GMP 6.0 MPFR 2.4.2です。ソースパッケージをダウンロードし、/usr/libの下にすべてのパッケージをインストールします。インストール順序はgmp、mpfr、mpcです。

関連情報