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


13

gccバージョン4.4.7のRHEL 6サーバーがあります。gccのバージョンを更新したかった(現在のバージョンは4.8だと思います)。Yumの更新が機能しません。また、CentOSでの同様の質問に対するSOの回答は機能しません。受け入れられた回答の方法に従って、出力は「testing-1.1-devtools-6のリポジトリデータの取得エラー、リポジトリが見つかりません」です。また、CentOの方法に従う必要があるかどうかもわかりません。

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


このリポジトリからインストールしようとしましたか?hop5.in/yum/el6/repoview/gcc.html。これらは4.8.2のバイナリビルドです。あなたはおそらくそれらをインストールするために6.4 CentOSにいる必要があるでしょう、それはあなたの問題かもしれません。
slm

ソースからのインストールはオプションですか?
mkc 14

はい、必要に応じてソースからインストールできます。
rivu 14

良い質問。反対投票者は誰ですか?:(
Otheus

hop5.inは、どうやら有効なel6リポジトリではなくなったようです。@slm
Otheus

回答:


4

これまでで最も簡単な方法は、YUMリポジトリを通じて提供されるバイナリビルドを利用することです。 そのようなオプションの1つは、hop5.inリポジトリーを使用することです。具体的には、このページ:gcc-さまざまなコンパイラー(C、C ++、Objective-C、Javaなど)。それらはCentOS 6.3または6.4で動作するはずの4.8.2を提供しています。事前に更新することをお勧めします。

$ sudo yum update

もう1つのオプションは、開発ツールセット、特に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
devtoolsetをインストールする
$ sudo yum install devtoolset-2

アップデート#1

hop5.in YUMリポジトリーは削除されたようですので、唯一の手段は、上記で強調表示されたdevtoolsetメソッドを利用することです。

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


3
最初のリンクからダウンロードしたrpmをインストールしようとしましたが、「エラー:依存関係の失敗:cpp = 4.8.2-8.el6はgcc-4.8.2-8.el6.x86_64で必要です...」と表示されます。開発者ツールセットの場合、「people.centos.org/tru/devtools-1.1/6Server/x86_64/RPMS/repodata/…:[Errno 14] PYCURL ERROR 22-「リクエストされたURLがエラーを返しました:404 Not Found」と表示されます。私はこの問題は、それが6Server代わりのリンクでは6であると思い、私はそれを修正する方法を知りません。。
rivu

hop.inには、あなたが持っていると思うものはもうありません。
Otheus

1
追加の手順が必要になる可能性があります:からのCernキーのダウンロードとインポートhttp://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern。サイトにhttpsがないことを気に入っています。scilinuxへの道。あなたは(tmpディレクトリまたはwhever)それをダウンロードした後、でそれをインポートrpm --import RPM-GPG-KEY-cernし、その後、やるyum install.
Otheus

@Otheus-おかげで、レポがこのようにほこりを噛んだとき、私は嫌いです、インターウェブの大量のコンテンツを破壊します8-)。
slm

1
devtoolset-2-gcc(少なくとも私にとっては)12個のパッケージと35 MBのダウンロードがインストールされたのに対し、280個のパッケージと575 MBのダウンロードがインストールされたことに言及する価値がありますyum install devtoolset-2
miken32


2

rhel6の新しいgccバージョンをいくつかのバージョンでビルドしました(4.7.xから5.3.1以降)。

kojiで見つかった RedhatのJakub Jelinek fedora gccビルドのおかげで、プロセスはかなり簡単です

必要なバージョン(たとえば5.3.1)の最新のsrc rpmを取得するだけです。

基本的には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で提供されているバージョンよりも高いバージョンのパッケージはすべてkojiからダウンロードする必要があり、依存関係のすべての要件が満たされるまでプロセスを再帰的に繰り返します。

不正行為です。
私は通常、rpmを再パッケージして、gnu機能を使用して正しいビルドツリーを含め、正しく配置され名前が付けられた要件を使用します。そのため、gmp / mpc / mpfr / isl(cloogは不要)がダウンロードされ、正しいパスに送られます。 (肥大化した)tarは、パッケージ化された(rpm)バージョンに依存することなく、新しいsrc rpmに(スペックファイルに小さな変更を加えて)再構築されます。ADAを使用している人はいないので、スペックファイルからgnatに関連する部分を削除するだけで、ビルドプロセスがさらに簡素化され、心配するbinutilsだけが残ります。
Gccは実際には古いbinutilsでビルドできるため、急いでいる場合は、スペックファイルをさらに編集して、システムにすでに存在するbinutilsバージョンを要求します。これにより、gccがわずかに機能しなくなりますが、ほとんどの場合、十分に機能します。
これはほとんど問題なく機能します。

アップデート1

src rpmを開く最も簡単な方法は、おそらく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をロードおよびアンロードできるようにします(したがって、新しい依存関係を追加します)。

最後にrpmbuildツリーを作成し、ファイルを配置してビルドする場所に配置します。

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

アップデート2

通常、開発には「サーバー」OSを使用すべきではありません。そのため、最新のgccがすでに付属しているfedoraがあります。特定の要件がありますが、本当のアプリを実行するためのrhel / centos、それらのアプリを開発するためのfedoraなど、タスクに適切なツールの使用を検討する必要があります。


理由を述べるために反対投票するときは礼儀正しい。
Dani_l 2016

0

こんにちはみんな私がやったことです(ゼロからコンパイル)。別の答えに問題はないと思いますが、GCCはセキュリティにとって特に重要なので、元の公式ソースからコンパイルすることを好みます。

yum -y install gmp-devel mpfr-devel libmpc-devel glibc-devel glibc-devel.i686 zip unzip jar
wget http://mirrors.kernel.org/gnu/gcc/gcc-5.5.0/gcc-5.5.0.tar.gz
tar -zxvf gcc-5.5.0.tar.gz
cd gcc-5.5.0
./configure
make
make install
yum remove gcc
rm -rf /usr/bin/gcc
rm -rf /usr/bin/c++
rm -rf /usr/bin/cc
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.5.0 /usr/bin/gcc
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-c++ /usr/bin/c++
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc /usr/bin/cc

出典:http : //realtechtalk.com/GCC_5_on_Centos_6_How_To_Install-1965-articles


セキュリティは重要ですが、HTTPS以外の場所からインストールします:)?
dhag

当時、mirrors.kernel.orgサイトではSSLが有効化されていませんでしたが、kernel.orgを信頼できない場合は、さらに大きな問題が発生すると思います。
Areeb Soo Yasir

-1

gccソースbuidを試すことができます.GCCには、前提条件としてMPC、MPFR、およびGMPが必要です.GCC 4.8の場合、バージョンの依存関係はMPC 0.8 GMP 6.0 MPFR 2.4.2。インストールの順序は、gmp、mpfr、mpcです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.