Скрыть
Ещё один прикол с апгрейдом F23 -> F24
Дано - версии совта в старой и новой версии Федоры:
text
Fedora 23: Fedora 24:
Postgres v.9.4.8 Postgres v.9.5.3
Postgis v.2.1.8 Postgis v.2.2.1
pgRouting v.2.0.0 pgRouting v.2.2.2
... апгрейдим Федору.
После апгрейда Постгрес не запускается - требуется ручками запустить `postgresql-setup --upgrade`. ОК, запускаем.
Команда ломается, выхлоп такой:
text
command: "/usr/bin/pg_dump" --host "/var/lib/pgsql" --port 5432 --username "postgres" --schema-only --quote-all-identifiers --binary-upgrade --format=custom --file="pg_upgrade_dump_33571.custom" "test1" >> "pg_upgrade_dump_33571.log" 2>&1
pg_dump: [archiver (db)] query failed: ERROR: could not access file "$libdir/postgis-2.1": No such file or directory
pg_dump: [archiver (db)] query was: SELECT pg_catalog.pg_get_viewdef('34854'::pg_catalog.oid) AS viewdef
Вот что про postgis есть в $libdir:
text
# pg_config --pkglibdir
/usr/lib64/pgsql
# ls -1 `pg_config --pkglibdir`/postgis*
/usr/lib64/pgsql/postgis-2.1.so
/usr/lib64/pgsql/postgis-2.2.so
/usr/lib64/pgsql/postgis_topology-2.2.so
Снёс Postgis v.2.2.1 и попробовал взять Postgis v.2.1.8 из
rpmfind - накатил на 24ку - она даже установилась. Результат - ровно тот же.
Похожие баги:
1342285 (Reported: 2016-06-02)
1055293 (Reported: 2014-01-19)
Пока вот такие попытки предпринял (не успешно)
text
-----------------------------------------------------------------
Кажется, для апгрейда Федора сохранила огрызок старого постгресса
в /usr/lib64/pgsql/postgresql-9.4/ - пробую использовать её чтобы
проапдейтить postgis на старых данных
-----------------------------------------------------------------
$ cd /usr/lib64/pgsql/postgresql-9.4/bin
$ ./pg_ctl -D /var/lib/pgsql/data/ start
$ psql -h /tmp
test1=# ALTER EXTENSION postgis UPDATE TO '2.2.1';
ERROR: could not open extension control file "/usr/lib64/pgsql/postgresql-9.4/share/extension/postgis.control": No such file or directory
$ dnf download postgis
Копируем всё из RPM usr/share/pgsql/extension в /usr/lib64/pgsql/postgresql-9.4/share/extension
test1=# ALTER EXTENSION postgis UPDATE TO '2.2.1';
ERROR: could not access file "$libdir/plpgsql": No such file or directory
$ dnf download postgresql-server --releasever=23
Копируем всё отсутствующее из RPM usr/lib64/pgsql в /usr/lib64/pgsql/postgresql-9.4/lib
test1=# ALTER EXTENSION postgis UPDATE TO '2.2.1';
ERROR: could not access file "$libdir/postgis-2.2": No such file or directory
$ ls -s /usr/lib64/pgsql/postgis* /usr/lib64/pgsql/postgresql-9.4/lib/
test1=# ALTER EXTENSION postgis UPDATE TO '2.2.1';
ERROR: incompatible library "/usr/lib64/pgsql/postgresql-9.4/lib/postgis-2.2.so": version mismatch
DETAIL: Server is version 9.4, library is version 9.5.
Если слинковать postgis-2.1.so из старой версии postgis на postgis-2.2.so, то получаем другую ошибку:
test1=# ALTER EXTENSION postgis UPDATE TO '2.2.1';
ERROR: could not find function "gserialized_distance_nd" in file "/usr/lib64/pgsql/postgresql-9.4/lib/postgis-2.2.so"
Всё, кажется, приплыли - постгис 2.2 не запустится под постгрессом 9.4.
---------------------------------------------------------------------------
Пробую ещё раз запустить апгрейд - всё-таки в багзилле человек сказал,
что скопировал файлы из rpm-ок - и у него всё заработало:
---------------------------------------------------------------------------
$ postgresql-setup --debug --upgrade
Жалобы на отсутствие $libdir/librouting (не был уверен для старого или нового постгресса, на всякий случай установил роутинг штатно и подсунул в старый тоже)
$ dnf download pgRouting --releasever=23
$ pgRouting postgis postgis-utils
Копируем все so-шки в /usr/lib64/pgsql/postgresql-9.4/lib/, а usr/share/pgsql/extension в /usr/lib64/pgsql/postgresql-9.4/share/extension
$ ln -s /usr/lib64/pgsql/postgresql-9.4/lib/*rout*.so /usr/lib64/pgsql/
`postgresql-setup --debug --upgrade` выдал ошибки вида:
Could not load library "$libdir/librouting_dd"
ERROR: could not load library "/usr/lib64/pgsql/librouting_dd.so": libboost_thread.so.1.58.0: cannot open shared object file: No such file or directory
--> ага, значит librouting_dd.so и т.п. были нужны новой версии постгресса. Но к новой версии постгресса идёт и новая версия пг-роутинга 2.2.2 в которой есть всего одна библиотека libpgrouting-2.2.so и всё.
---------------------------------------------------------------------------
"А вот теперь точно п-ц" - вдруг подсказал внутренний голос..
Re:Ещё один прикол с апгрейдом F23 -> F24
судя по твоим сообщениям - обновляться не буду
Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0