diff --git a/.travis.yml b/.travis.yml
index 4c4b9990f98e8eb2075dc01f79047932b1649f45..73482d2464b7e97250a1495ab8f1af077bac2304 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,8 +1,28 @@
+sudo: true
+
+    # fully specify builds, include can't dynamically expand matrix entries
+    # relative order of sudo and env is important so that addons: is recognized
+    - os: linux
+      dist: trusty
+      sudo: required
+      env: TARGET="linux"
+      addons:
+        apt:
+          sources:
+          - ubuntu-toolchain-r-test
+          packages:
+          - gcc-4.9
+          - g++-4.9
 matrix:
   include:
     - os: osx
     - os: linux
       dist: trusty
+    - os: linux
+      sudo: false
+      cache:
+        directories:
+        - ~/.pyenv
 
 env:
 - PYENV_PYTHON_VERSION=3.5.0
diff --git a/ci/travis/before_install.sh b/ci/travis/before_install.sh
index a4fd6c2425309420b2e7d418109ba9fb63fbf843..e275486bc0f9f96480c2aed752936dc2e87af43d 100755
--- a/ci/travis/before_install.sh
+++ b/ci/travis/before_install.sh
@@ -10,6 +10,7 @@ then
     brew install pyenv-virtualenv
 elif [ $TRAVIS_OS_NAME == "linux" ]
 then
+    sudo apt-get update
     sudo apt-get install libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 \
             libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync0 libxcb-sync0-dev \
             libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0 \
@@ -27,7 +28,8 @@ pyenv activate sakia-env
 if [ $? -ne 0 ]
 then
     echo "Sakia env cache cleared, rebuilding it..."
-    env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install $PYENV_PYTHON_VERSION
+    [ $TRAVIS_OS_NAME == "osx" ] && env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install $PYENV_PYTHON_VERSION
+    [ $TRAVIS_OS_NAME == "linux" ] && PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install $PYENV_PYTHON_VERSION
 
     pyenv shell $PYENV_PYTHON_VERSION
     pyenv virtualenv sakia-env