summaryrefslogtreecommitdiff
path: root/metadata/news/2023-04-02-python3-11/2023-04-02-python3-11.pl.txt
blob: 58048570f959c6053003e9d1fec8cb286de6e4e3 (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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
Title: Python 3.11 stanie się domyślną wersją począwszy od 2023-05-01
Author: Michał Górny <mgorny@gentoo.org>
Translator: Michał Górny <mgorny@gentoo.org>
Posted: 2023-04-02
Revision: 1
News-Item-Format: 2.0
Display-If-Installed: dev-lang/python:3.9
Display-If-Installed: dev-lang/python:3.10

Gentoo planuje zmienić domyślną wersję Pythona z 3.10 na 3.11 w dniu
1. maja 2023 r.  Użytkownicy, którzy nie zmieniali wartości flag
PYTHON_TARGETS oraz PYTHON_SINGLE_TARGET nie muszą nic robić.  Menadżer
pakietów automatycznie zaktualizuje wsparcie Pythona do nowej wersji
przy kolejnej aktualizacji systemu po tej zmianie.

Informacje zawarte w tej wiadomości przeznaczone są dla użytkowników,
którzy zmieniali preferowaną wersję Pythona bądź chcą przeprowadzić
aktualizację w bezpieczniejszy sposób.

Uwaga: standardowa metoda aktualizacji podmienia obsługiwaną wersję
Pythona w poszczególnych pakietach w miarę ich aktualizacji.
Oznacza to, że aktualizacja systemu możliwa będzie wyłącznie, jeżeli
wszystkie zainstalowane pakiety obsługują nową wersję.  W trakcie
aktualizacji zależności poszczególnych zainstalowanych programów mogą
stać się tymczasowo niedostępne, nie powinno to jednak mieć wpływu
na działanie już uruchomionych aplikacji.

W tym samym czasie wsparcie Pythona 3.9 zostanie usunięte z eclass.
Paczka interpretera pozostanie wspierana tak długo, jak to będzie
możliwe.  PyPy3.9 będzie wspierane do momentu wydania i stabilizacji
PyPy3.10.


Użytkownicy, którzy wykorzystują plik make.conf do ustawienia wartości
zmiennych PYTHON_TARGETS lub PYTHON_SINGLE_TARGET powinni usunąć
te wartości, gdyż będą one kolidowały z przykładami package.use
przedstawionymi w tej wiadomości.  Wykorzystywanie pliku make.conf
do konfiguracji tych zmiennych jest niewskazane, gdyż ustawienia te
nadpisują domyślne wartości flag zawarte w poszczególnych pakietach.
Dalszy ciąg tej wiadomości zakłada wykorzystywanie package.use
lub równoważnego pliku konfiguracyjnego.


Dostępne są następujące możliwości aktualizacji:

1. Automatyczna aktualizacja wersji Pythona.  Aby skorzystać z tej
   opcji, należy usunąć zmienne PYTHON_TARGETS
   oraz PYTHON_SINGLE_TARGET.  Wówczas menadżer pakietów automatycznie
   przeprowadzi aktualizację ilekroć zmieni się domyślna wersja Pythona
   w Gentoo.  Niemniej, może zaistnieć konieczność ręcznej aktualizacji
   w przypadku wystąpienia problemów.

2. Odroczenie aktualizacji poprzez wymuszenie poprzedniej wersji
   w pliku package.use.

3. Wymuszenie wcześniejszej aktualizacji poprzez podanie nowej wersji
   i dokonanie aktualizacji systemu.

4. Zastosowanie bezpiecznego podejścia (tj. zmniejszającego ryzyko
   niesprawnych programów w trakcie aktualizacji) poprzez wykonanie
   aktualizacji w kilku krokach.  Proces ten jest szczegółowo opisany
   w dalszej części wiadomości.

5. Zastosowanie dowolnej kombinacji zmiennych PYTHON_TARGETS
   oraz PYTHON_SINGLE_TARGET.


Odroczenie aktualizacji
=======================
Aby odroczyć aktualizację do późniejszego terminu, należy wymusić
poprzednią wersję Pythona:

    */* PYTHON_TARGETS: -* python3_10
    */* PYTHON_SINGLE_TARGET: -* python3_10

W ten sposób Python 3.10 zostanie wymuszony na stałe i przyszłe
aktualizacje zostaną zablokowane.  Należy jednak pamiętać, że jest
to rozwiązanie tymczasowe i w przyszłości aktualizacja stanie się
konieczna.


Wymuszenie aktualizacji
=======================
Aby wymusić aktualizację wcześniej, należy wybrać Pythona 3.11:

    */* PYTHON_TARGETS: -* python3_11
    */* PYTHON_SINGLE_TARGET: -* python3_11

Zalecane jest jednak usunięcie tych ustawień po podanym wyżej terminie,
aby nie kolidowały w przyszłości z kolejną zmianą domyślnej wersji
Pythona.


Bezpieczna procedura aktualizacji
=================================
Bezpieczniejszą alternatywą do standardowego procesu jest wprowadzenie
wsparcia Pythona 3.11 w pierwszym kroku, a następnie usunięcie Pythona
3.10.  Należy jednak pamiętać, że będzie wymagało to dwukrotnego
przebudowania wszystkich pakietów używających Pythona, tak więc łączny
czas aktualizacji zostanie wydłużony.

Najpierw załączyć należy obydwie wersje Pythona i przeprowadzić
aktualizację systemu:

    */* PYTHON_TARGETS: -* python3_10 python3_11
    */* PYTHON_SINGLE_TARGET: -* python3_10

Następnie przełączyć należy wartość PYTHON_SINGLE_TARGET i przebudować
pakiety używające tych flag:

    */* PYTHON_TARGETS: -* python3_10 python3_11
    */* PYTHON_SINGLE_TARGET: -* python3_11

W ostatnim kroku należy wyłączyć poprzednią wersję i przeprowadzić
kolejną aktualizację:

    */* PYTHON_TARGETS: -* python3_11
    */* PYTHON_SINGLE_TARGET: -* python3_11

Po terminie zmiany domyślnych wartości, konfigurację tę można usunąć.
Alternatywnie, pozostawienie jej zablokuje przyszłą aktualizację
do Pythona 3.12 i pozwoli na ręczne przeprowadzenie bezpieczniej
aktualizacji.


Proces aktualizacji
===================
Usunięcie Pythona 3.10 wymaga, by odpowiednie flagi zostały jednocześnie
wyłączone w całym drzewie zależności.  Jeżeli niektóre z zainstalowanych
pakietów nie zostaną uwzględnione w planowanej aktualizacji, mogą one
zablokować ten proces.  Dlatego też istotne jest przeprowadzenie
aktualizacji przy pomocy parametrów `--deep --changed-use @world` bądź
równoważnych, jak również wcześniejsze usunięcie niepotrzebnych
pakietów.  Można tego dokonać używając poleceń:

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