Почему в Debian 12 использовался gcc-10? (cat /proc/version)

Вопрос или проблема

На Debian 12 с KDE cat /proc/version возвращает:

Версия Linux 5.10.0-17-amd64 ([email protected]) (gcc-10
(Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils для Debian)
2.35.2) #1 SMP Debian 5.10.136-1 (2022-08-13)

Почему отображается gcc-10 / Debian 10, а не gcc-12 / Debian 12? Это проблема?

Я узнал об этом, когда исследовал, почему xbindkeys продолжал работать долгое время после обновления до D12 и Wayland, несмотря на то, что он не должен работать под Wayland. Он продолжал работать несколько месяцев после обновления пока вдруг не перестал работать, сломав мою конфигурацию мыши, поэтому я хотел увидеть свой номер версии, так как подозревал, что это может быть связано с недавним точечным обновлением. У меня последняя версия Debian, и на данный момент это 12.7 (подтверждено с помощью cat /etc/debian_version).

gcc --version показывает gcc (Debian 12.2.0-14) 12.2.0.

Возможно, у меня установлены права доступа для gcc по этой причине в целях безопасности, как рекомендовано sudo lynis audit system: sudo chmod 0444 /usr/bin/gcc, которые я изменяю только когда компилирую что-то с помощью gcc. Я не видел никаких сообщений об ошибках или подобных проблем во время обновления. Нужно ли изменить эти права перед обновлением?

Пакеты ядра не обязательно используют системную версию GCC; иногда они используют немного более старую версию. «Debian» версия, указанная наряду с версией GCC, не является релизом Debian, это версия пакета GCC для Debian.

Однако в вашем случае несоответствие происходит от того, что вы используете ядро Debian 11, и Debian 11 в основном использовал GCC 10. Debian 12 использует ядра серии 6.1, а не 5.10.

(В любом случае, большинство пакетов собираются с любой версией соответствующего компилятора, которая находится в нестабильной ветке на момент их загрузки или когда они в последний раз пересобирались; это может не быть компилятором по умолчанию в окончательном релизе Debian. Исключение составляют пакеты, которые обновляются в рамках релиза; они собираются с соответствующим компилятором в этом релизе.)

Права доступа не имеют значения во время обновления пакетов, если они не мешают запуску необходимой программы во время preinst; это не проблема с GCC. Права доступа возвращаются к значениям по умолчанию для пакета, когда пакет распаковывается.

Ответ или решение

Почему в Debian 12 используется gcc-10?

Когда вы выполните команду cat /proc/version в системе Debian 12 с KDE, вы, возможно, заметите следующую строку:

Linux version 5.10.0-17-amd64 (...)(gcc-10 (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2) #1 SMP Debian 5.10.136-1 (2022-08-13)

Это может вызвать вопрос, почему система показала версию gcc-10, а не gcc-12, который является стандартным компилятором в Debian 12.

Почему используется gcc-10?

Основные причины включают следующее:

  1. Обоснования выбора версии компилятора для ядра:

    • Пакеты ядра в Debian не всегда компилируются с последней версией компилятора, доступной на данный момент. В данном случае ядро версии 5.10 скомпилировано с использованием gcc-10. Это распространённая практика, направленная на поддержание стабильности и предсказуемости. Разработчики Debian могут использовать более старую, но проверенную версию компилятора, чтобы избежать возможных проблем с совместимостью и стабильностью.
  2. Версия компилятора и версии Debian:

    • Указанная версия компилятора gcc, как и пометка "Debian 10.2.1-6", относится не к версии самой ОС, а к пакету gcc в Debian. Это означает, что gcc-10 был актуальным в рамках предыдущей версии Debian (11), и его использовали для сборки пакетов, куда входило и текущее ядро.
  3. Версии ядра и стабильность:

    • Как было упомянуто, Debian 12 в основном использует ядра из серии 6.1, но ваше ядро 5.10 является частью предыдущего выпуска, что и объясняет использование более старой версии gcc.
  4. Обновление пакетов и компиляция:

    • Большинство пакетов повседневного использования компилируются с последней доступной версией компилятора в момент их загрузки в репозитории unstable. Это означает, что пакеты, которые обновляются в рамках существующей версии, будут использовать в качестве компилятора ту версию, которая была актуальна в момент их сборки. Исходя из вашего описания, возможно, вы используете комбинацию старого ядра и более новых пользовательских пакетов.

О правами доступа к gcc и их влиянии на обновления

Судя по тому, что вы указали в вопросе, вы изменили права доступа к исполняемому файлу gcc с помощью команды sudo chmod 0444 /usr/bin/gcc. Этот шаг может ограничивать возможности использования gcc для компиляции, но не должен оказывать влияния на обновление пакетов, если вы не изменили права доступа к важным исполняемым файлам, которые используются в установочных скриптах. Права доступа к исполняемым файлам будут восстановлены при следующем обновлении пакета, если они были изменены.

Однако, если вы собираетесь самостоятельно компилировать программы, то перед этим желательно восстановить права доступа до стандартных значений:

sudo chmod 755 /usr/bin/gcc

Заключение

Использование gcc-10 в Debian 12 связано с необходимостью поддержания стабильности и надежности системы, особенно когда речь идет о сборке ядра. Это не является ошибкой и отображает общепринятые методы управления версиями программного обеспечения в дистрибутивах на основе Debian. Если у вас есть дополнительные вопросы или понадобятся уточнения по другим аспектам Debian, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...