|
|
Title: Python 3.9 станет базовым с 2021-06-01
|
|
|
Author: Michał Górny <mgorny@gentoo.org>
|
|
|
Translator: Alexey Sokolov <alexey+gentoo@asokolov.org>
|
|
|
Posted: 2021-05-05
|
|
|
Revision: 1
|
|
|
News-Item-Format: 2.0
|
|
|
Display-If-Installed: dev-lang/python:3.7
|
|
|
Display-If-Installed: dev-lang/python:3.8
|
|
|
|
|
|
1 июня 2021 года мы собираемся переключить Python target, используемый
|
|
|
по умолчанию на системах Gentoo, с версии 3.8 на версию 3.9.
|
|
|
Если вы не меняли значения переменных PYTHON_TARGETS или
|
|
|
PYTHON_SINGLE_TARGET, то упомянутое изменение затронет систему сразу
|
|
|
и пакетный менеджер попытается переключиться на новый Python target
|
|
|
автоматически при следующем обновлении системы.
|
|
|
|
|
|
Если вы изменили значения этих переменных, предпочитаете более
|
|
|
безопасный подход или при обновлении возникли проблемы, то
|
|
|
продолжайте читать далее.
|
|
|
|
|
|
Пожалуйста, обратите внимание, что метод обновления по умолчанию
|
|
|
переключает пакеты на новую версию Python после их пересборки.
|
|
|
Это означает, что все зависящие друг от друга пакеты должны поддерживать
|
|
|
новую версию Python для продолжения обновления и некоторые программы
|
|
|
временно могут не находить свои зависимости во время обновления
|
|
|
(однако, запущенные программы, вероятно, не будут подвержены проблеме).
|
|
|
|
|
|
Если переменные PYTHON_TARGETS или PYTHON_SINGLE_TARGET объявлены
|
|
|
в вашем make.conf файле, пожалуйста, удалите их, так как они будут
|
|
|
конфликтовать с представленными ниже примерами конфигурации package.use.
|
|
|
Мы не рекомендуем использовать файл make.conf для задания значений
|
|
|
переменных Python target, так как это препятствует применению этих
|
|
|
значений по умолчанию для пакетов, когда это необходимо. В этой новости
|
|
|
мы предполагаем, что вы используете файл /etc/portage/package.use
|
|
|
или ваш эквивалент этого файла конфигурации пакетного менеджера.
|
|
|
|
|
|
С этого момента у вас есть выбор из следующих вариантов настройки:
|
|
|
|
|
|
1. Если вы хотите, чтобы Python обновлялся автоматически, вы можете
|
|
|
удалить объявленные переменные PYTHON_TARGETS и PYTHON_SINGLE_TARGET.
|
|
|
Когда их значения по умолчанию изменятся, пакетный менеджер должен
|
|
|
самостоятельно всё обновить. Но если возникнут проблемы, вам всё ещё
|
|
|
может понадобиться запустить команды обновления.
|
|
|
|
|
|
2. Если вы хотите пока отложить обновление, вы можете явно указать
|
|
|
старые значения в файле package.use.
|
|
|
|
|
|
3. Если вы хотите обновиться раньше, вы можете явно задать новые
|
|
|
значения и запустить команды обновления.
|
|
|
|
|
|
4. Если вы хотите использовать более безопасный подход (т.е. с меньшей
|
|
|
вероятностью временной поломки пакетов во время обновления),
|
|
|
вы можете выполнить последовательное обновление, описанное ниже.
|
|
|
|
|
|
5. Наконец, вы можете произвольным образом комбинировать значения
|
|
|
переменных PYTHON_TARGETS и PYTHON_SINGLE_TARGET.
|
|
|
|
|
|
|
|
|
Откладывание обновления
|
|
|
=======================
|
|
|
Чтобы отложить обновление, явно укажите старые значения:
|
|
|
|
|
|
*/* PYTHON_TARGETS: -* python3_8
|
|
|
*/* PYTHON_SINGLE_TARGET: -* python3_8
|
|
|
|
|
|
Это заставит систему использовать Python 3.8 и предотвратит последующие
|
|
|
обновления. Однако, учтите, что такое решение применимо только
|
|
|
в течение несколько месяцев и в конце концов вам всё-таки придётся
|
|
|
провести обновление.
|
|
|
|
|
|
|
|
|
Принудительное обновление
|
|
|
=========================
|
|
|
Чтобы обновиться до Python 3.9 раньше, явно укажите новые значения:
|
|
|
|
|
|
*/* PYTHON_TARGETS: -* python3_9
|
|
|
*/* PYTHON_SINGLE_TARGET: -* python3_9
|
|
|
|
|
|
При этом важно не забыть удалить эти строки после изменения значений
|
|
|
по умолчанию, иначе они помешают последующим автоматическим обновлениям
|
|
|
на следующие версии Python.
|
|
|
|
|
|
|
|
|
Процедура безопасного обновления
|
|
|
================================
|
|
|
Более безопасный подход такой: сначала добавляется в систему поддержка
|
|
|
Python 3.9, а затем удаляется поддержка Python 3.8. Однако, учтите,
|
|
|
что все затронутые пакеты будут пересобраны дважды, что заметно дольше.
|
|
|
|
|
|
Сначала включите Python 3.8 и Python 3.9 и запустите команды обновления:
|
|
|
|
|
|
*/* PYTHON_TARGETS: -* python3_8 python3_9
|
|
|
*/* PYTHON_SINGLE_TARGET: -* python3_8
|
|
|
|
|
|
Затем замените PYTHON_SINGLE_TARGET и ещё раз запустите обновление:
|
|
|
|
|
|
*/* PYTHON_TARGETS: -* python3_8 python3_9
|
|
|
*/* PYTHON_SINGLE_TARGET: -* python3_9
|
|
|
|
|
|
Наконец, переключитесь на окончательную версию и запустите обновление:
|
|
|
|
|
|
*/* PYTHON_TARGETS: -* python3_9
|
|
|
*/* PYTHON_SINGLE_TARGET: -* python3_9
|
|
|
|
|
|
После смены значений по умолчанию вы можете удалить эти настройки.
|
|
|
Или же вы можете оставить их, предотвращая автоматическое обновление
|
|
|
до Python 3.10, и позже обновиться вручную.
|
|
|
|
|
|
|
|
|
Команды обновления
|
|
|
==================
|
|
|
Для очистки системы от Python 3.8 требуется удалить его сразу из
|
|
|
всего дерева зависимостей. Если какие-то установленные пакеты,
|
|
|
использующие старую версию Python, не помечены для обновления,
|
|
|
пакетный менеджер покажет ошибки зависимостей. Поэтому важно проводить
|
|
|
обновление с использованием опций --deep --changed-use @world,
|
|
|
а также перед этим удалить все более не требуемые пакеты:
|
|
|
|
|
|
emerge --depclean
|
|
|
emerge -1vUD @world
|
|
|
emerge --depclean
|