Title: Python 3.10 Ñтанет базовым Ñ 2022-07-01 Author: MichaÅ‚ Górny <mgorny@gentoo.org> Translator: Alexey Sokolov <alexey+gentoo@asokolov.org> 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