summaryrefslogtreecommitdiff
path: root/metadata/news/2021-05-05-python3-9/2021-05-05-python3-9.ru.txt
blob: cfef9d4eeff4f67683283c0e987df4c19979c860 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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 по умолчанию на системах
Gentoo с версии 3.8 на версию 3.9.  Если вы не меняли значения PYTHON_TARGETS и
PYTHON_SINGLE_TARGET, изменение затронет систему сразу: пакетный менеджер
попытается применить изменение при следующем обновлении системы.

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

Пожалуйста, обратите внимание, что метод обновления по умолчанию переключает
пакеты на новую версию питона, когда они пересобираются.  Это означает, что для
пересборки пакета все зависимые пакеты должны уже поддерживать новую версию, и
некоторые программы временно могут не находить свои зависимости во время
обновления (однако, скорее всего, уже запущенные программы будут в порядке).

Если PYTHON_TARGETS или PYTHON_SINGLE_TARGET объявлены в вашем make.conf,
пожалуйста, удалите их оттуда, потому что они будут конфликтовать с показанными
далее кусками из package.use.  Мы не рекомендуем использовать make.conf для
этих переменных, поскольку они мешают применяться значениям по умолчанию для
пакетов, где это необходимо.  В этой новости мы подразумеваем, что вы
используете /etc/portage/package.use или его эквивалент для вашего пакетного
менеджера.

У вас есть выбор из следующих вариантов:

1. Если вы хотите, чтобы питон обновлялся сам, вы можете удалить объявленные
   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
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 требуется удалить его сразу со всего дерева
зависимостей.  Если какие-то установленные пакеты, использующие старую версию
питона, не помечены для обновления, пакетный менеджер покажет ошибки
зависимостей.  Поэтому важно производить обновление с помощью --deep
--changed-use @world, а также перед этим удалить все более не требуемые пакеты:

    emerge --depclean
    emerge -1vUD @world
    emerge --depclean