Al actualizar Fedora Server a 37, la actualización de Postgres no funcionó: ERROR: no se pudo acceder al archivo "$libdir/postgis-3"

Al actualizar Fedora Server a 37, la actualización de Postgres no funcionó: ERROR: no se pudo acceder al archivo "$libdir/postgis-3"

Después de que se demostró que todo lo demás funcionaba bien (¡YAY!), Postgresse negó a iniciar (no se deje sorprender por el nombre: Postgres se empaquetó como PostgreSQLun elogio de la conversión de Paul Aoki del QUELprocesador de lenguaje de consulta para usar SQLWAY en el primer paquete). lanzamiento en 1995; todo menos el empaque/marca usa el nombre Postgres).

Esta falla al iniciar no fue inesperada, aunque el paquete PODRÍA haber anticipado esto para las actualizaciones, ya que todas las instalaciones actualizadas probablemente necesiten hacer esto y ejecutar el script de actualización apropiado para nosotros; ese script se puede ejecutar así:

postgresql-setup --upgrade --upgrade-from postgresql

Desafortunadamente, fracasó.

Seguí el rastro de las migas de pan de error: un archivo de registro en el Postgresdirectorio de inicio del usuario, señalado por un registro intermedio que se escupe stdoutmediante dicho comando, señaló un problema con Postgis, que es utilizado por la instalación.

El mensaje de error más pertinente decía:

ERROR:  could not access file "$libdir/postgis-3"

Desafortunadamente, no decía dónde $libdirse supone que debe estar y, igualmente desafortunadamente, ¡tampoco sé dónde está! Todavía no he encontrado ningún directorio que contenga el nombre postgis.

Supuse Postgisque no estaba actualizado o tal vez no estaba instalado, pero resultó incorrecto con una simple verificación de los paquetes instalados: se llamapostgis-3.2.2-1.fc37.x86_64

Como el mensaje de error se quejaba de no encontrar una parte postgis-3y, sin embargo, hay una postgisversión 3 instalada, fue una sorpresa para mí.

Aún no tengo solución. ¿Pensamientos? ¡Esto DEBE ser un problema común para Postgreslos usuarios que también usan Postgis!

Respuesta1

PostGISes una extensión que se instala como paquete. Debe instalar el paquete que se adapte tanto a su versión principal de postgresql como a su versión de extensión de postgis. Como; postgis32_15opostgis31_14

$libdiro cualquier otra configuración predefinida (en su mayoría viene con compilación) se puede aprender conpg_configaplicación cliente. Básicamente puedes aprenderlibdirejecutando el siguiente comando.

pg_config --pkglibdir

si no puedes encontrarpg_configentonces es más probable que sea dondepsqlEl comando es ( $bindir).

Respuesta2

En Fedora 37, recibe este mensaje de error durante la actualización de la base de datos si no ha instalado el postgis-upgradepaquete.

Por lo tanto, el procedimiento de actualización completo para bases de datos habilitadas para Postgis es algo como esto:

systemctl start postgresql.service
# => start fails fails and some hints are logged
dnf install postgresql-upgrade postgis-upgrade
postgresql-setup --upgrade
systemctl start postgresql.service
sudo -u postgres psql -f /var/lib/pgsql/update_extensions.sql
sudo -u postgres reindexdb yourdb

En general, es una buena idea revisar los registros de actualización (y el estándar /var/lib/pgsql/data/log/postgresql*.log) en caso de que haya algunas sugerencias adicionales, específicas para su base de datos concreta.

información relacionada