Очистить конфликтующие установки postgresql

Чтобы ответить на ваш главный вопрос ( Есть ли попытка [...]? ):

Удивительно, да. Хотя и не относится к языкам или инструментам, которые вы упоминаете.

В течение многих лет (по крайней мере, 15) — задолго до того, как у Python появилась стабильная, принятая система упаковки, и задолго до того, как Node стал мерцать в чьих-либо глазах — операционная система FreeBSD включала систему, известную как «BSDPAN», которая обертывает упаковочную систему CPAN Perl.

Идея состоит в том, что если вы устанавливаете модуль Perl с помощью стандартных инструментов CPAN, вы можете впоследствии манипулировать установленным пакетом с помощью стандартных инструментов упаковки FreeBSD. И, в какой-то степени, наоборот.

Даже когда я принимал активное участие в сообществе Портов FreeBSD (опять же, возвращаясь > 15 лет назад), я никогда не считал BSDPAN очень масштабируемым или поддерживаемым решением. Я не уверен, что он все еще активно поддерживается сегодня (хотя быстрый Google предполагает, что это так).

В современном миретакое начинание имело бы еще большую глупость из-за распространения специфических для языка инструментов установки ... и все причины, упомянутые другими комментаторами.

Лично я предпочитаю оставлять в покое установленные в системе версии различных языков программирования, не устанавливать их через общесистемный менеджер пакетов, а поддерживать частные, полностью независимые установки с помощью таких инструментов, как rbenv, pyenv, plenv, nodenv и т. Д. В этом случае они никоим образом не могут мешать чему-либо, установленному системой (или общесистемным менеджером пакетов).

0
15.07.2016, 18:55
1 ответ

После некоторой борьбы вот что я нашел:

Есть две основные возможности, упомянутые в документации:

  1. Используйте pg_dumpall для экспорта данных из старой службы и psql для импорта их в новую;
  2. Используйте pg_upgrade.

Мой совет: если у вас нет веских причин не делать этого, используйте метод pg_dumpall:

  1. Экспортируйте все из старой службы базы данных (если новая версия уже установлена, используйте новый бинарник pg_dumpall);
  2. Импортируйте все в новую службу базы данных.
  3. Остановите старую службу базы данных.
  4. Убедитесь, что все ваши изменения в postgresql.conf и pg_hba.conf вошли в конфигурацию новой версии; при необходимости перезапустите новую службу.
  5. Проверьте, работают ли ваши приложения.
  6. Удалите старую версию.

В моем случае (используйте -p в зависимости от ситуации):

sudo -s -u postgres
cd /tmp/
pg_dumpall -p 5433 > all.sql
psql -f all.sql

и, как root:

systemctl stop postgresql@9.1-main.service
vimdiff /etc/postgresql/9.{1,4}/main/postgresql.conf
vimdiff /etc/postgresql/9.{1,4}/main/pg_hba.conf
systemctl restart postgresql@9.4-main.service
apt-get remove postgresql-client-9.1 postgresql-9.1

Метод pg_upgrade требует, чтобы вы узнали и указали:

  • старый и новый каталоги данных (например, grep data_directory /etc/postgresql/9.{1,4}/main/postgresql. conf)
  • каталоги старых и новых двоичных файлов (например, dpkg --listfiles postgresql-9.1 | grep '/bin$')
  • Вам нужно начать с каталога, в котором пользователь postgres может писать

. ... и то не всегда срабатывает (см. например pg_upgrade fails with an unspecified error).

2
29.04.2021, 00:12

Теги

Похожие вопросы