Installing pgrouting on macos - postgresql

I am struggling getting the pgrouting extension to Postgresql to work. I am running PG 13 and attempting to install pgrouting 3.3.0. The hos OS is Mac Monterey 12.0.1 (M1).
I have built pgrouting from source and all seems to go well. I had though to copy the extension control file manually and the so file. When I try to install the extension in PB ('create extension pgrouting cascade') I get:
ERROR: could not load library "/Applications/Postgres.app/Contents/Versions/13/lib/postgresql/libpgrouting-3.3.so": dlopen(/Applications/Postgres.app/Contents/Versions/13/lib/postgresql/libpgrouting-3.3.so, 0x000A): tried: '/Applications/Postgres.app/Contents/Versions/13/lib/postgresql/libpgrouting-3.3.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/usr/lib/libpgrouting-3.3.so' (no such file)
SQL state: 58P01
Any clue to what is wrong?

Related

ERROR: incompatible library while creating extension in Postgresql

I use Centos 7 and Postgresql 12. I installed already PostGIS and created successfully its extension. I'm now tring to install semver extension with create extension semver and get following error:
ERROR: incompatible library »/usr/pgsql-12/lib/semver.so«: version
does not match
According to developer this version should work with my Postgresql 12. Why am i getting this error?
Thanks!
An extension's .so binaries are specific to a major release of Postgres.
If you're installing the extension through yum, there would typically be a different package for each Postgres version. For example, if you installed Postgres 12 using the postgresql12-server package, then you would install PostGIS 3.0 using the postgis30_12 package.
If the package name is just pg-semver, without a Postgres version number, then it's probably intended for your distribution's default postgresql-server package. In CentOS 7, this appears to be Postgres 9.2, so these files won't work on a Postgres 12 server.
If you can't find a PG12-specific package, you'll need to build it yourself, using the instructions here.

PostGIS extension undefined symbol: GEOSCoordSeq_getXY

I am trying to create postgis 3.0 extension on postgresql12 on centos7 (both are installed using yum native rpms)
yum install postgis30_12.x86_64
but i am getting different errors with GEOS. currently the error i am getting is
postgres=# create extension postgis;
ERROR: could not load library
"/usr/pgsql-12/lib/postgis-3.so": /usr/pgsql-12/lib/postgis-3.so:
undefined symbol: GEOSCoordSeq_getXY
geos-config --version
3.8.0
i have resolved the issue by running ldd libgeos_c.so.1 to find which one is being used by postgresql12 and manually replaced it with the one that comes after installing geos38 and the create extension succeeded.
The PostGIS binary you are using was built with a GEOS version that is incompatible with the one installed. You have to either install a different GEOS library or a different PostGIS.
Normally, such an incompatibility should be made obvious by using a different library version. GEOS seems to be sloppy here.

"Ordinal Not Found" when running the Diesel CLI tool

I tried to install diesel_cli and after some environment variable issues I installed it successfully.
When I tried to setup Diesel for my project, it throws an error:
diesel.exe - Ordinal Not Found
The ordinal 4701 could not be located in the dynamic link library "C:\Program Files\PostgreSQL\11\lib\LIBPQ.dll."
Actually the issue was the postgreSQL version.
AFAIK, Postgres 11 is not compatible for diesel setup. Even if i had libpq.dll in lib folder of my postgres/11/lib folder structure. It throws the "pictured" error in the question.
Then, i tried uninstalling the postgres version 11.1 and installed the Postgres 10.6 version it works smoothly.
Note: After postgres install dn't forget to set environment variables
I experienced the same error.
When I dug into it I found that I had a incompatible version of ssleay32.dll on my system path as part of the Intel Wifi drivers.
In my case this was in C:\Program Files\Intel\Intel(R) Management Engine Components\iCLS. Removing this from my system path fixed the issue.

Postgres create POSTGIS extension error with CentOS 6

I am running PostgreSQL 9.3 with Postgis 2.0 on CentOS 6.3.
I installed PostgreSQL and PostGIS according to this instructions:
http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS21CentOS6pgdg
When trying to create Postgis extension
Create Extension Postgis;
I get the following error,
ERROR: could not load library "/usr/pgsql-9.3/lib/rtpostgis-2.1.so": libhdf5.so.6: cannot open shared object file: No such file or directory
May I know how to install the POSTGIS extension successfully?
I have CentOs 6.5 and did this:
1) Install following packages
hdf5-1.8.11-42.1.x86_64.rpm
json-c-0.10-2.1.x86_64.rpm
libhdf5-8-1.8.11-42.1.x86_64.rpm
libhdf5_hl8-1.8.11-42.1.x86_64.rpm
I don't know if I can link files directly here, so look for those files at rpm.pbone.net, download CentOS 6 version.
2) As Postgis requires version hdf5 version 6, you have to execute this commands as root (# is prompt)
# cd /usr/lib64
# ln -s libhdf5_hl.so.8 libhdf5_hl.so.6
# ln -s libhdf5.so.8 libhdf5.so.6
PS Don't forget to install postgresql contrib package, as Postgis requires fuzzystrmatch extension for some modules.
Have you tried installing the package that contains libhdf5 and then tried running again the create extension command? Apparently postgis is linked to that package which is not present on your system.

\d command doesnt work anymore with psql-client 8.3 (upgrade to v9.0)

Since we upgrade our postgresql 8.3 to postgresql 9, \d command doesnt works anymore with psql-client 8.3 :
ERROR: column "reltriggers" does not exist
LINE 1: SELECT relhasindex, relkind, relchecks, reltriggers, relhasr"
In postgres trees psql-client must download as one package with postgresql9. Where i can download only psql-client binary package a.k.a psql for Postgresql 9.0 ?
Update:
This case occur when older psql-client trying to access a newer version of postgres (psql-client: 8.3 trying to access postgres-server: 9.0).
It appears that Ubuntu does not ship PostgreSQL 9.0 yet. So this could be a bit tricky. Either you build PostgreSQL 9.0 from source and only install the client parts that you want, or you download the Debian source package for postgresql-9.0 and build that on Ubuntu and then only install the postgresql-client-9.0 package.
Or you install the postgresql-client-8.4 package. This isn't quite the solution, but it's closer to it, and I verified that it will get you past the error you showed.