en son gcc rhel 6 x86_64 üzerine yükleyin


13

Gcc 4.4.7 sürümüne sahip bir RHEL 6 sunucum var. Gcc sürümünü güncellemek istedim (mevcut olanın 4.8 olduğunu düşünüyorum). Yum güncellemesi çalışmıyor. Ayrıca, CentOS ile ilgili benzer bir soru için SO cevapları çalışmaz. Kabul edilen cevaptaki yöntemleri izledim, çıktı "Test-1.1-devtools-6 için depo verileri alınırken hata, depo bulunamadı". Ayrıca CentO'lar için yöntemleri izlemem gerekip gerekmediğinden emin değilim.

RHEL 6 x86_64 sunucusunda gcc güncelleyen var mı?


Bu depodan yüklemeyi denedin mi? hop5.in/yum/el6/repoview/gcc.html . Bunlar 4.8.2 ikili yapılarıdır. Bunları yüklemek için muhtemelen 6.4 CentOS'ta olmanız gerekir, bu da sorununuz olabilir.
slm

Kaynaktan yükleme bir seçenek midir?
mkc

evet gerekirse kaynaktan yükleyebilirsiniz.
rivu

iyi soru. Downvoter kim? :(
Otheus

hop5.in artık görünüşe göre hiçbir şey için geçerli bir el6 repo değil. @slm
Otheus

Yanıtlar:


4

Şimdiye kadarki en kolay yöntem, bir YUM deposu aracılığıyla sağlanan ikili bir yapı kullanmaktır. Böyle bir seçenek hop5.in deposunu kullanmak olacaktır . Özellikle bu sayfa: gcc - Çeşitli derleyiciler (C, C ++, Objective-C, Java, ...) . CentOS 6.3 veya 6.4 ile çalışması gereken 4.8.2'yi sağlıyorlar. Önceden bir güncelleme yapmak isteyebilirsiniz:

$ sudo yum update

Diğer seçenek, Geliştirici Araç Seti'ni , özellikle Scientific Linux tarafından sağlanan birlikte gelen sürümü kullanmaktır.

Aşağıdaki kurulum talimatlarını aşağıdaki 2 adım yapmak temelde edeceğiz:

havuz ekle
$ 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'i yükle
$ sudo yum install devtoolset-2

Güncelleme # 1

Hop5.in YUM deposu kaldırılmış gibi görünmektedir, bu nedenle tek başvuru, yukarıda vurgulanan devtoolset yöntemini kullanmaktır.

Devtoolset üzerinden kurulum için ek örnekler bu GitHub Gist'te vurgulanmıştır: CentOS 6'da gcc 4.8 ve Linuxbrew kurulumu .


3
İlk bağlantıdan indirilen rpm'yi yüklemeye çalıştım, "hata: Başarısız bağımlılıklar: cpp = 4.8.2-8.el6, gcc-4.8.2-8.el6.x86_64 ... gerekli" diyor. Geliştirici araç seti için " people.centos.org/tru/devtools-1.1/6Server/x86_64/RPMS/repodata/… : [Errno 14] PYCURL ERROR 22 -" İstenen URL döndürüldü hatası: 404 Bulunamadı "yazıyor. Ben sorun linkte 6Server yerine 6 olduğunu düşünüyorum bunu düzeltmeye nasıl bilmiyorum..
rivu

hop.in artık sahip olduğunu düşündüğüm şeye sahip değil.
Otheus

1
Muhtemel ek adım gerekli: cern anahtarını indirme ve içe aktarma http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern. Sitede https bulunmadığını seviyorum. Scilinux'a gitmenin yolu. Bunu (tmp dizini veya whever) indirdikten sonra, bunu ithal rpm --import RPM-GPG-KEY-cernve daha sonra yapılacakyum install.
Otheus

@Otheus - teşekkürler, depolar bu şekilde tozu ısırdığında nefret ediyorum, iç içe 8-) bir sürü içerik yıkıyor).
slm

1
Bahsetmeye değer devtoolset-2-gcc(en azından benim için) bir düzine paket ve 35 MB indirme, 280 paket ve 575 MB indirme için yüklü yum install devtoolset-2.
miken32


2

Birkaç sürüm için rhel6 için daha yeni gcc sürümleri oluşturdum (4.7.x'ten 5.3.1'e kadar).

