как установить gcc7 в докер centos7 - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь создать образ докера на основе centos7

FROM centos:centos7

RUN yum -y update
RUN yum -y install gcc
RUN gcc --version

установленный gcc равен 4,8: ​​

Шаг

 4/4 : RUN gcc --version
 ---> Running in 70b9aa4a1f67
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Как я могу установить gcc7? Я пробовал devtools-7, он не работает:

FROM centos:centos7

RUN yum -y update
RUN yum -y install scl-utils
RUN yum -y install devtoolset-7-gcc
RUN scl enable devtoolset-7 bash
RUN gcc --version

Я получил:

Step 4/6 : RUN yum -y install devtoolset-7-gcc
 ---> Running in 85b49f411d4c
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.imt-systems.com
 * extras: mirror.23media.com
 * updates: ftp.plusline.net
No package devtoolset-7-gcc available.
Error: Nothing to do
The command '/bin/sh -c yum -y install devtoolset-7-gcc' returned a non-zero code: 1

Ответы [ 3 ]

2 голосов
/ 29 апреля 2019
FROM centos:centos7
RUN yum update -y
RUN yum groupinstall "Development Tools" -y    
RUN yum install wget -y
RUN curl -O https://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
RUN tar xzf gcc-7.3.0.tar.gz
RUN cd gcc-7.3.0
RUN ./contrib/download_prerequisites
RUN cd ..
RUN mkdir gcc-build
RUN cd gcc-build
RUN ../gcc-7.3.0/configure                           \
    --enable-shared                                  \
    --enable-threads=posix                           \
    --enable-__cxa_atexit                            \
    --enable-clocale=gnu                             \
    --disable-multilib                               \
    --enable-languages=all
RUN make
# (Go make a cup of ice tea :)
RUN make install

Чтобы сэкономить время сборки, вы можете создать новый докер из запущенного докера, используя «docker commit» или сохранить / usr / local в файл tar и открыть его на любом другом свежем докере centos7.

1 голос
/ 29 апреля 2019

Очевидно, что devtoolset-7-gcc не существует в вашей текущей конфигурации репозитория. Попробуйте добавить репо или попробуйте yum -y install centos-release-scl вместо yum -y install scl-utils.

Нашел здесь: http://blog.stevedoria.net/20180214/how-to-install-gcc-7-on-centos-7

Веселись!

Редактировать:

После еще нескольких исследований кажется, что gcc 7 действительно установлен, но scl enable фактически открывает новый bash, который будет содержать ваш GCC 7. Если вам действительно нужен GCC 7 в качестве gcc по умолчанию, вы можете скомпилировать его из источник (но это займет много времени), или вы можете использовать команду SHELL из вашего dockerfile для переключения между оболочками. Вот мой файл докера:

FROM centos:centos7

RUN yum -y update
RUN yum -y install centos-release-scl
RUN yum -y install devtoolset-7-gcc*
SHELL [ "/usr/bin/scl", "enable", "devtoolset-7"]
RUN gcc --version

А на выходе RUN gcc --version

gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Чередование между оболочками, кажется, является намеченным способом сделать это при использовании devtoolset, потому что это позволяет вам быстро переключаться между версиями, если это необходимо. Я надеюсь, что это помогло

0 голосов
/ 18 июля 2019

У меня работали следующие команды в Dockerfile:

RUN yum install -y centos-release-scl
RUN yum install -y devtoolset-7-gcc-*
RUN echo "source scl_source enable devtoolset-7" >> /etc/bashrc
RUN source /etc/bashrc
...