Ubuntu 12.04.4 LTS to 14.04.1 LTS upgrade: & ldquo; никакой новый релиз не найден & rdquo;

Изменить:

Предполагается, что вы установили версию сначала, например:

sudo apt install gcc-4.9 g++-4.9

Edit:

[d5 ] И вот один лайнер для тех, кто ленив, просто измените число в конце на нужную вам версию. Он внесет изменения для gcc и / или g ++

ls -la /usr/bin/ | grep -oP "[\S]*(gcc|g\+\+)(-[a-z]+)*[\s]" | xargs bash -c 'for link in ${@:1}; do sudo ln -s -f "/usr/bin/${link}-${0}" "/usr/bin/${link}"; done' 4.9

В этом примере я переключился на 4.9

Нет проверок ошибок и что нет в этом примере, так что вы можете хотите проверить, что будет выполняться до запуска. Просто добавьте gcc перед sudo. Для полноты я также предоставляю контрольную строку:

ls -la /usr/bin/ | grep -oP "[\S]*(gcc|g\+\+)(-[a-z]+)*[\s]" | xargs bash -c 'for link in ${@:1}; do echo sudo ln -s -f "/usr/bin/${link}-${0}" "/usr/bin/${link}"; done' 4.9

Результат проверки должен быть примерно таким:

sudo ln -s -f /usr/bin/g++-4.9 /usr/bin/g++
sudo ln -s -f /usr/bin/gcc-4.9 /usr/bin/gcc
sudo ln -s -f /usr/bin/gcc-ar-4.9 /usr/bin/gcc-ar
sudo ln -s -f /usr/bin/gcc-nm-4.9 /usr/bin/gcc-nm
sudo ln -s -f /usr/bin/gcc-ranlib-4.9 /usr/bin/gcc-ranlib
sudo ln -s -f /usr/bin/x86_64-linux-gnu-g++-4.9 /usr/bin/x86_64-linux-gnu-g++
sudo ln -s -f /usr/bin/x86_64-linux-gnu-gcc-4.9 /usr/bin/x86_64-linux-gnu-gcc
sudo ln -s -f /usr/bin/x86_64-linux-gnu-gcc-ar-4.9 /usr/bin/x86_64-linux-gnu-gcc-ar
sudo ln -s -f /usr/bin/x86_64-linux-gnu-gcc-nm-4.9 /usr/bin/x86_64-linux-gnu-gcc-nm
sudo ln -s -f /usr/bin/x86_64-linux-gnu-gcc-ranlib-4.9 /usr/bin/x86_64-linux-gnu-gcc-ranlib

Вы можете проверить версию после: [!d13 ]

gcc --version

Полу-подробное объяснение:

ls -la / usr / bin / перечисляет все файлы в / usr / bin | pipe (send) вывод к следующей команде grep -oP соответствует регулярному выражению поиска в строке. o показывает только результат не всей согласованной строки. P сообщает grep использовать perl-regex. Я не буду входить в regex здесь, прочитайте, если хотите. xargs просто кладет, он собирает результаты, которые отправляются на него и отправляют все из них до конца. то есть команде, следующей за xargs bash, это bash. Флаг c говорит ему использовать строку в качестве команды. В этом примере он перебирает аргументы, отправленные из xargs, пропуская первый (0-й) аргумент, в этом случае цикл пропускает 4.9. 0-й аргумент используется в цикле для изменения ссылки. ln -s -f Флаг s создает символическую ссылку, f при необходимости отжимает сначала.
1
задан 13 April 2017 в 15:24

0 ответов

Другие вопросы по тегам:

Похожие вопросы: