2. Python unter Unix Plattformen verwenden
******************************************


2.1. Die neueste Python-Version beziehen und installieren
=========================================================


2.1.1. Unter Linux
------------------

Python comes preinstalled on most Linux distributions, and is
available as a package on all others.  However there are certain
features you might want to use that are not available on your distro's
package.  You can easily compile the latest version of Python from
source.

In the event that Python doesn't come preinstalled and isn't in the
repositories as well, you can easily make packages for your own
distro.  Have a look at the following links:

Siehe auch:

  https://www.debian.org/doc/manuals/maint-guide/first.en.html
     für Debian-Benutzer

  https://en.opensuse.org/Portal:Packaging
     für OpenSuse-Benutzer

  https://docs.fedoraproject.org/en-US/package-
  maintainers/Packaging_Tutorial_GNU_Hello/
     für Fedora-Benutzer

  https://slackbook.org/html/package-management-making-packages.html
     für Slackware-Benutzer


2.1.2. Unter FreeBSD und OpenBSD
--------------------------------

* FreeBSD-Benutzer fügen das Paket so hinzu:

     pkg install python3

* OpenBSD-Benutzer fügen das Paket so hinzu:

     pkg_add -r python

     pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/4.2/packages/<insert your architecture here>/python-<version>.tgz

  Benutzer von i386 bekommen die Version 2.5.1 von Python zum Beispiel
  so:

     pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/4.2/packages/i386/python-2.5.1p2.tgz


2.1.3. On OpenSolaris
---------------------

You can get Python from OpenCSW.  Various versions of Python are
available and can be installed with e.g. "pkgutil -i python27".


2.2. Python bauen
=================

If you want to compile CPython yourself, first thing you should do is
get the source. You can download either the latest release's source or
just grab a fresh clone.  (If you want to contribute patches, you will
need a clone.)

Der Bauvorgang besteht aus den gewohnten Befehlen:

   ./configure
   make
   make install

Konfigurationsoptionen und Besonderheiten einzelner Unix-Plattformen
sind ausführlich in der Datei README.rst in der Wurzel des Python-
Quellbaums beschrieben.

Warnung:

  "make install" kann die Binärdatei "python3" überschreiben oder
  verdecken. Statt "make install" empfiehlt sich daher "make
  altinstall", denn es installiert nur
  "*exec_prefix*/bin/python*version*".


2.3. Pfade und Dateien im Zusammenhang mit Python
=================================================

Diese können sich je nach den örtlichen Installationsgewohnheiten
unterscheiden. "prefix" und "exec_prefix" hängen von der Installation
ab und sind so zu verstehen wie bei GNU-Software. Sie können auch
gleich sein.

Auf den meisten Linux-Systemen ist die Vorgabe für beide zum Beispiel
"/usr".

+-------------------------------------------------+--------------------------------------------+
| Datei/Verzeichnis                               | Bedeutung                                  |
|=================================================|============================================|
| "*exec_prefix*/bin/python3"                     | Empfohlener Ort des Interpreters.          |
+-------------------------------------------------+--------------------------------------------+
| "*prefix*/lib/python*version*",                 | Empfohlene Orte der Verzeichnisse mit den  |
| "*exec_prefix*/lib/python*version*"             | Standardmodulen.                           |
+-------------------------------------------------+--------------------------------------------+
| "*prefix*/include/python*version*",             | Empfohlene Orte der Verzeichnisse mit den  |
| "*exec_prefix*/include/python*version*"         | Headerdateien, die zum Entwickeln von      |
|                                                 | Python-Erweiterungen und zum Einbetten des |
|                                                 | Interpreters nötig sind.                   |
+-------------------------------------------------+--------------------------------------------+


2.4. Verschiedenes
==================

Damit sich Python-Skripte unter Unix bequem verwenden lassen, musst du
sie ausführbar machen, etwa mit

   $ chmod +x script

und oben im Skript eine passende Shebang-Zeile einfügen. Eine gute
Wahl ist meist

   #!/usr/bin/env python3

was den Python-Interpreter im ganzen "PATH" sucht. Manche Unix-
Varianten haben allerdings keinen Befehl **env**, dann musst du
"/usr/bin/python3" als Interpreterpfad fest eintragen.

Um Shell-Befehle in deinen Python-Skripten zu verwenden, sieh dir das
Modul "subprocess" an.


2.5. Eigenes OpenSSL
====================

1. Um die OpenSSL-Konfiguration deines Anbieters und den
   Vertrauensspeicher des Systems zu verwenden, finde das Verzeichnis
   mit der Datei "openssl.cnf" oder der symbolischen Verknüpfung
   darauf in "/etc". Auf den meisten Distributionen liegt die Datei
   entweder in "/etc/ssl" oder in "/etc/pki/tls". Das Verzeichnis
   sollte außerdem eine Datei "cert.pem" und/oder ein Verzeichnis
   "certs" enthalten.

      $ find /etc/ -name openssl.cnf -printf "%h\n"
      /etc/ssl

2. Lade OpenSSL herunter, baue und installiere es. Achte darauf,
   "install_sw" zu verwenden und nicht "install". Das Ziel
   "install_sw" überschreibt "openssl.cnf" nicht.

      $ curl -O https://www.openssl.org/source/openssl-VERSION.tar.gz
      $ tar xzf openssl-VERSION
      $ pushd openssl-VERSION
      $ ./config \
          --prefix=/usr/local/custom-openssl \
          --libdir=lib \
          --openssldir=/etc/ssl
      $ make -j1 depend
      $ make -j8
      $ make install_sw
      $ popd

3. Baue Python mit dem eigenen OpenSSL (siehe die configure-Optionen "
   --with-openssl" und "--with-openssl-rpath")

      $ pushd python-3.x.x
      $ ./configure -C \
          --with-openssl=/usr/local/custom-openssl \
          --with-openssl-rpath=auto \
          --prefix=/usr/local/python-3.x.x
      $ make -j8
      $ make altinstall

Bemerkung:

  Patch-Veröffentlichungen von OpenSSL haben ein abwärtsverträgliches
  ABI. Du musst Python nicht neu kompilieren, um OpenSSL zu
  aktualisieren. Es genügt, die eigene OpenSSL-Installation durch eine
  neuere Fassung zu ersetzen.
