Re: muss das immer sein? Ports wirrwar

From: Oliver Fromme <oliver(at)fromme.com>
Date: Tue, 4 Jul 2017 13:51:50 +0200 (CEST)

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 majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 04 Jul 2017 - 13:51:53 CEST

search this site