встановити останню gcc на rhel 6 x86_64


13

У мене є сервер RHEL 6 з gcc версією 4.4.7. Я хотів оновити версію gcc (я думаю, що поточна - 4,8). Оновлення Yum не працює. Також відповіді на подібне запитання щодо CentOS не спрацьовують. Я дотримувався методів у прийнятій відповіді, вихід - "Помилка отримання даних сховища для тестування-1.1-devtools-6, сховище не знайдено". Також я не впевнений, чи слід дотримуватися методів CentO.

Хтось оновлював gcc на сервері RHEL 6 x86_64?


Ви намагалися встановити його з цього репо? hop5.in/yum/el6/repoview/gcc.html . Це бінарні складання 4.8.2. Вам, можливо, знадобиться 6.4 CentOS, щоб встановити їх, що може бути вашою проблемою.
slm

Чи є опція встановлення з джерела?
mkc

так, я можу встановити з джерела, якщо потрібно.
rivu

Хороше питання. Хто нижчий? :(
Отей

hop5.in, мабуть, більше не є дійсним репортажем el6 нічого. @slm
Отей

Відповіді:


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, виділеного вище.

У цьому GistHub Gist висвітлено додаткові приклади установки через devtoolset: Встановлення gcc 4.8 та Linuxbrew на CentOS 6 .


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 не знайдено ". Я думаю, що проблема полягає в тому, що це 6Server замість 6. Посилання не знаю, як це виправити.
rivu

hop.in більше не має того, що, на вашу думку, ви вважаєте.
Отей

1
Можливо, потрібен додатковий крок: Завантаження та імпорт ключа ключа з 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(як мінімум, для мене) встановлено десяток пакунків та завантаження 35 Мб порівняно з 280 пакетами та 575 МБ для завантаження yum install devtoolset-2.
miken32


2

Зараз я створив новіші версії gcc для rhel6 для кількох версій (з 4.7.x до 5.3.1).

Процес досить легкий завдяки побудові Якуба Єлінека від Redhat, який знайдено на ki

Просто візьміть останню обертову хвилину src для потрібної версії (наприклад, 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

Зараз йде виснажлива частина - будь-який пакет , який має версію вище , ніж це передбачено ні поступальних вашого дистрибутива повинні бути завантажений з Коджі , і рекурсивно повторити процес , поки всі вимоги залежностей не будуть виконані.

Я обманюю, btw.
Я зазвичай перепаковую обороти в хвилину, щоб містити правильне дерево збірки, використовуючи об'єкт gnu для використання правильно розміщених та названих вимог, тому gmp / mpc / mpfr / isl (cloog більше не потрібен) завантажуються та untard у правильний шлях, і новий (роздутий) смола відновлюється у новий src rpm (з незначними змінами у файлі spec), не залежно від їх упакованих (rpm) версій. Оскільки я не знаю нікого, хто використовує ADA, я просто видаляю частини, що відносяться до gnat, із специфічного файлу, додатково спрощуючи процес збирання, залишаючи мені лише бінути для переживання.
Gcc насправді може створюватись зі старими бінутілами, тому, якщо ви поспішаєте, додатково відредагуйте специфікацію, щоб вимагати версії 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 distro (хоча вимагає зміни назви та деяких модифікацій внутрішніх імен пакунків). Я зазвичай додаю модуль оточення, щоб я міг завантажувати та вивантажувати цей 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

Зазвичай не слід використовувати "серверний" ОС для розробки - саме тому у вас є Fedora, який вже поставляється з останніми gcc. У мене є деякі особливі вимоги, але ви дійсно повинні розглянути можливість використання правильного інструменту для виконання завдання - rhel / centos для запуску виробничих додатків, Fedora для розробки цих додатків тощо


Увічливо, коли голосування вниз має бути причиною.
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 buid.GCC вимагає MPC, MPFR та GMP як попередніх реквізитів. Для GCC 4.8, залежність версій - MPC 0.8 GMP 6.0 MPFR 2.4.2.Завантажте вихідні пакети та встановіть усі пакунки під / usr / lib . Порядок установки - gmp, mpfr, mpc

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.