instal gcc terbaru di rhel 6 x86_64

13

Saya memiliki server RHEL 6 dengan versi gcc 4.4.7. Saya ingin memperbarui versi gcc (saya pikir yang sekarang adalah 4.8). Pembaruan Yum tidak berfungsi. Juga, SO jawaban untuk pertanyaan serupa pada CentOS tidak berfungsi. Saya mengikuti metode dalam jawaban yang diterima, outputnya adalah "Kesalahan mendapatkan data repositori untuk pengujian-1.1-devtools-6, repositori tidak ditemukan". Juga saya tidak yakin apakah saya harus mengikuti metode untuk CentOs.

Adakah yang memperbarui gcc di server RHEL 6 x86_64?

rivu
sumber
Apakah Anda mencoba menginstalnya dari repo ini? hop5.in/yum/el6/repoview/gcc.html . Ini adalah binary build dari 4.8.2. Anda mungkin harus berada di 6,4 CentOS untuk menginstalnya, yang mungkin menjadi masalah Anda.
slm
Apakah menginstal dari sumber merupakan opsi?
mkc
ya saya dapat menginstal dari sumber jika diperlukan.
rivu
Pertanyaan bagus. Siapa yang downvoter? :(
Otheus
hop5.in bukan lagi repo el6 apa pun yang valid, tampaknya. @slm
Otheus

Jawaban:

4

Metode termudah sejauh ini adalah dengan menggunakan binary build yang disediakan melalui repositori YUM. Salah satu opsi tersebut adalah menggunakan repositori hop5.in. Khususnya halaman ini: gcc - Berbagai kompiler (C, C ++, Objective-C, Java, ...) . Mereka menyediakan 4.8.2 yang seharusnya bekerja dengan CentOS 6.3 atau 6.4. Anda mungkin ingin melakukan pembaruan sebelumnya:

$ sudo yum update

Opsi lainnya adalah menggunakan Toolset Pengembang , khususnya versi paket yang disediakan oleh Scientific Linux.

Mengikuti instruksi instalasi pada dasarnya Anda akan melakukan 2 langkah berikut:

tambahkan repositori
$ 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
instal devtoolset
$ sudo yum install devtoolset-2

Perbarui # 1

Repositori hop5.in YUM tampaknya telah dihapus, jadi satu-satunya jalan lain adalah menggunakan metode devtoolset yang disorot di atas.

Contoh tambahan untuk menginstal melalui devtoolset disorot dalam GitHub Gist ini: Menginstal gcc 4.8 dan Linuxbrew pada CentOS 6 .

slm
sumber
3
Saya mencoba menginstal rpm yang diunduh dari tautan pertama, mengatakan "error: Gagal dependensi: cpp = 4.8.2-8.el6 diperlukan oleh gcc-4.8.2-8.el6.x86_64 ...". Untuk perangkat pengembang, dikatakan " people.centos.org/tru/devtools-1.1/6Server/x86_64/RPMS/repodata/… : [Errno 14] PYCURL ERROR 22 -" URL yang diminta kembali kesalahan: 404 Tidak Ditemukan ". Saya pikir masalahnya adalah 6Server dan bukan di tautan 6. Saya tidak tahu bagaimana cara memperbaikinya
rivu
hop.in tidak lagi memiliki apa yang saya pikir Anda pikirkan.
Otheus
1
Langkah tambahan yang mungkin diperlukan: Mengunduh dan mengimpor kunci kern dari http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern. Saya suka bahwa situs tersebut tidak memiliki https. Cara untuk pergi scilinux. Setelah Anda mengunduhnya (direktori tmp atau apa pun), impor dengan rpm --import RPM-GPG-KEY-cerndan kemudian lakukanyum install.
Otheus
@Otheus - terima kasih, saya benci ketika repo menggigit debu seperti ini, merusak banyak konten pada jalinan 8-).
slm
1
Layak disebutkan bahwa devtoolset-2-gcc(setidaknya untuk saya) menginstal selusin paket dan unduhan 35 MB, dibandingkan 280 paket dan 575 MB unduhan untuk yum install devtoolset-2.
miken32
2

Saya telah membangun versi gcc yang lebih baru untuk rhel6 untuk beberapa versi sekarang (sejak 4.7.x hingga 5.3.1).

Prosesnya cukup mudah berkat build Redhat Jakub Jelinek fedora gcc yang ditemukan di koji

