Many blog posts deal with installing or upgrading PostGIS. Today we'll talk about upgrading related libraries such as GEOS or GDAL. Since PostGIS’ functionality stack relies heavily on these libraries, downloading current library versions is unavoidable; you want to use the latest stunning spatial features. Unfortunately, not all repositories serve PostGIS with the latest libraries. In our example, we'll upgrade GEOS with Ubuntu.
Table of Contents
A customer runs a PostgreSQL 14.5 database with PostGIS 3.2.3 installed under Ubuntu 20.04.4 LTS.
She wants to test ST_ReducePrecision
(https://postgis.net/docs/ST_ReducePrecision.html), a spatial function introduced in PostGIS 3.1.0. Unfortunately, this function requires at least GEOS 3.9.0.
Her system seems to be equipped with GEOS 3.8.0.
She needs to upgrade GEOS. Here are the 3 steps to do that:
As a reminder – to quickly assess which libraries have been installed in the system and particular database, execute the following commands from your psql console or preferred database client.
Unfortunately, Ubuntu does not serve GEOS versions later than 3.8.0 through default repositories for 20.04. This implies building GEOS from source, or switching to another distribution channel-respective repository. For clarification – it’s not sufficient to update GEOS alone, PostGIS must also be rebuilt against the required GEOS.
First, install the necessary build requirements.
Continue by assessing the current geos-configuration with geos-config
to confirm the basis.
Second, download and extract the latest source tar from the GEOS website - and finally, build and install GEOS.
Again, cross-check the geos-configuration with geos-config. It looks pretty good so far ????.
Build requirements must first be installed to the system. The server in this example already runs PostgreSQL and therefore provides some of the needed dependencies. At this point I recommend taking a look at Chapter 2.2.2 of the PostGIS online documentation and subsequently assess your system to identify needed libraries and tools.
Next, download and extract the PostGIS source tar and configure the build.
This results in a configuration message summarizing the upcoming build action, which I recommend you briefly look through. The upcoming listing only contains a subset of the information provided.
You might have noticed that I didn’t install build requirements for SFCGAL. The extensions section indicates this fact and disables SFCGAL support.
Finally, we install the binaries.
Did the upgrade succeed? Let’s quickly check this via psql.
Unfortunately, calling postgis_full_version
does not tell the whole truth and does not guarantee that GEOS 3.11.0 is indeed utilized by PostGIS. I suggest re-running the test-query from the beginning to see the real difference.
TADA – it works as expected. Everybody should be happy. But wait – we didn’t even upgrade PostGIS on the database level. Isn’t that strange? No, because we didn’t change the PostGIS version. We stayed within PostGIS 3.2.3.
For folks who want to upgrade PostGIS and GEOS one after the other, just utilize postgis_extensions_upgrade()
on the database level after you build and install PostGIS. Learn more about upgrading PostGIS here.
In case you need support or have any questions, get in touch with the friendly folks at CYBERTEC. We would love to hear from you.
Leave a Reply