How to Upgrade Python from 2.7.6 to 2.7.9 on Ubuntu 14.04 LTS for Security Patches


24 views

Ubuntu 14.04 LTS (Trusty Tahr) ships with Python 2.7.6 by default, which lacks several important security fixes present in Python 2.7.9. The latter introduced critical SSL/TLS improvements including:

  • Hostname verification in HTTPS connections
  • Support for Server Name Indication (SNI)
  • Improved certificate validation

There are two main approaches to get Python 2.7.9 on Ubuntu 14.04:

Method 1: Using Dead Snakes PPA

The most reliable way is through the Deadsnakes PPA which maintains newer Python versions for older Ubuntu releases:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python2.7=2.7.9-1+trusty1

Method 2: Compiling from Source

For environments where PPAs aren't allowed, you can build from source:

wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar xzf Python-2.7.9.tgz
cd Python-2.7.9
./configure --prefix=/usr/local --enable-optimizations
make
sudo make altinstall

After installation, verify the Python version and SSL support:

python2.7 -c "import ssl; print(ssl.OPENSSL_VERSION)"
python2.7 -V

You might need to reinstall pip and other tools:

wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
sudo python2.7 get-pip.py
sudo pip2.7 install --upgrade setuptools

Common problems and their solutions:

  • Broken dependencies: Run sudo apt-get -f install
  • Conflicting packages: Use update-alternatives to manage multiple Python versions
  • SSL module missing: Ensure libssl-dev is installed before compiling

Remember that Ubuntu's system tools rely on Python 2.7.6. To avoid breaking system functionality:

  • Never remove Python 2.7.6 completely
  • Use virtual environments for projects requiring 2.7.9
  • Consider using pyenv for version management
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncurses5-dev libncursesw5-dev xz-utils tk-dev
curl https://pyenv.run | bash
pyenv install 2.7.9
pyenv global 2.7.9

Ubuntu 14.04 LTS (Trusty Tahr) ships with Python 2.7.6 by default, but version 2.7.9 introduced critical security improvements - most notably the ssl module enhancements and HTTPS verification capabilities. Many legacy systems still require Python 2.7, making this upgrade path valuable for security-conscious developers.

First attempt using Ubuntu's package manager:

sudo apt-get update
sudo apt-get install python2.7=2.7.9*

If this fails (likely on 14.04), you'll see output indicating the version isn't available in standard repositories.

When package managers don't have the version you need, source compilation is reliable:

wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar xvf Python-2.7.9.tgz
cd Python-2.7.9
./configure --prefix=/usr/local --enable-optimizations
make
sudo make altinstall

The altinstall prevents overwriting the system Python. Verify with:

/usr/local/bin/python2.7 --version

For project-specific usage without affecting system Python:

sudo apt-get install python-virtualenv
virtualenv -p /usr/local/bin/python2.7 myproject
source myproject/bin/activate

Common issues you might encounter:

sudo apt-get install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev

After installation, verify SSL support:

python -c "import ssl; print(ssl.OPENSSL_VERSION)"

Should show OpenSSL 1.0.1 or later (included in Python 2.7.9+).

Test critical functionality with:

python -c "import urllib2; print(urllib2.urlopen('https://www.python.org').read(100))"