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

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

### 2.1.1. На Linux

Python попередньо встановлено на більшості дистрибутивів Linux і доступний у вигляді пакета на всіх інших. Однак є певні функції, які ви можете використати, але недоступні в пакеті вашого дистрибутива. Ви можете легко скомпілювати останню версію Python із початкового коду.

У випадку, якщо Python не попередньо встановлений і його також немає в репозиторіях, ви можете легко створити пакунки для свого власного дистрибутива. Перегляньте наступні посилання:

Дивись також

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.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 на новішу версію.