# 2. Використання Python на платформах Unix

## 2.1. Отримання та встановлення останньої версії Python

### 2.1.1. На 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:

Дивись також

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

  для користувачів Debian

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

  для користувачів OpenSuse

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

  для користувачів Fedora

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

  для користувачів Slackware

### 2.1.2. На FreeBSD і OpenBSD

- Користувачі FreeBSD, щоб додати пакет, використовуйте:

      pkg install python3

- Користувачі OpenBSD, щоб додати пакет, використовуйте:

      pkg_add -r python

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

  Наприклад, користувачі i386 отримують версію Python 2.5.1 за допомогою:

      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

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.)

Процес збирання складається зі звичайних команд:

    ./configure
    make
    make install

Параметри конфігурації і застереження для конкретних платформ Unix детально задокументовані у файлі README.rst у корені дерева вихідних кодів Python.

Попередження

`make install` може перезаписати або маскувати двійковий файл `python3`. Таким чином, `make altinstall` рекомендується замість `make install`, оскільки він встановлює лише `exec_prefix/bin/pythonversion`.

## 2.3. Шляхи та файли, пов’язані з Python

These are subject to difference depending on local installation conventions; `prefix` and `exec_prefix` are installation-dependent and should be interpreted as for GNU software; they may be the same.

Наприклад, у більшості систем Linux типовим для обох є `/usr`.

Файл/каталог | Значення
--- | ---
`exec_prefix/bin/python3` | Рекомендоване місце розташування перекладача.
`prefix/lib/pythonversion`, `exec_prefix/lib/pythonversion` | Рекомендоване розташування каталогів, що містять стандартні модулі.
`prefix/include/pythonversion`, `exec_prefix/include/pythonversion` | Рекомендовані розташування каталогів, що містять файли включення, необхідні для розробки розширень Python і вбудовування інтерпретатора.

## 2.4. Різне

Щоб легко використовувати сценарії Python в Unix, вам потрібно зробити їх виконуваними, напр. з

    $ chmod +x script

і помістіть відповідний рядок Shebang у верхній частині сценарію. Зазвичай хороший вибір:

    #!/usr/bin/env python3

який шукає інтерпретатор Python у всьому `PATH`. Однак деякі Unix можуть не мати команди env, тому вам може знадобитися жорстко закодувати `/usr/bin/python3` як шлях інтерпретатора.

Щоб використовувати команди оболонки у ваших сценаріях Python, подивіться на модуль `subprocess`.

## 2.5. Спеціальний OpenSSL

1. Щоб використовувати конфігурацію OpenSSL і сховище довіри системи вашого постачальника, знайдіть каталог із файлом `openssl.cnf` або символічним посиланням у `/etc`. У більшості дистрибутивів файл знаходиться або в `/etc/ssl`, або `/etc/pki/tls`. Каталог також має містити файл `cert.pem` та/або каталог `certs`.

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

2. Завантажте, створіть і встановіть OpenSSL. Переконайтеся, що ви використовуєте `install_sw`, а не `install`. Ціль `install_sw` не перевизначає `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. Build Python with custom OpenSSL (see the configure `--with-openssl` and `--with-openssl-rpath` options)

       $ 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

Примітка

Патчі OpenSSL мають зворотну сумісність ABI. Вам не потрібно перекомпілювати Python, щоб оновити OpenSSL. Досить замінити спеціальну установку OpenSSL на новішу версію.