PostgreSQL не может переустановить после обновления Ubuntu с 12.04 по 14.04

Я запустил do-release-upgrade, чтобы обновить сервер Ubuntu 12.04 до Ubuntu 14.04. Казалось, что это происходит гладко, но когда я сделал apt-get update после обновления, я заметил, что пакеты PostgreSQL по-прежнему рассматривают точные репозитории вместо надежных репозиториев. Я выполнил инструкции, чтобы добавить надежные репозитории и переместил файл .list, содержащий точные репозиции, во временный каталог в качестве резервной копии. После того, как я это сделал, sudo apt-get upgrade потерпел неудачу, и я не смог заставить его работать полностью снова, даже после восстановления точных репозиториев. Я не слышал сообщений об ошибках. Поскольку это сервер разработки, и все данные несущественны, я решил просто переустановить PostgreSQL. Это несколько раз провалилось после нескольких попыток удалить любую настраиваемую конфигурацию, которую мы, возможно, имели на сервере, который, как я думал, может мешать. Я могу успешно выполнить sudo apt-get install postgresql-common, но если я попробую sudo apt-get install postgresql-9.5, это не сработает со следующим:

Setting up postgresql-9.5 (9.5.5-1.pgdg14.04+1) ...
Creating new cluster 9.5/main ...
  config /etc/postgresql/9.5/main
  data   /var/lib/postgresql/9.5/main
  locale en_US.UTF-8
  socket /var/run/postgresql
  port   5432
update-alternatives: using /usr/share/postgresql/9.5/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
 * Starting PostgreSQL 9.5 database server                                                                                             
 * Failed to issue method call: Unit postgresql@9.5-main.service failed to load: No such file or directory. See system logs and 'systemctl status postgresql@9.5-main.service' for details.
                                                                                                                               [fail]
invoke-rc.d: initscript postgresql, action "start" failed.
dpkg: error processing package postgresql-9.5 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of postgresql-contrib-9.5:
 postgresql-contrib-9.5 depends on postgresql-9.5 (= 9.5.5-1.pgdg14.04+1); however:
  Package postgresql-9.5 is not configured yet.

dpkg: error processing package postgresql-contrib-9.5 (--configure):
 dependency problems - leaving unconfigured
Setting up sysstat (10.2.0-1) ...
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          update-alternatives: using /usr/bin/sar.sysstat to provide /usr/bin/sar (sar) in auto mode
Processing triggers for libc-bin (2.19-0ubuntu6.9) ...
Errors were encountered while processing:
 postgresql-9.5
 postgresql-contrib-9.5
E: Sub-process /usr/bin/dpkg returned an error code (1)

Jan 17 15:31:31 beta kernel: [    4.029504] systemd-journald[543]: Failed to resolve 'systemd-journal' group: No such process

Если я попробую systemctl status postgresql@9.5-main.service, я получу:

postgresql@9.5-main.service
   Loaded: error (Reason: No such file or directory)
   Active: inactive (dead)

Файл журнала /var/log/postgresql/postgresql-9.5-main.log пуст, поэтому я не уверен, где еще проверить журналы. После того, как вы не смогли установить, я прохожу через инструкции здесь , чтобы выполнить полную деинсталляцию. Я не могу сказать, была ли эта проблема с PostgreSQL или обновленным сервером.

Точный Выход dpkg -l "postgresql*":

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                         Version             Architecture        Description
+++-============================-===================-===================-==============================================================
un  postgresql-7.4                                           (no description available)
un  postgresql-8.0                                           (no description available)
un  postgresql-9.1                                           (no description available)
iF  postgresql-9.5               9.5.5-1.pgdg14.04+1 amd64               object-relational SQL database, version 9.5 server
un  postgresql-client                                        (no description available)
ii  postgresql-client-9.5        9.5.5-1.pgdg14.04+1 amd64               front-end programs for PostgreSQL 9.5
ii  postgresql-client-common     178.pgdg14.04+1     all                 manager for multiple PostgreSQL client versions
ii  postgresql-common            178.pgdg14.04+1     all                 PostgreSQL database-cluster manager
iU  postgresql-contrib-9.5       9.5.5-1.pgdg14.04+1 amd64               additional facilities for PostgreSQL
un  postgresql-doc-9.5                                       (no description available)

1
задан 23 May 2017 в 15:39

3 ответа

То же самое касается Ubuntu с 12.04 по 14.04

Исправлено добавлением строки

alias pg_ctlcluster="pg_ctlcluster --skip-systemctl-redirect"

в /usr/share/postgresql-common/init.d-functions после

init_functions=/lib/lsb/init-functions

