diff --git a/Common-build-problems.md b/Common-build-problems.md index 8afe072..d5787c2 100644 --- a/Common-build-problems.md +++ b/Common-build-problems.md @@ -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/include" \ +LDFLAGS="-L/lib" \ +pyenv install -v +``` + +or, alternatively, [for Python 3.7+](https://bugs.python.org/issue32598), instead of `CPPFLAGS` and `LDFLAGS`: + +```sh +CONFIGURE_OPTS="--with-openssl=" +``` + +E.g. (invocations that worked for various people): + +* RHEL6: ```sh - CPPFLAGS="-I/include" \ - LDFLAGS="-L/lib" \ - pyenv install -v + 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=" + 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