PostgreSQL не удается переустановить после обновления Ubuntu 12.04 к 14,04

Я работал do-release-upgrade обновить сервер Ubuntu 12.04 к Ubuntu 14.04. Это, казалось, пошло гладко, но когда я сделал apt-get update после обновления я замечаю, что пакеты PostgreSQL все еще смотрели на точный repos вместо испытанного repos. Я следовал инструкциям здесь для добавления испытанного repos и переместился .list файл, содержащий точный repos к временному каталогу как резервное копирование. После того, как я сделал это, sudo apt-get upgrade отказавший и я не смог заставить это работать полностью снова даже за восстановлением точного repos. Я, оказалось, не захватил сообщения об ошибках. Так как это - сервер разработки, и все данные несущественны, я решил только переустановить 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               <none>              <none>              (no description available)
un  postgresql-8.0               <none>              <none>              (no description available)
un  postgresql-9.1               <none>              <none>              (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            <none>              <none>              (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           <none>              <none>              (no description available)
6
задан 23 May 2017 в 05:39

4 ответа

У меня была та же проблема, обновил Ubuntu 12.04 до 14,04. Не знайте, но это также использующий systemd. При проверке /etc/init.d/postgresql файл это использует /usr/share/postgresql-common/init.d-functions.

Этот файл выполняет/usr/bin/pg_ctlcluster, чтобы запустить и остановить postgresql сервер.

if [ "$1" = "stop" ] || [ "$1" = "restart" ]; then
    ERRMSG=$(pg_ctlcluster --force "$2" "$name" $1 2>&1)
else
    ERRMSG=$(pg_ctlcluster "$2" "$name" $1 2>&1)
fi

/usr/bin/pg_ctlcluster файл принимает --skip-systemctl-redirect опция запуститься или остановить postgresql без systectl.

Таким образом, необходимо добавить --skip-systemctl-redirect в /usr/share/postgresql-common/init.d-functions в do_ctl_all () функция. Таким образом, это будет похоже на это.

if [ "$1" = "stop" ] || [ "$1" = "restart" ]; then
    ERRMSG=$(pg_ctlcluster --skip-systemctl-redirect --force "$2" "$name" $1 2>&1)
else
    ERRMSG=$(pg_ctlcluster --skip-systemctl-redirect "$2" "$name" $1 2>&1)
fi

Или можно добавить $skip_systemctl_redirect = 1; прежде $skip_systemctl_redirect зарегистрирован /usr/bin/pg_ctlcluster.

10
ответ дан 23 November 2019 в 07:17

Та же проблема о 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",
  }
7
ответ дан 23 November 2019 в 07:17

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

postgresql-9.5 пакет не обеспечивает файл единицы запуска systemd, вместо этого он предоставляет sysV сценарий, который выскочка обрабатывает прекрасный (просто протестированный здесь).

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

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

..., и я вне идей ;)

1
ответ дан 23 November 2019 в 07:17

После поиска, в то время как, я пришел к этому сообщению, потому что мой сервер имеет несколько версий 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, и я использовал способность для знания то, что, требования установить systemd, версия 204, в моей системе была upower, мне не нужно upower также. Удаление чего-либо, что я не делаю необходимый больше и все три версии postgresql, работает снова.

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

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

1
ответ дан 23 November 2019 в 07:17

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

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