zainstaluj najnowszą gcc na rhel 6 x86_64


13

Mam serwer RHEL 6 z gcc w wersji 4.4.7. Chciałem zaktualizować wersję gcc (myślę, że bieżąca to 4.8). Aktualizacja Yum nie działa. Również odpowiedzi SO na podobne pytanie w CentOS nie działają. Postępowałem zgodnie z metodami w zaakceptowanej odpowiedzi, wynikiem jest „Błąd pobierania danych repozytorium do testowania-1.1-devtools-6, repozytorium nie znaleziono”. Nie jestem też pewien, czy powinienem stosować metody CentO.

Czy ktoś zaktualizował gcc na serwerze RHEL 6 x86_64?


Czy próbowałeś zainstalować go z tego repozytorium? hop5.in/yum/el6/repoview/gcc.html . Są to kompilacje binarne wersji 4.8.2. Prawdopodobnie będziesz musiał mieć 6,4 CentOS, aby je zainstalować, co może być twoim problemem.
— slm

Czy instalacja ze źródła jest opcją?
— MKK

tak, mogę zainstalować ze źródła w razie potrzeby.
— rivu

dobre pytanie. Kto jest zwycięzcą? :(
— Otheus

Najwyraźniej hop5.in nie jest już poprawnym repozytorium el6 niczego. @slm
— Otheus

Odpowiedzi:


4

Jak dotąd najłatwiejszą metodą jest skorzystanie z kompilacji binarnej udostępnianej przez repozytorium YUM. Jedną z takich opcji byłoby użycie repozytorium hop5.in. W szczególności ta strona: gcc - Różne kompilatory (C, C ++, Objective-C, Java, ...) . Zapewniają wersję 4.8.2, która powinna współpracować z CentOS 6.3 lub 6.4. Przed aktualizacją możesz chcieć wykonać aktualizację:

$ sudo yum update

Inną opcją byłoby skorzystanie z zestawu narzędzi dla programistów , a konkretnie wersji dołączonej przez Scientific Linux.

Postępując zgodnie z instrukcjami instalacji , zasadniczo wykonasz następujące 2 kroki:

dodaj repozytoria
$ 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
zainstaluj devtoolset
$ sudo yum install devtoolset-2

Aktualizacja nr 1

Wydaje się, że repozytorium hop5.in YUM zostało usunięte, więc jedynym wyjściem jest skorzystanie z wyżej opisanej metody devtoolset.

Dodatkowe przykłady instalacji przez devtoolset są wyróżnione w GitHub Gist: Instalowanie gcc 4.8 i Linuxbrew na CentOS 6 .


3
Próbowałem zainstalować rpm pobrane z pierwszego linku, mówi „błąd: nieudane zależności: cpp = 4.8.2-8.el6 jest wymagany przez gcc-4.8.2-8.el6.x86_64 ...”. W przypadku zestawu narzędzi dla programistów jest napisane: „ people.centos.org/tru/devtools-1.1/6Server/x86_64/RPMS/repodata/… : [Errno 14] PYCURL ERROR 22 -„ Żądany adres URL zwrócił błąd: 404 nie znaleziono ”. Myślę, że problem polega na tym, że w łączu jest 6Server zamiast 6. Nie wiem, jak to naprawić
— rivu 21.04.2014

hop.in nie ma już tego, co myślę, że ma.
— Otheus

1
Konieczny może być dodatkowy krok: Pobieranie i importowanie klucza cern http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern. Uwielbiam to, że strona nie ma https. Way to go scilinux. Po pobraniu (katalog tmp lub gdziekolwiek) zaimportuj go za pomocą, rpm --import RPM-GPG-KEY-cerna następnie zróbyum install.
— Otheus

@Otheus - dziękuję, nienawidzę, gdy repos gryzą kurz w ten sposób, niszczy mnóstwo treści na interwebach 8-).
— slm

1
Warto wspomnieć, że devtoolset-2-gcc(przynajmniej dla mnie) zainstalowałem tuzin pakietów i pobrano 35 MB, w porównaniu z 280 pakietami i pobranymi 575 MB yum install devtoolset-2.
— miken32


2

Zbudowałem nowsze wersje gcc dla rhel6 dla kilku wersji teraz (od 4.7.x do 5.3.1).

