Обновление Fedora Server до версии 37, обновление Postgres не сработало: ОШИБКА: не удалось получить доступ к файлу "$libdir/postgis-3"

Обновление Fedora Server до версии 37, обновление Postgres не сработало: ОШИБКА: не удалось получить доступ к файлу "$libdir/postgis-3"

После того, как все остальное работало отлично (УРА!), Postgresотказалась запускаться (не пугайтесь названия — Postgres был упакован как PostgreSQLдань уважения Полу Аоки, который преобразовал QUELпроцессор языка запросов для использования SQLWAY еще в первом пакетном выпуске в 1995 году — все, кроме упаковки/бренда, использует это название Postgres).

Эта ошибка при запуске не была неожиданной, хотя пакет МОГ предвидеть это для обновлений, поскольку все обновленные установки, вероятно, нуждаются в этом, и запустить для нас соответствующий сценарий обновления; этот сценарий можно запустить следующим образом:

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

К сожалению, это не удалось.

Я проследил цепочку цепочек ошибок — файл журнала в Postgresдомашнем каталоге пользователя, на который указывает промежуточный журнал, выдаваемый stdoutуказанной командой, указывал на проблему с Postgis, который используется при установке.

Наиболее подходящее сообщение об ошибке гласило:

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

К сожалению, не было сказано, где $libdirон должен быть, и, к сожалению, я тоже не знаю, где он находится! Я пока не нашел ни одного каталога, содержащего это имя postgis.

Я предположил, Postgisчто он не обновлен или, возможно, не установлен, но простая проверка установленных пакетов доказала обратное: он называетсяpostgis-3.2.2-1.fc37.x86_64

Для меня стало неожиданностью то, что в сообщении об ошибке говорилось о том, что не удалось найти часть postgis-3, а версия 3 все равно установлена.postgis

У меня пока нет решения. Что вы думаете? Это ДОЛЖНО быть распространенной проблемой для Postgresпользователей, которые также используют Postgis!

решение1

ПостГИСэто расширение, которое устанавливается как пакет. Вам необходимо установить пакет, который подходит как для вашей основной версии postgresql, так и для версии расширения postgis. Например; postgis32_15илиpostgis31_14

$libdirили любые другие предопределенные (в основном идут с компиляцией) конфигурации могут быть изучены с помощьюpg_configклиентское приложение. Вы можете в основном узнатьlibdirвыполнив команду ниже.

pg_config --pkglibdir

если вы не можете найтиpg_configтогда это наиболее вероятно, гдеpsqlкоманда — ( $bindir) .

решение2

В Fedora 37 вы получите это сообщение об ошибке во время обновления базы данных, если вы не установили пакет postgis-upgrade.

Таким образом, полная процедура обновления баз данных с поддержкой PostGIS выглядит примерно так:

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

В целом, хорошей идеей будет просмотреть журналы обновлений (и стандартные /var/lib/pgsql/data/log/postgresql*.log) на случай, если там есть какие-то дополнительные подсказки, специфичные для вашей конкретной базы данных.

Связанный контент