1
0
mirror of https://github.com/pyenv/pyenv.git synced 2025-11-15 06:43:53 -05:00

openssl: +subheaders

native-api
2021-05-07 00:01:20 +03:00
parent 253b6ae9c8
commit 6dae5cd9c3

@@ -176,84 +176,84 @@ MACOSX_DEPLOYMENT_TARGET=10.14
## ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
0. First, check
* if you actually have OpenSSL and its headers installed (and for the right architecture and ecosystem if there are more than one at your machine)
* if the problem is resolved by upgrading Pyenv to the latest release and to the head version
### 0. First, check
* if you actually have OpenSSL and its headers installed (and for the right architecture and ecosystem if there are more than one at your machine)
* if the problem is resolved by upgrading Pyenv to the latest release and to the head version
1. **OpenSSL is installed to an uncommon location.**
### 1. **OpenSSL is installed to an uncommon location.**
Pass the location of its headers and libraries explicitly:
Pass the location of its headers and libraries explicitly:
```sh
CPPFLAGS="-I<openssl install prefix>/include" \
LDFLAGS="-L<openssl install prefix>/lib" \
pyenv install -v <python version>
```
or, alternatively, [for Python 3.7+](https://bugs.python.org/issue32598), instead of `CPPFLAGS` and `LDFLAGS`:
```sh
CONFIGURE_OPTS="--with-openssl=<openssl install prefix>"
```
E.g. (invocations that worked for various people):
* RHEL6:
```sh
CPPFLAGS="-I<openssl install prefix>/include" \
LDFLAGS="-L<openssl install prefix>/lib" \
pyenv install -v <python version>
CPPFLAGS=-I/usr/include/openssl \
LDFLAGS=-L/usr/lib64 \
pyenv install -v 3.4.3
```
or, alternatively, [for Python 3.7+](https://bugs.python.org/issue32598), instead of `CPPFLAGS` and `LDFLAGS`:
* Arch Linux:
```sh
CONFIGURE_OPTS="--with-openssl=<openssl install prefix>"
LDFLAGS="-L/usr/lib/openssl-1.0" \
CPPFLAGS="-I/usr/include/openssl-1.0" \
pyenv install -v 3.4.3
```
E.g. (invocations that worked for various people):
* If you installed openssl with macports:
* RHEL6:
```sh
CPPFLAGS="-I/opt/local/include/" \
LDFLAGS="-L/opt/local/lib/" \
pyenv install -v 3.4.3
```
* On Ubuntu 14.04 on Dreamhost, an extra flag is required for Python 3.7+:
* First, follow these instructions: https://help.dreamhost.com/hc/en-us/articles/360001435926-Installing-OpenSSL-locally-under-your-username
* Then, run:
```sh
CPPFLAGS=-I/usr/include/openssl \
LDFLAGS=-L/usr/lib64 \
pyenv install -v 3.4.3
CPPFLAGS=-I$HOME/openssl/include \
LDFLAGS=-L$HOME/openssl/lib \
SSH=$HOME/openssl
pyenv install -v 3.7.2
```
* Arch Linux:
### 2. **Your OpenSSL version is incompatible with the Python version you're trying to install**
```sh
LDFLAGS="-L/usr/lib/openssl-1.0" \
CPPFLAGS="-I/usr/include/openssl-1.0" \
pyenv install -v 3.4.3
```
Old Python versions (generally, <3.5 and <2.7.13) require OpenSSL 1.0 while newer systems provide 1.1, and vice versa.
Note that OpenSSL 1.0 is EOL and by now practically unusable on the Internet due to using obsolete standards.
* If you installed openssl with macports:
Install the right OpenSSL version and point the build to its location as per above if needed.
```sh
CPPFLAGS="-I/opt/local/include/" \
LDFLAGS="-L/opt/local/lib/" \
pyenv install -v 3.4.3
```
E.g.:
* On Ubuntu 14.04 on Dreamhost, an extra flag is required for Python 3.7+:
* First, follow these instructions: https://help.dreamhost.com/hc/en-us/articles/360001435926-Installing-OpenSSL-locally-under-your-username
* Then, run:
```sh
CPPFLAGS=-I$HOME/openssl/include \
LDFLAGS=-L$HOME/openssl/lib \
SSH=$HOME/openssl
pyenv install -v 3.7.2
```
* On Debian stretch and Ubuntu bionic, `libssl-dev` is OpenSSL 1.1.x, but support for that was only added in Python 2.7.13, 3.5.3 and 3.6.0. To install earlier versions, you need to replace `libssl-dev` with `libssl1.0-dev`.
2. **Your OpenSSL version is incompatible with the Python version you're trying to install**
```sh
sudo apt-get remove libssl-dev
sudo apt-get update
sudo apt-get install libssl1.0-dev
```
Old Python versions (generally, <3.5 and <2.7.13) require OpenSSL 1.0 while newer systems provide 1.1, and vice versa.
Note that OpenSSL 1.0 is EOL and by now practically unusable on the Internet due to using obsolete standards.
https://github.com/pyenv/pyenv/issues/945#issuecomment-409627448 has a more complex workaround that preserves `libssl-dev`.
Install the right OpenSSL version and point the build to its location as per above if needed.
* On FreeBSD 10-RELEASE and 11-CURRENT, you may need to recompile ``security/openssl`` without SSLv2 support. (See [#464](https://github.com/yyuu/pyenv/issues/464#issuecomment-152821922)).
E.g.:
* On Debian stretch and Ubuntu bionic, `libssl-dev` is OpenSSL 1.1.x, but support for that was only added in Python 2.7.13, 3.5.3 and 3.6.0. To install earlier versions, you need to replace `libssl-dev` with `libssl1.0-dev`.
```sh
sudo apt-get remove libssl-dev
sudo apt-get update
sudo apt-get install libssl1.0-dev
```
https://github.com/pyenv/pyenv/issues/945#issuecomment-409627448 has a more complex workaround that preserves `libssl-dev`.
* On FreeBSD 10-RELEASE and 11-CURRENT, you may need to recompile ``security/openssl`` without SSLv2 support. (See [#464](https://github.com/yyuu/pyenv/issues/464#issuecomment-152821922)).
* On Debian Jessie, you can use backports to install OpenSSL 1.0.2: `sudo apt -t jessie-backports install openssl`
* On Debian Jessie, you can use backports to install OpenSSL 1.0.2: `sudo apt -t jessie-backports install openssl`
## python-build: definition not found