установить последнюю версию gcc на rhel 6 x86_64

13

У меня есть сервер RHEL 6 с gcc версии 4.4.7. Я хотел обновить версию gcc (я думаю, что текущая версия 4.8). Ням обновление не работает. Кроме того, SO отвечает на аналогичный вопрос о CentOS не работает. Я следовал методам в принятом ответе, вывод «Ошибка получения данных репозитория для testing-1.1-devtools-6, репозиторий не найден». Также я не уверен, должен ли я следовать методам для CentO.

Кто-нибудь обновил gcc на сервере RHEL 6 x86_64?

rivu
источник
Вы пытались установить его из этого репо? hop5.in/yum/el6/repoview/gcc.html . Это двоичные сборки 4.8.2. Вам, вероятно, понадобится установить их на уровне 6.4 CentOS, что может быть вашей проблемой.
СЛМ
Является ли установка из источника вариант?
mkc
Да, я могу установить из источника, если это необходимо.
Риву
хороший вопрос. Кто даунотер? :(
Отей
По-видимому, hop5.in больше не является действительным репозиторием el6. @slm
Otheus

Ответы:

4

На данный момент самый простой способ - использовать двоичную сборку, предоставляемую через репозиторий YUM. Одним из таких вариантов будет использование репозитория hop5.in. Конкретно эта страница: gcc - Различные компиляторы (C, C ++, Objective-C, Java, ...) . Они предоставляют 4.8.2, которая должна работать с CentOS 6.3 или 6.4. Вы можете сделать обновление до:

$ 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
установить devtoolset
$ sudo yum install devtoolset-2

Обновление № 1

Репозиторий hop5.in YUM, по-видимому, был удален, поэтому единственным выходом является использование метода devtoolset, выделенного выше.

Дополнительные примеры для установки через devtoolset выделены в этом GitHub Gist: Установка gcc 4.8 и Linuxbrew на CentOS 6 .

SLM
источник
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 больше не имеет того, что, я думаю, вы думаете, имеет.
Отей
1
Возможно, потребуется дополнительный шаг: загрузка и импорт ключа cern из http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern. Мне нравится, что на сайте нет https. Путь в школу. После того, как вы загрузите его (каталог tmp или whever), импортируйте его, rpm --import RPM-GPG-KEY-cernа затем выполнитеyum install.
Otheus
@ Otheus - спасибо, я ненавижу, когда репозитории кусают пыль, как это, разрушает кучу контента на интервалах 8-).
SLM
1
Стоит упомянуть, что devtoolset-2-gcc(по крайней мере для меня) установлено дюжина пакетов и загрузка 35 МБ против 280 пакетов и 575 МБ загрузка для yum install devtoolset-2.
miken32
2

Я собрал более новые версии gcc для rhel6 для нескольких версий (с 4.7.x до 5.3.1).

Процесс довольно прост благодаря сборкам Redhat Jakub Jelinek 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 для вашего дистрибутива, должен быть загружен из коджи , и рекурсивно повторяйте процесс, пока не будут выполнены все требования к зависимостям.

Я обманываю, кстати.
Я обычно переупаковываю rpm, чтобы он содержал правильное дерево сборки, используя утилиту gnu для использования правильно размещенных и именованных требований, поэтому gmp / mpc / mpfr / isl (cloog больше не требуется) загружаются и отправляются на правильный путь, а новый (раздутый) tar перестраивается в новый src rpm (с небольшими изменениями в spec-файле) без зависимости от их упакованных (rpm) версий. Поскольку я не знаю никого, кто бы использовал ADA, я просто удаляю части, относящиеся к gnat, из specfile, еще больше упрощая процесс сборки, и мне остается только беспокоиться о binutils.
Gcc может на самом деле собираться с более старыми binutils, поэтому, если вы спешите, отредактируйте файл спецификации так, чтобы он требовал версию binutils, уже имеющуюся в вашей системе. Это приведет к слегка поврежденному GCC, но в основном это будет достаточно хорошо.
Это работает довольно хорошо в основном.

ОБНОВЛЕНИЕ 1

Простейший способ открытия src rpm - это, вероятно, yum установить 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

Обычно для разработки не следует использовать «серверную» ОС - поэтому у вас есть Fedora, которая уже поставляется с последней версией gcc. У меня есть некоторые особые требования, но вам стоит подумать об использовании правильного инструмента для этой задачи - rhel / centos для запуска производственных приложений, fedora для разработки этих приложений и т. Д.

Dani_l
источник
Это вежливо при голосовании, чтобы дать причину.
Dani_l
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-сервера :)?
Даг
В то время на сайте mirrors.kernel.org не было включено SSL, но я думаю, что если мы не можем доверять kernel.org, у нас есть большие проблемы :).
Ариб Су Ясир
-1

вы можете попробовать gcc source buid.GCC требует MPC, MPFR и GMP в качестве предварительных условий. Для GCC 4.8 зависимости от версии: MPC 0.8 GMP 6.0 MPFR 2.4.2. Загрузите исходные пакеты и установите все пакеты в / usr / lib Порядок установки: gmp, mpfr, mpc.

Biju G
источник