в марионетке это выглядит так

  package { 'postgresql-common': ensure => 'installed' }
  file_line { 'Patch 1 /usr/share/postgresql-common/init.d-functions':
    path => '/usr/share/postgresql-common/init.d-functions',
    line => 'alias pg_ctlcluster="pg_ctlcluster --skip-systemctl-redirect"',
    after => "init_functions=/lib/lsb/init-functions",
  }
5
ответ дан 23 May 2018 в 02:20

re-edit: Ubuntu 14.04 не использует systemd по умолчанию для управления сервисами / init. По какой-то причине ваша установка использует systemd (вы знаете, почему?), Но она должна использовать выскочку с оболочкой для устаревших сценариев запуска sysV.

Пакет postgresql-9.5 не обеспечивает запуск systemd

Возможные варианты:

Вернитесь к старту для управления init. Напишите свой собственный сценарий запуска systemd для postgresql-9.5

... и у меня нет идей;)

1
ответ дан 23 May 2018 в 02:20
  • 1
    Я не совсем понимаю, что эти ссылки связаны с этой проблемой. Инструкции для загрузки Ubuntu рекомендуют deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main. Есть ли способ сделать вывод о том, что он извлекает из этого каталога pool/9.5/p/postgresql-9.5/ при попытке установить postgresql-9.5? Я попытался установить postgresql-9.6 после удаления всего остального и, к сожалению, он не получил никакого дальнейшего. – Shaun 18 January 2017 в 08:34
  • 2
    В репозитории содержится множество разных файлов для различных целей. Фактические пакеты deb сами находятся в пуле / директории под частью http: // url, которую вы опубликовали (попробуйте пойти туда с помощью веб-браузера). Есть ли причина, по которой вы не используете пакеты postgresql, предоставляемые самим ubuntu / canonical? – cleary 19 January 2017 в 01:55
  • 3
    Спасибо за уточнение. Репозитории Ubuntu 14.04 не содержат последней версии PostgreSQL, я не помню, к какой из них они подключены, но для некоторых расширений, которые мы используем, нам нужно как минимум 9.4. – Shaun 19 January 2017 в 20:48
  • 4
    хорошо, я полностью ошибся, похоже, что это репо может быть немного беспорядком. Там есть главный / subdir, и там есть 9.5 пакетов. Я попытался установить их здесь, и все прошло отлично. Обновлено мое сообщение с новой информацией - – cleary 25 January 2017 в 02:41
  • 5
    Спасибо, что заглянули в него еще. Я не мог понять, как отремонтировать postgresql, поэтому мы просто клонировали аналогичную виртуальную машину и восстановим ее. Я снова должен выполнить обновление с 12.04 до 14.04, поэтому я попытаюсь отслеживать журнал обновлений и идентифицировать вещи, связанные с systemd или postgresql. Это похоже на самый вероятный ответ, я опубликую любую новую информацию, если узнаю что-нибудь из журналов. – Shaun 25 January 2017 в 05:42

После поиска, я пришел к этому сообщению, потому что мой сервер имеет несколько версий Postgresql 9.4, 9.5, 9.6 и получил то же поведение.

sudo pg_lsclusters 9.4 main status
Ver Cluster Port Status Owner    Data directory               Log file
9.4 main    5432 down   postgres /var/lib/postgresql/9.4/main 
/var/log/postgresql/postgresql-9.4-main.log
9.5 main    5433 down   postgres /var/lib/postgresql/9.5/main 
/var/log/postgresql/postgresql-9.5-main.log
9.6 main    5434 down   postgres /var/lib/postgresql/9.6/main 
/var/log/postgresql/postgresql-9.6-main.log

Пытаясь запустить postgresql, продолжайте показывать:

sudo pg_ctlcluster 9.4 main start
Redirecting start request to systemctl
Failed to issue method call: Unit postgresql@9.4-main.service failed to load: No such file or directory. See system logs and 'systemctl status postgresql@9.4-main.service' for details.

После прочтения всех ответов мне больше нравится ответ: https://askubuntu.com/a/877472/130195 Но если вы хотите сохранить systemd установленный, который не полностью поддерживается Ubuntu 14.04, следуйте

Но я думаю, что нам не нужны systemd, и я использовал aptitude, чтобы знать, что требует установки systemd версии 204, в моей системе было upower, я не знаю Мне тоже нужно upower. Удалите все, что мне больше не нужно, и все три версии postgresql снова работают.

Я думаю, что просто sudo apt-get purge systemd && sudo apt-get autoremove решить проблему, удалив пакет systemd.

] ПРЕДУПРЕЖДЕНИЕ: Пожалуйста, будьте осторожны перед удалением любой упаковки, обратите внимание на то, что будет удалено с очень осторожным.

0
ответ дан 23 May 2018 в 02:20

Другие вопросы по тегам:

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