Как использовать альтернативы обновления в centos?

#c #c #docker #gcc #centos

#c #c #docker #gcc #centos

Вопрос:

Я пытаюсь обновить GCC на centos 6.0 (для многоуровневого пипсового колеса в docker). Поскольку более поздние версии gcc недоступны для скачивания, я сам создал gcc-10.2. Сейчас я пытаюсь обновить centos, чтобы использовать новые программы gcc / g вместо старых. В Ubuntu команда для этого

 update-alternatives --install /usr/bin/g   g   /usr/bin/g  -10
 

и похоже, что у centos также есть аналогичный инструмент. Однако, несмотря на чтение документации, я не могу заставить команду (из нескольких вариантов) работать. Вот команда, которую я запускаю:

 [root@aa5149016e33 /]# update-alternatives --install /usr/bin/g   g   gcc-10.2-centos/bin/g  
alternatives version 1.3.49.5 - Copyright (C) 2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage: alternatives --install <link> <name> <path> <priority>
                    [--initscript <service>]
                    [--slave <link> <name> <path>]*
       alternatives --remove <name> <path>
       alternatives --auto <name>
       alternatives --config <name>
       alternatives --display <name>
       alternatives --set <name> <path>

common options: --verbose --test --help --usage --version
                --altdir <directory> --admindir <directory>
[root@aa5149016e33 /]#
 

Как я могу обновить centos, чтобы команды

 gcc --version
 

и

 g   --version
 

обратитесь к gcc 10.2?

Также обратите внимание, что я работаю из корневого каталога

 [root@aa5149016e33 /]# tree -L 1 .
.
├── bin
├── boot
├── cgroup
├── dev
├── etc
├── gcc-10.2-centos
├── gcc-10.2-centos.zip
├── home
├── lib
├── lib64
├── lost found
├── media
├── mnt
├── opt
├── proc
├── root
├── sbin
├── selinux
├── srv
├── sys
├── tmp
├── usr
└── var
 

и

 [root@aa5149016e33 /]# tree -L 1 gcc-10.2-centos/bin/
gcc-10.2-centos/bin/
├── c  
├── cpp
├── g  
├── gcc
├── gcc-ar
├── gcc-nm
├── gcc-ranlib
├── gcov
├── gcov-dump
├── gcov-tool
├── lto-dump
├── x86_64-pc-linux-gnu-c  
├── x86_64-pc-linux-gnu-g  
├── x86_64-pc-linux-gnu-gcc
├── x86_64-pc-linux-gnu-gcc-10.2.0
├── x86_64-pc-linux-gnu-gcc-ar
├── x86_64-pc-linux-gnu-gcc-nm
└── x86_64-pc-linux-gnu-gcc-ranlib

0 directories, 18 files
 

Ответ №1:

Fedora / CentOS не использует альтернативы для выбора компилятора. Это правда, что Fedora / CentOS имеет и использует пакет альтернатив. Однако alternatives не управляет автоматически каждым установленным программным приложением, и каждый программный пакет должен быть явно настроен для использования альтернатив, а в Fedora / CentOS это просто не делается для gcc.

Создание gcc — это немалый подвиг. Для сравнения, использование явного пути к вашей пользовательской сборке gcc кажется незначительной мелочью. Или сначала поместите местоположение вашего пользовательского gcc в переменную среды PATH и перейдите к чему-то другому.