Как тщательно очистить и переустановить postgresql на Ubuntu? [закрыто]


221

Каким-то образом мне удалось полностью остановить установку postgresql на Ubuntu karmic. Я хочу начать все заново, но когда я "очищаю" пакет с помощью apt-get, он все равно оставляет следы, так что конфигурация переустановки не работает должным образом.

После того как я сделал:

apt-get purge postgresql
apt-get install postgresql

Сказано

Setting up postgresql-8.4 (8.4.3-0ubuntu9.10.1) ...
Configuring already existing cluster (configuration: /etc/postgresql/8.4/main, data: /var/lib/postgresql/8.4/main, owner: 108:112)
Error: move_conffile: required configuration file     /var/lib/postgresql/8.4/main/postgresql.conf does not exist
Error: could not create default cluster. Please create it manually with

  pg_createcluster 8.4 main --start

or a similar command (see 'man pg_createcluster').
update-alternatives: using /usr/share/postgresql/8.4/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.

Setting up postgresql (8.4.3-0ubuntu9.10.1) ...

У меня есть «/ etc / postgresql», в котором ничего нет, а в «/ etc / postgresql-common /» есть каталог «pg_upgradecluser.d», файлы root.crt и user_clusters.

В / etc / passwd есть пользователь postgres; сценарий очистки, кажется, не трогает его. Там было множество симптомов, которые я прорабатываю только для того, чтобы разоблачить следующее.

В эту секунду, когда я запускаю эту команду «pg_createcluster ...», она жалуется, что «/var/lib/postgresql/8.4/main/postgresql.conf не существует», поэтому я пойду найду одну из них, но я Я уверен, что это не будет концом этого.

Нет ли какой-нибудь простой однострочной (или двух), которая полностью сожжет ее и позволит мне начать все сначала?


2
Попробуйте установщик в один клик, он более простой, его каталоги не разбросаны в / etc / и / var. Все они хранятся в одном каталоге
Майкл Буэн

2
Это не общий вычислительный вопрос, и postgresql - это стандартная тема stackoverflow. Вопрос должен быть вновь открыт.
Андрей

Ответы:


446

Вариант А

Если ваша установка еще не повреждена, вы можете удалить ненужные серверы PostgreSQL («кластеры») с помощью pg_dropcluster. Используйте это вместо полной очистки и переустановки, если вы просто хотите перезапустить со свежим экземпляром PostgreSQL.

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
11  main    5432 online postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
$ sudo systemctl stop postgresql@11-main
$ sudo pg_dropcluster --stop 11 main
$ sudo pg_createcluster --start 11 main

Вариант Б

Если вам действительно необходимо выполнить полную очистку и переустановить, сначала убедитесь, что PostgreSQL не работает. ps -C postgresне должно показывать никаких результатов.

Теперь запустите:

apt-get --purge remove postgresql\*

удалить все PostgreSQL из вашей системы. Одной очистки postgresпакета недостаточно, поскольку это просто пустой метапакет.

После удаления всех пакетов PostgreSQL выполните:

rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres

Теперь вы должны быть в состоянии:

apt-get install postgresql

или для полной установки:

apt-get install postgresql-8.4 postgresql-contrib-8.4 postgresql-doc-8.4

19
Я переработал ответ, чтобы убрать совет по ручному редактированию /etc/passwdи /etc/groupв пользу более безопасного userdelи groupdel. Кроме того, вместо того, чтобы использовать dselectдля ручного выбора пакетов, используйте подстановочный знак apt для их надежного соответствия.
Крейг Рингер

11
+1 за pg_dropcluster!! (Пример: pg_dropcluster --stop 9.1 main)
Ануй Гупта

5
добавьте libpq5 и libpq-dev в этот список очистки, эта библиотека доставила мне МНОГО проблем, пока я не переустановил ее на нужную версию
Rogerio Chaves

Работает на Debian 8 с PostgreSQL 9.4 тоже.

2
Я бы тоже добавил rm -r /var/log/postgresql .
Григорий

45

У меня была похожая ситуация: мне нужно было очистить postgresql 9.1 на Debian Wheezy (я ранее мигрировал с 8.4 и получал ошибки).

Что я сделал:

Сначала я удалил конфиг и базу данных

$ sudo pg_dropcluster --stop 9.1 main

Потом удалил postgresql

$ sudo apt-get remove --purge postgresql postgresql-9.1 

а затем переустановил

$ sudo apt-get install postgresql postgresql-9.1

В моем случае я заметил, что /etc/postgresql/9.1 был пуст, а запуск service postgresql startничего не дал

Итак, после еще большего количества поисков я добрался до этой команды:

$ sudo pg_createcluster 9.1 main

После этого я мог запустить сервер, но теперь я получал ошибки, связанные с журналом. После дополнительных поисков я закончил тем, что изменил разрешения на каталог / var / log / postgresql

$ sudo chown root.postgres /var/log/postgresql
$ sudo chmod g+wx /var/log/postgresql

Это решило проблему, надеюсь, это поможет


14

