If you’re working on geospatial data, then GDAL/OGR should definitely be part of your toolbox. It’s a collection of command-line utilities that allows you to manipulate vector and raster data.

Personally, I find it a bit unwieldy to install, with multiple guides and instructions scattered all over the internet. In this post, I decided to compile all installation instructions that worked for me. Hopefully you’ll also find them useful.

First things first! My machine runs on Ubuntu 16.04. My GDAL/OGR versions are both 2.3.3 released 2018/12/14. Also, I don’t claim this to be the ground-truth for GDAL/OGR installation. If some things didn’t work, then feel free to comment!


It’s good to have GDAL/OGR installed system-wide, then export the PATH where it is located. In this section, we’ll talk about different ways on how to accomplish that. Just to verify if you have GDAL/OGR in your system, execute the following commands:

$ gdalinfo --version
$ ogrinfo --version

If it works, then why are you here? Else, read on!

Using conda

Personally, the easiest way to install GDAL is through conda. If you have the Anaconda distribution (or miniconda), then simply execute the following command:

$ conda install gdal

And voila! GDAL/OGR is already installed. GDAL is installed via this way in my machine. If I run which gdalinfo, it shows the following:

$ which gdalinfo
  • PRO: If you have conda, then this is just a one-step process.
  • CON: If you don’t really use conda, or just want a lightweight environment for what you’re doing, then installing a distribution may be an overkill. You can try miniconda, but again, there’s overhead.

You definitely want to start managing your conda environments here. There was a time when my GDAL version bumped down when installing another library.

Using your package manager

For now, I’m going to put instructions for Ubuntu. If you would like to contribute for Windows and MacOS, then feel free to comment below!

First, you need to add the ubuntugis repository:

$ add-apt-repository ppa:ubuntugis/ppa && apt-get update

(Optional) You might also want more recent versions of GDAL in your system. I’d definitely recommend this if you know what you’re doing and you have clear reasons why you want X version of GDAL:

$ add-apt-repository ppa:nextgis/ppa && apt-get update 

In this link, you can see which GDAL version is available for which series. I’m currently on Xenial (16.04), so I can install GDAL 2.1.3

$ apt-get install gdal-bin

(Optional) I also recommend installing the header files just in case you’ll use a program or application that depends on it. In this case,

$ apt-get install libgdal-dev

Once you’ve installed the one above, you might want to include the header files in your system so that gcc can see them:

export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal


Bindings are necessary in case you want to write or use libraries that depend on GDAL/OGR. This is still a growing list, so feel free to comment if you want to add more!

Python bindings

I think one of the most important GDAL-related python package is osgeo. This is in fact a Python binding for both GDAL and OGR. Installing this also gives you access to the gdal_merge.py command-line utility. To install, run:

pip3 install                                    \
    --global-option=build_ext                   \ 
    --global-option="-I/usr/include/gdal"       \
    GDAL==`gdal-config --version`

Note that you need to have gdal installed first in your system before executing the command above. This automatically installs the proper binding given the GDAL version in your system.


Thank you Ardie Orden for including additional instructions for Debian Buster in the comments:

$ sudo apt-get install -y gdal-bin python3-gdal python-gdal libgdal-dev g++
$ CPLUS_INCLUDE_PATH=/usr/include/gdal
$ C_INCLUDE_PATH=/usr/include/gdal
$ pip3 install GDAL=2.4.0