Title: Python 3.10 станет базовым с 2022-07-01 Author: Michał Górny Translator: Alexey Sokolov Posted: 2022-06-13 Revision: 1 News-Item-Format: 2.0 Display-If-Installed: dev-lang/python:3.8 Display-If-Installed: dev-lang/python:3.9 1 июля 2022 года мы собираемся переключить Python target, используемый по умолчанию на системах Gentoo, с версии 3.9 на версию 3.10. Если вы не меняли значения переменных 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_9 */* PYTHON_SINGLE_TARGET: -* python3_9 Это заставит систему использовать Python 3.9 и предотвратит последующие обновления. Однако, учтите, что такое решение временное, и в конце концов вам всё-таки придётся провести обновление. Принудительное обновление ========================= Чтобы обновиться до Python 3.10 раньше, явно укажите новые значения: */* PYTHON_TARGETS: -* python3_10 */* PYTHON_SINGLE_TARGET: -* python3_10 При этом важно не забыть удалить эти строки после изменения значений по умолчанию, иначе они помешают последующим автоматическим обновлениям на следующие версии Python. Процедура безопасного обновления ================================ Более безопасный подход такой: сначала добавляется в систему поддержка Python 3.10, а затем удаляется поддержка Python 3.9. Однако, учтите, что все затронутые пакеты будут пересобраны дважды, что заметно дольше. Сначала включите Python 3.9 и Python 3.10 и запустите команды обновления: */* PYTHON_TARGETS: -* python3_9 python3_10 */* PYTHON_SINGLE_TARGET: -* python3_9 Затем замените PYTHON_SINGLE_TARGET и ещё раз запустите обновление: */* PYTHON_TARGETS: -* python3_9 python3_10 */* PYTHON_SINGLE_TARGET: -* python3_10 Наконец, переключитесь на окончательную версию и запустите обновление: */* PYTHON_TARGETS: -* python3_10 */* PYTHON_SINGLE_TARGET: -* python3_10 После смены значений по умолчанию вы можете удалить эти настройки. Или же вы можете оставить их, предотвращая автоматическое обновление до Python 3.11, и позже обновиться вручную. Команды обновления ================== Для очистки системы от Python 3.9 требуется удалить его сразу из всего дерева зависимостей. Если какие-то установленные пакеты, использующие старую версию Python, не помечены для обновления, пакетный менеджер покажет ошибки зависимостей. Поэтому важно проводить обновление с использованием опций --deep --changed-use @world, а также перед этим удалить все более не требуемые пакеты: emerge --depclean emerge -1vUD @world emerge --depclean