Proces ten jest dość łatwy dzięki kompilacjom gcc Jakuba Jelinka z Redhat znalezionym na koji

Po prostu pobierz najnowsze src rpm dla dowolnej wersji, której potrzebujesz (np. 5.3.1 ).

Zasadniczo zaczynasz od określenia wymagań kompilacji poprzez wydanie rpm -qpR src.rpmszukania dowolnych wymagań wersji:

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

Teraz pojawia się żmudna część - każdy pakiet, który ma wersję wyższą niż dostarczona przez yum z twojej dystrybucji, należy pobrać z koji i powtarzać proces rekurencyjnie, aż zostaną spełnione wszystkie wymagania dotyczące zależności.

Oszukuję, btw.
Zwykle przepakowuję rpm, aby zawierał prawidłowe drzewo kompilacji za pomocą narzędzia GNU, aby użyć poprawnie umieszczonych i nazwanych wymagań, więc gmp / mpc / mpfr / isl (cloog nie jest już wymagany) są pobierane i odkładane na właściwą ścieżkę, a nowa (wzdęty) tar jest przebudowywany na nowy src rpm (z niewielkimi zmianami w pliku spec) bez zależności od ich wersji pakietowej (rpm). Ponieważ nie znam nikogo, kto używa ADA, po prostu usuwam fragmenty dotyczące komara z pliku specyfikacji, co dodatkowo upraszcza proces kompilacji, pozostawiając mi tylko binutils, o które trzeba się martwić.
Gcc może budować ze starszymi binutils, więc jeśli się spieszysz, dokonaj dalszej edycji pliku specyfikacji, aby wymagać wersji binutils, która jest już obecna w twoim systemie. Spowoduje to nieco kaleką gcc, ale w większości będzie działać wystarczająco dobrze.
Działa to całkiem dobrze głównie.

AKTUALIZACJA 1

Najprostszym sposobem na otwarcie src rpm jest prawdopodobnie yum, zainstaluj rpm i uzyskaj dostęp do wszystkiego pod ~ / rpmbuild, ale wolę

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

Masz również możliwość ustawienia prefiksu, aby ta rpm zainstalowała się obok siebie bez przerywania rpm dystrybucji (ale wymaga zmiany nazwy i pewnych modyfikacji wewnętrznych nazw pakietów). Zazwyczaj dodaję moduł środowiska, aby w razie potrzeby ładować i zwalniać ten gcc (podobnie jak działają kolekcje) jako część rpm (więc dodam nową zależność).

Na koniec utwórz drzewo rpmbuild i umieść pliki tam, gdzie powinien iść, i skompiluj:

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

AKTUALIZACJA 2

Zwykle nie powinno się używać systemu „serwerowego” do programowania - dlatego masz Fedorę, która jest już dostarczana z najnowszym gcc. Mam pewne szczególne wymagania, ale naprawdę powinieneś rozważyć użycie odpowiedniego narzędzia do zadania - rhel / centos do uruchamiania aplikacji produkcyjnych, fedora do tworzenia tych aplikacji itp.


Podawanie przyczyny jest grzeczne, gdy głosuje się w dół.
— Dani_l

0

Cześć, oto co zrobiłem (kompilacja od zera). Bez obrazy dla innej odpowiedzi Jestem pewien, że to działa, ale GCC jest szczególnie ważna dla bezpieczeństwa, więc wolę kompilować z oryginalnego i oficjalnego źródła:

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

Źródło: http://realtechtalk.com/GCC_5_on_Centos_6_How_To_Install-1965-articles


Bezpieczeństwo to wielka sprawa, ale instalujesz z lokalizacji innej niż HTTPS :)?
— dhag

W tym czasie na stronie mirrors.kernel.org nie włączono SSL, ale myślę, że jeśli nie możemy ufać kernel.org, mamy większe problemy :).
— Areeb Soo Yasir,

-1

możesz wypróbować źródło gcc buid. GCC wymaga MPC, MPFR i GMP jako wymagań wstępnych. W przypadku GCC 4.8 zależność wersji to MPC 0.8 GMP 6.0 MPFR 2.4.2. Załaduj pakiety źródłowe i zainstaluj wszystkie pakiety w / usr / lib Kolejność instalacji to gmp, mpfr, mpc

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.