Support-Forum
Diskussionen rund um Installation, Betrieb und Anpassungen von Gentoo und dessen Paketen sowie dabei auftretenden (technischen) Problemen.
Deutsches Portal: www.gentoo.de
Hallo, ich habe gemerkt das bei mir Python 3.12.12 Standard ist, obwohl bei Gentoo eigentlich 3.13 current stable ist. Wie setze ich 3.13 als Standard? In meiner make.conf habe ich
Titel: Python 3.13 wird der Standardwert am 2025-05-01
Autor: Michał Górny <mgorny@gentoo.org>
Veröffentlicht: 2025-03-24
Revision: 1
News-Artikel-Format: 2.0
Display-If-Installed: dev-lang/pypy:3.10
Display-If-Installed: dev-lang/python:3.10
Display-If-Installed: dev-lang/python:3.11
Display-If-Installed: dev-lang/python:3.12
Wir planen, das Standard-Python-Ziel von Gentoo-Systemen zu wechseln
am 2025-05-01, von Python 3.12 bis Python 3.13. Wenn Sie sich nicht verändert haben
die Werte von PYTHON_TARGETS oder PYTHON_SINGLE_TARGET, die Änderung wird
Sie haben sofortige Wirkung auf Ihr System und der Paketmanager wird es versuchen
Um beim nächsten Upgrade nach der Änderung automatisch zu wechseln.
Wenn Sie die Werte geändert haben, bevorzugen Sie einen sichereren Ansatz oder haben Probleme
Mit dem Update, weiterlesen.
Bitte beachten Sie, dass die Standard-Upgrade-Methode die Pakete auf das neue Gerät umschaltet
Python-Versionen, wie sie neu aufgebaut werden. Das bedeutet, dass alle voneinander abhängig sind
Pakete müssen die neue Version für das Upgrade unterstützen, um fortzufahren,
und dass einige Programme vorübergehend ihre Abhängigkeiten nicht finden können
während des gesamten Upgrades (obwohl Programme, die bereits gestartet sind
Es ist unwahrscheinlich, dass sie betroffen sind).
Wenn Sie PYTHON_TARGETS oder PYTHON_SINGLE_TARGET deklariert haben
in make.conf, bitte entfernen Sie diese Erklärungen, da sie stören
mit den package.use-Proben unten zur Verfügung gestellt. Verwenden von make.conf für Python
Ziele werden abgeraten, da sie die Anwendung von Paketstandards verhindern
wenn nötig. Diese Nachricht geht davon aus, dass /etc/portage/package.use verwendet wird
oder die äquivalente Datei Ihres Paketmanagers für die Konfiguration.
An dieser Stelle haben Sie einige Konfigurationsoptionen zur Auswahl:
1. Wenn Sie möchten, dass Python-Upgrades automatisch angewendet werden, können Sie entfernen
PYTHON_TARGETS und PYTHON_SINGLE_TARGET-Deklarationen. Wenn
Die Standardänderung, Ihr Paketmanager sollte das Upgrade übernehmen
automatisch. Möglicherweise müssen Sie das Update jedoch noch ausführen
Befehle, wenn irgendwelche Probleme auftreten.
2. Wenn Sie das Upgrade vorerst verschieben möchten, können Sie
Setzen Sie explizit die alten Werte in package.use.
3. Wenn Sie das Upgrade früher erzwingen möchten, können Sie es explizit festlegen
die neuen Werte und führen Sie die Upgrade-Befehle aus.
4. Wenn Sie einen sichereren Ansatz verwenden möchten (d. H. Weniger wahrscheinlich, vorübergehend
Break-Pakete während des Upgrades), können Sie einen mehrstufigen
Upgrade wie unten beschrieben.
5. Schließlich können Sie eine beliebige Kombination von PYTHON_TARGETS verwenden
und PYTHON_SINGLE_TARGET.
Verschieben des Upgrades
==========================
Um das Upgrade aufzuschieben, legen Sie die alten Ziele explizit fest:
Dadurch wird Python 3.12 durchgesetzt und zukünftige Updates blockiert. Allerdings,
Bitte beachten Sie, dass dies nur eine vorübergehende Lösung ist und Sie
Schließlich muss die Migration durchgeführt werden.
Erzwingt das Upgrade
========================
Um das Upgrade früher zu erzwingen, wählen Sie explizit die Python 3.13-Ziele aus:
Es ist jedoch wichtig, daran zu denken, dies nach den Standardeinstellungen zu entfernen
Änderung, da sie den automatischen Wechsel zum nächsten stört
Python Version in der Zukunft.
Sichereres Upgrade-Verfahren
============================
Ein sicherer Ansatz besteht darin, Python 3.13-Unterstützung zuerst Ihrem System hinzuzufügen.
und erst dann Python 3.12 entfernen. Beachten Sie jedoch, dass es sich dabei um zwei handelt
Umbau aller betroffenen Pakete, so wird es spürbar dauern
länger.
Aktivieren Sie zunächst sowohl Python 3.12 als auch Python 3.13 und führen Sie dann das Upgrade aus
Befehle:
Möglicherweise möchten Sie die Zielüberschreibungen nach dem Standardwechsel entfernen.
Alternativ können Sie sie behalten, um das nächste automatische Upgrade zu blockieren
auf Python 3.14, und aktualisieren Sie dann manuell.
Upgrade-Befehle
==================
Die Python 3.12 Bereinigung erfordert, dass Python 3.12 entfernt wird
die kompletten Abhängigkeitsbäume in Charge. Wenn einige der
Installierte Pakete, die eine ältere Python-Version verwenden, werden nicht triagiert
Für das Upgrade wirft der Paketmanager Abhängigkeitskonflikte.
Dies macht es wichtig, dass das Upgrade über ein --tiefes
--changed-use @world upgrade, sowie das alle Streuerpakete
werden vor ihr entfernt, z.B.:
Weitere Python-Implementierungen
=============================================================
Gleichzeitig werden wir auch die Zielunterstützung entfernen
für Python 3.10 (python3_10) und PyPy 3.10 (pypy3). Wenn Sie verwenden würden
das pypy3-Ziel vorher, jetzt müssen Sie explizit aktivieren
Ziele pro Version, wie zum Beispiel:
**/* PYTHON_TARGETS: pypy3_11
Beachten Sie, dass die PyPy-Unterstützung nur für Systeme verfügbar ist, die ~arch akzeptieren
Stichworte.
flammenflitzer wrote:Hallo, ich habe gemerkt das bei mir Python 3.12.12 Standard ist, obwohl bei Gentoo eigentlich 3.13 current stable ist. Wie setze ich 3.13 als Standard? In meiner make.conf habe ich
ganz allgemein gilt: Du brauchst normalerweise keinerlei Einstellungen in Deiner make.conf für Python oder Ruby ... lasse es Gentoo selbst definieren. (Diese Einstellungen sind nur nötig, wenn Du spezielle Python- oder Ruby-Programme hast/nutzt die noch zwingend eine andere Version benötigen, als die derzeitige Standard-Version die Gentoo vorgibt. Ich habe keinerlei Einstellungen in meiner make.conf für Python und Ruby.)
Deshalb meine Empfehlung:
1. Kommentiere beide Einstellungen für Python und Ruby aus, und
2. Prüfe erstmal mit "emerge -uUDvp @world" was Portage nun machen würde.
3. Wenn es gut aussieht, ziehe den "emerge -uUDv @world" durch