Kohat'ta bulunan Redhat'ın Jakub Jelinek fedora gcc yapıları sayesinde süreç oldukça kolay

İhtiyacınız olan sürüm için en son src rpm'yi almanız yeterlidir (örneğin 5.3.1 ).

Temel olarak rpm -qpR src.rpm, herhangi bir sürüm gereksinimi arayarak derleme gereksinimlerini belirleyerek başlayacaksınız :

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

Şimdi sıkıcı kısmı geliyor - dağıtımınız için yum tarafından sağlanandan daha yüksek bir sürüme sahip herhangi bir paketin koji'den indirilmesi gerekiyor ve tüm bağımlılık gereksinimleri karşılanana kadar işlemi tekrarlayın.

Hile yapıyorum, btw.
Genellikle rpm'yi doğru yerleştirilmiş ve adlandırılmış gereksinimleri kullanmak için gnu tesisini kullanarak doğru bir yapı ağacı içerecek şekilde yeniden paketlerim, böylece gmp / mpc / mpfr / isl (cloog artık gerekli değildir) indirilir ve doğru yola indirilir ve yeni (şişirilmiş) katran, paketlenmiş (rpm) sürümlerine bağımlı olmadan yeni bir src rpm (spec dosyasında küçük değişikliklerle) olarak yeniden oluşturulur. ADA kullanan kimseyi bilmediğimden, sadece gnat ile ilgili kısımları specfile'dan çıkarıyorum, inşa sürecini daha da basitleştirerek endişelenmem için sadece binutils bırakıyorum.
Gcc aslında eski binutils ile oluşturabilir, bu yüzden aceleniz varsa, sisteminizde binutils sürümünün mevcut olmasını gerektirecek şekilde specfile'ı daha fazla düzenleyin. Bu hafif sakatlanmış bir gcc ile sonuçlanacaktır, ancak çoğunlukla yeterince iyi performans gösterecektir.
Bu çoğunlukla oldukça iyi çalışıyor.

GÜNCELLEME 1

Bir src rpm açmak için en basit yöntem muhtemelen rpm yüklemek ve ~ / rpmbuild altındaki her şeye erişmek, ama tercih ederim

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

Ayrıca öneki ayarlama seçeneğiniz de vardır; böylece bu rpm, dağıtım rpm'sini bozmadan yan yana yüklenir (ancak adın değiştirilmesi ve dahili paket adlarında bazı değişiklikler yapılması gerekir). Genellikle bir ortam modülü eklerim, böylece rpm'nin bir parçası olarak bu gcc'yi (koleksiyonların nasıl çalıştığına benzer şekilde) yükleyebilir ve boşaltabilirim (böylece yeni bir bağımlılık ekliyorum).

Son olarak rpmbuild ağacını oluşturun ve dosyaları gidip oluşturması gereken yere yerleştirin:

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

GÜNCELLEME 2

Normalde geliştirme için bir "sunucu" işletim sistemi kullanılmamalıdır - bu yüzden zaten en son gcc ile gelen fedora var. Bazı özel gereksinimlerim var, ancak gerçekten görev için doğru aracı kullanmayı düşünmelisiniz - üretim uygulamalarını çalıştırmak için rhel / centos, bu uygulamaları geliştirmek için fedora vb.


Nedeni düşürmek oy kullanırken kibar.
Dani_l

0

Hey arkadaşlar işte yaptığım (sıfırdan derleme). Başka bir cevaba suç yok Eminim işe yarıyor ama GCC özellikle güvenlik için büyük bir anlaşma, bu yüzden orijinal ve resmi kaynaktan derlemeyi tercih ediyorum:

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

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


Güvenlik büyük bir anlaşma, ancak HTTPS olmayan bir konumdan yüklüyorsunuz :)?
dhag

Mirrors.kernel.org sitesinde SSL etkin olmadığı halde kernel.org'a güvenemezsek daha büyük sorunlarımız olduğunu düşünüyorum :).
Areeb Soo Yasir

-1

gcc source buid'i deneyebilirsiniz.GCC ön koşul olarak MPC, MPFR ve GMP gerektirir. GCC 4.8 için sürüm bağımlılıkları MPC 0.8 GMP 6.0 MPFR 2.4.2'dir. Kurulum sırası gmp, mpfr, mpc'dir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.