Cukup ambil src rpm terbaru untuk versi apa pun yang Anda perlukan (mis. 5.3.1 ).

Pada dasarnya Anda akan mulai dengan menentukan persyaratan pembuatan dengan menerbitkan rpm -qpR src.rpmmencari persyaratan versi apa pun:

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

Sekarang sampai pada bagian yang membosankan - paket apa pun yang memiliki versi lebih tinggi dari yang disediakan oleh yum dari distro Anda perlu diunduh dari koji , dan ulangi proses secara rekursif sampai semua persyaratan ketergantungan dipenuhi.

Saya curang, btw.
Saya biasanya mengemas ulang rpm untuk memuat struktur pohon yang benar menggunakan fasilitas gnu untuk menggunakan persyaratan yang benar dan dinamai, jadi gmp / mpc / mpfr / isl (cloog tidak lagi diperlukan) diunduh dan tidak ke jalur yang benar, dan yang baru tar (bengkak) dibangun kembali menjadi rpm src baru (dengan sedikit perubahan pada file spesifikasi) tanpa ketergantungan pada versi paket (rpm) mereka. Karena saya tahu tidak ada yang menggunakan ADA, saya hanya menghapus bagian yang berkaitan dengan nyamuk dari specfile, lebih menyederhanakan proses pembuatan, meninggalkan saya dengan hanya binutils yang perlu dikhawatirkan.
Gcc sebenarnya dapat membangun dengan binutils yang lebih lama, jadi jika Anda sedang terburu-buru, edit specfile lebih lanjut untuk meminta versi binutils sudah ada di sistem Anda. Ini akan menghasilkan gcc yang sedikit cacat, tetapi sebagian besar akan berkinerja cukup baik.
Ini sebagian besar bekerja dengan sangat baik.

PEMBARUAN 1

Metode paling sederhana untuk membuka rpm src mungkin yum instal rpm dan akses semuanya di bawah ~ / rpmbuild, tapi saya lebih suka

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

Anda juga memiliki pilihan untuk mengatur awalan sehingga rpm ini akan menginstal berdampingan tanpa melanggar distro rpm (tetapi membutuhkan perubahan nama, dan beberapa modifikasi untuk nama paket internal). Saya biasanya menambahkan modul lingkungan sehingga saya dapat memuat dan membongkar gcc ini sesuai kebutuhan (mirip dengan cara kerja koleksi) sebagai bagian dari rpm (jadi saya menambahkan ketergantungan baru).

Terakhir, buat pohon rpmbuild dan letakkan file di mana hei harus pergi dan membangun:

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

PEMBARUAN 2

Biasanya orang tidak boleh menggunakan "server" os untuk pengembangan - itu sebabnya Anda memiliki fedora yang sudah dilengkapi dengan gcc terbaru. Saya memiliki beberapa persyaratan khusus, tetapi Anda harus benar-benar mempertimbangkan untuk menggunakan alat yang tepat untuk tugas - rhel / centos untuk menjalankan aplikasi produksi, fedora untuk mengembangkan aplikasi tersebut, dll.

Dani_l
sumber
Adalah sopan saat memberi suara untuk memberikan alasan.
Dani_l
0

Hai teman-teman inilah yang saya lakukan (kompilasi dari awal). Jangan tersinggung dengan jawaban lain, saya yakin itu berhasil tetapi GCC adalah masalah besar untuk keamanan jadi saya lebih suka mengkompilasi dari sumber asli dan resmi:

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

Sumber: http://realtechtalk.com/GCC_5_on_Centos_6_How_To_Install-1965-articles

Areeb Soo Yasir
sumber
Keamanan adalah masalah besar, namun Anda menginstal dari lokasi non-HTTPS :)?
Dhag
Pada saat itu tidak ada SSL yang diaktifkan di situs mirrors.kernel.org tapi saya pikir jika kita tidak dapat mempercayai kernel.org kita memiliki masalah yang lebih besar :).
Areeb Soo Yasir
-1

Anda dapat mencoba sumber gcc buid. GCC membutuhkan MPC, MPFR dan GMP sebagai prasyarat. Untuk GCC 4.8, Ketergantungan versi adalah MPC 0.8 GMP 6.0 MPFR 2.4.2. Turunkan paket sumbernya, dan instal semua paket di bawah / usr / lib . Urutan pemasangannya adalah gmp, mpfr, mpc

Biju G
sumber