Re: muss das immer sein? Ports wirrwar
Oliver Fromme <[email protected]> Tue, 4 Jul 2017 13:51:50 +0200 (CEST)
| Newsgroups | gmane.os.freebsd.questions.german |
|---|---|
| Message-ID | <[email protected]> |
Hallo, Ich geb' auch mal meinen Senf dazu. :-) Heino Tiedemann wrote: > python-2.7_3,2 lang/python > python2-2_3 lang/python2 > python27-2.7.13_6 lang/python27 > python3-3_3 lang/python3 > python35-3.5.3_4 lang/python35 Also: Wie schon geschrieben wurde, sind tatsächlich nur zwei Versionen von Python installiert, nämlich 2.7.13 und 3.5.3. Es ist relativ normal, dass früher oder später sowohl 2.x als auch 3.x als Dependencies installiert werden, da momentan die Situation ist, dass beide gleichermaßen verwendet werden, aber nicht miteinander kompatibel sind. Mit anderen Worten: Ein Programm, das ursprünglich für Python 2.x entwickelt wurde, erfordert Anpassungen, um mit Python 3 zu funktionieren. (So etwas Ähnliches gab es übrigens auch beim letzten Major- Versionswechsel von Perl.) Der Port lang/python ist ein Meta-Port, der die Default-Major- Version von Python als Dependency hat; aktuell ist dies (noch) lang/python2, und irgendwann in der Zukunft wird dies auf lang/python3 geschwenkt. Diese beiden wiederum sind ebenfalls Meta-Ports, die die Default-Version des jeweiligen Zweiges als Dependency haben. In obigem Fall sind das lang/python27 bzw. lang/python35. Diese ganzen Defaults kann man auch ändern, wenn man möchte. Ich z.B. möchte die aktuellere Version 3.6 von python3 haben; dazu habe ich folgende Zeile in /etc/make.conf: DEFAULT_VERSIONS+= python3=3.6 Und damit schwenkt bei mir lang/python3 auf die Dependency lang/python36, was mir aktuell python36-3.6.1_4 bringt. Zur Frage, warum es die ganzen Meta-Ports gibt, insbesondere lang/python. Der Hauptgrund sind die Symlinks für Binaries. Es gibt viele Skripte und Programme, die einfach nur "python" aufrufen (nicht python2 oder python3). Damit das funktioniert, installiert der Port lang/python in /usr/local/bin einen Symlink auf die Default-Major-Version, d.h. python -> python2. Der Meta-Port lang/python2 wiederum installiert einen Symlink auf das eigentliche Binary: python2 -> python2.7. Darum sollte man auch NICHT die Metaports entfernen, denn dann wären die Symlinks weg, weshalb bestimmte Skripte evtl. nicht mehr funktionieren würden. (Davon abgesehen: Warum sollte man die Metaports entfernen wollen? Die fressen ja kein Brot.) Diese ganze Infrastruktur ist erforderlich, damit überhaupt die parallele Installation mehrerer unterschiedlicher Python- Versionen möglich ist und mit allen gängigen Programmen und Skripten funktioniert. Als reiner Anwender, der nicht selbst in Python programmiert, kann man das ganze weitgehend ignorieren. Normalerweise sorgt die Ports-Collection bzw. pkg(8) automatisch dafür, dass genau die Python-Ports installiert werden, die benötigt werden. Und solange man kein konkretes Problem hat, sollte man auch nicht versuchen, daran herumzufummeln. Gruß Olli -- Oliver Fromme, München -- FreeBSD + DragonFly BSD ``We are all but compressed light'' - Albert Einstein To Unsubscribe: send mail to [email protected] with "unsubscribe de-bsd-questions" in the body of the message