Почему gcc или build-essential не устанавливает последнюю версию GCC (9 на сегодняшний день) на Ubuntu 18.04 LTS? [дубликат]

В чем причина этого?

Спасибо!

0
задан 1 July 2019 в 21:59

1 ответ

В любом данном выпуске Ubuntu build-essential предоставляет наиболее часто необходимые инструменты для сборки пакетов для этого выпуска, объявляя зависимости от различных других пакетов.

Два пакета build-essential всегда зависят от gcc и g++. В каждом выпуске эти пакеты предоставляют (части) Коллекцию компиляторов GNU в версии по умолчанию для этого выпуска, то есть той версии, которая обычно используется для компиляции программ для этого выпуска. В частности, именно эта версия используется для сборки всех бинарных пакетов, представленных в официальных репозиториях Ubuntu. Еще один способ сказать, что это версия, которая используется для сборки этого выпуска Ubuntu .

Другие указали , почему Ubuntu выпускает намеренно часто не предоставляют самые последние версии программного обеспечения . Хотя политика StableReleaseUpdates действительно применяется к пакетам, предоставляющим инструменты разработки, тем не менее, на самом деле не получается ответить, почему build-essential не всегда зависит от последних инструментов, потому что build-essential часто даже не зависит от последних инструментов, которые официально упакованы для выпуска .

Например, когда я пишу это, последняя стабильная версия Ubuntu - 19.04. (Это не выпуск LTS, но стабильный выпуск.) Пакеты gcc и g++, от которых зависит build-essential, предоставляют GCC 8.3 в Ubuntu 19.04 . Однако GCC 9.1 упакован в официальные репозитории для Ubuntu 19.04; он предоставляется пакетами, имена которых оканчиваются на -9. В частности, для GCC 9.1 вместо GCC 8.3 вы должны установить пакет gcc-9 вместо пакета gcc и пакета g++-9 вместо пакета g++ . (На самом деле вам не нужно устанавливать одну версию вместо другой; gcc и gcc-9, а также g++ и g++-9 могут быть установлены одновременно без конфликты.)

Это правда, что политика обновлений стабильного выпуска является причиной, по которой Ubuntu 18.04 LTS не имеет GCC 9. Но это не причина, по которой пакеты build-essential, gcc и g++ предоставить вам старую версию GCC - версию, которая использовалась для сборки бинарных пакетов, доступных для системы. (В 18.04 LTS этой версией является GCC 7.2 .) Пункт из build-essential состоит в том, чтобы дать вам инструменты, которые рекомендованы и официально используются для сборка пакетов для вашего релиза , а назначение пакетов gcc и g++ состоит в предоставлении компонентов GCC, включая команды gcc и g++, которые используются для этой цели.

Таким образом, даже когда релиз Ubuntu официально предоставляет более поздние версии GCC, чем версия, которая используется для сборки системы, эти пакеты предоставляют более раннюю версию.

1
ответ дан 1 July 2019 в 21:59

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

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