Шаги, которые работали на меня, Ubuntu 8.04.2чтобы удалитьpostgres 8.3

  1. Список всех пакетов, связанных с Postgres

    dpkg -l | grep postgres
    
    ii  postgresql                            8.3.17-0ubuntu0.8.04.1           object-relational SQL database (latest versi
    ii  postgresql-8.3                        8.3.9-0ubuntu8.04                object-relational SQL database, version 8.3
    ii  postgresql-client                     8.3.9-0ubuntu8.04                front-end programs for PostgreSQL (latest ve
    ii  postgresql-client-8.3                 8.3.9-0ubuntu8.04                front-end programs for PostgreSQL 8.3
    ii  postgresql-client-common              87ubuntu2                        manager for multiple PostgreSQL client versi
    ii  postgresql-common                     87ubuntu2                        PostgreSQL database-cluster manager
    ii  postgresql-contrib                    8.3.9-0ubuntu8.04                additional facilities for PostgreSQL (latest
    ii  postgresql-contrib-8.3                8.3.9-0ubuntu8.04                additional facilities for PostgreSQL
  2. Удалить все вышеперечисленное

    sudo apt-get --purge remove postgresql postgresql-8.3  postgresql-client  postgresql-client-8.3 postgresql-client-common postgresql-common  postgresql-contrib postgresql-contrib-8.3
  3. Удалите следующие папки

    sudo rm -rf /var/lib/postgresql/
    sudo rm -rf /var/log/postgresql/
    sudo rm -rf /etc/postgresql/

Удаление ВСЕХ связанных с Postgres пакетов работало на меня. Я перепутал несколько пакетов 8,4 и 9,1. Это в сочетании с удалением всего позволило мне, наконец, переустановить 9.1 и заставить все работать с ним.
Ник

1
Гораздо проще с подстановочными знаками:apt-get --purge remove postgresql\*
Крейг Рингер

12

Я знаю, что ответ уже был предоставлен, но dselect у меня не сработал. Вот что сработало, чтобы найти пакеты для удаления:

# search postgr  | grep ^i
i   postgresql                      - object-relational SQL database (supported 
i A postgresql-8.4                  - object-relational SQL database, version 8.
i A postgresql-client-8.4           - front-end programs for PostgreSQL 8.4     
i A postgresql-client-common        - manager for multiple PostgreSQL client ver
i A postgresql-common               - PostgreSQL database-cluster manager       

# aptitude purge postgresql-8.4 postgresql-client-8.4 postgresql-client-common postgresql-common postgresql

rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/

Наконец, редактирование / etc / passwd и / etc / group


Эти инструкции работали над Debian Squeeze / Sid
Евгений

Гораздо проще использовать подстановочный знак; см обновленный 1-й ответ.
Крейг Рингер


9

Следуя инструкциям по удалению и повторной установке. Который работал для меня.

Сначала удалите установленные postgres: -

sudo apt-get purg postgr *

sudo apt-get autoremove

Затем установите 'synaptic':

sudo apt-get установить synaptic

sudo apt-get update

Затем установите postgres

sudo apt-get установить postgresql postgresql-contrib


2

Я только что столкнулся с той же проблемой для Ubuntu 13.04. Эти команды удалены Postgres 9.1:

sudo apt-get purge postgresql
sudo apt-get autoremove postgresql

Мне приходит в голову, что, возможно, нужна только вторая команда, но оттуда я смог установить Postgres 9.2 (sudo apt-get install postgresql-9.2).


0

Я следил за ответами. При редактировании / etc / group я также удалил эту строку:

ssl-cert:x:112:postgres

затем при попытке установить postgresql я получил эту ошибку

Preconfiguring packages ...
dpkg: unrecoverable fatal error, aborting:
 syntax error: unknown group 'ssl-cert' in statoverride file
E: Sub-process /usr/bin/dpkg returned an error code (2)

Возвращение строки "ssl-cert: x: 112: postgres" в / etc / group, кажется, исправляет это (поэтому я смог установить postgresql)


2
При удалении строки вы удалили всю группу "ssl-cert", что может создать хаос с помощью ssl. Вместо этого, чтобы удалить postgres из группы ssl-cert, удалите «postgres» после двоеточия.
Джон Ми

2
Оригинальные инструкции были очень ошибочными, когда советовали вам редактировать вручную /etc/passwd. никогда не делай этого . Используйте userdelи groupdelкоманды , и вы не будете иметь эту проблему в будущем.
Крейг Рингер

-2

Я столкнулся с той же проблемой в моем Ubuntu 16.04

но я исправил эту проблему, и это очень просто, просто следуйте этим шагам, и вы сможете установить postgresql 10 в вашей системе:

Добавьте это в ваш sources.list:

sudo vim /etc/apt/sources.list

deb http://ftp.de.debian.org/debian/ wheezy main non-free contrib

deb-src http://ftp.de.debian.org/debian/ wheezy main non-free contrib

после этого добавьте эти ссылки в файл pgdg.list, если его там нет, вам нужно создать && добавить ссылку && сохранить его.

sudo vim /etc/apt/sources.list.d/pgdg.list

deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main

deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main

затем обновите свою систему

sudo apt-get update

sudo apt-get upgrade

и установите эти неудовлетворенные зависимости:

apt-get install ssl-cert

Это оно. Теперь установите postgresql, используя эти команды

sudo apt-get install postgresql-10
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.