# 2. Uso de Python en plataformas Unix

## 2.1. Obteniendo e instalando la última versión de Python

### 2.1.1. En 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 compile the latest version of Python from source.

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

Ver también

https://www.debian.org/doc/manuals/maint-guide/first.en.html

  para usuarios de Debian

https://en.opensuse.org/Portal:Packaging

  para los usuarios de OpenSuse

https://docs.fedoraproject.org/en-US/package-maintainers/Packaging_Tutorial_GNU_Hello/

  para los usuarios de Fedora

https://slackbook.org/html/package-management-making-packages.html

  para los usuarios de Slackware

### 2.1.2. En FreeBSD y OpenBSD

- Usuarios FreeBSD, para añadir al paquete use:

      pkg install python3

- Usuarios OpenBSD, para añadir al paquete use:

      pkg_add -r python

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

  Por ejemplo, los usuarios de i386 obtienen la versión 2.5.1 de Python usando:

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

## 2.2. Construyendo Python

Si desea compilar CPython por sí mismo, lo primero que debería hacer es obtener la fuente. Puede descargar la fuente de la última versión o simplemente conseguir un nuevo clon. (Si desea contribuir con parches, necesitará un clon.)

El proceso de construcción consta de los comandos habituales:

    ./configure
    make
    make install

Opciones de configuración y las advertencias para plataformas Unix específicas están ampliamente documentadas en el archivo README.rst en la raíz del árbol de fuentes de Python.

Advertencia

`make install` puede sobreescribir o enmascarar el binario `python3`. Por lo tanto se recomienda `make altinstall` en lugar de `make install` debido a que sólo instala `exec_prefix/bin/pythonversion`.

## 2.3. Rutas y archivos relacionados con Python

Estos están sujetos a diferencias según las convenciones de instalación locales; `prefix` y `exec_prefix` son dependientes de la instalación y deben interpretarse como en el software GNU; pueden ser iguales.

Por ejemplo, en la mayoría de los sistemas Linux, el valor predeterminado para ambos es `/usr`.

Archivo/directorio | Significado
--- | ---
`exec_prefix/bin/python3` | Ubicación recomendada del intérprete.
`prefix/lib/pythonversion`, `exec_prefix/lib/pythonversion` | Ubicaciones recomendadas de los directorios que contienen los módulos estándar.
`prefix/include/pythonversion`, `exec_prefix/include/pythonversion` | Ubicaciones recomendadas de los directorios que contienen los archivos de inclusión necesarios para desarrollar extensiones de Python e incrustar el intérprete.

## 2.4. Miscelánea

Para usar fácilmente los scripts de Python en Unix, debe hacerlos ejecutables, p. ej. con

    $ chmod +x script

y coloque una línea Shebang adecuada en la parte superior del script. Una buena opción es usualmente

    #!/usr/bin/env python3

que busca el intérprete de Python en el conjunto `PATH`. Sin embargo, algunos Unices puede que no tengan el comando env, por lo que es posible que deba codificar `/usr/bin/python3` como la ruta intérprete.

Para usar comandos de shell en sus scripts de Python, mire el módulo `subprocess`.

## 2.5. OpenSSL personalizado

1. Para utilizar la configuración de OpenSSL de su proveedor y el almacén de confianza del sistema, busque el directorio con el archivo `openssl.cnf` o el enlace simbólico en `/etc`. En la mayoría de las distribuciones, el archivo está en `/etc/ssl` o `/etc/pki/tls`. El directorio también debe contener un archivo `cert.pem` y / o un directorio `certs`.

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

2. Descargue, compile e instale OpenSSL. Asegúrese de utilizar `install_sw` y no `install`. El destino `install_sw` no anula `openssl.cnf`.

       $ 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. Construir Python con OpenSSL personalizado (consulte las opciones configure `--with-openssl` y `--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

Nota

Las versiones de parche de OpenSSL tienen una ABI compatible con versiones anteriores. No es necesario volver a compilar Python para actualizar OpenSSL. Es suficiente reemplazar la instalación personalizada de OpenSSL con una versión más nueva.