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

189

Как-то мне удалось полностью запутать установку postgresql в кармане Ubuntu. Я хочу начать с нуля, но когда я "очищаю" пакет с помощью 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; чистка script, похоже, не касается. Было множество симптомов, с которыми я работаю, чтобы разоблачить следующий.

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

Есть ли какой-нибудь простой однострочный (или два), который полностью сгорит и позволит мне начать?

  • 2
    Попробуйте установщик в один клик, он проще, его каталоги не разбросаны в / etc / и / var. Все они хранятся в одном каталоге
Теги:
uninstall
apt-get

8 ответов

350
Лучший ответ

Во-первых: если ваша установка еще не повреждена, вы можете удалить нежелательные серверы PostgreSQL ( "кластеры" ) в Ubuntu с помощью pg_dropcluster. Используйте это, чтобы полностью очистить и переустановить, если вы просто хотите начать с нового экземпляра initdb 'd PostgreSQL.

Если вам действительно нужно выполнить полную очистку и переустановить, сначала убедитесь, что 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 комментариев
36

У меня была аналогичная ситуация: мне нужно было очистить 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

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

11

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

  • Список всех связанных с Postgre пакетов

    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
    
  • Удалите все перечисленные выше

    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
    
  • Удалите следующие папки

    sudo rm -rf /var/lib/postgresql/
    sudo rm -rf /var/log/postgresql/
    sudo rm -rf /etc/postgresql/
    
  • 0
    Удаление ВСЕХ связанных пакетов Postgres работало на меня. Я перепутал несколько пакетов 8,4 и 9,1. Это в сочетании с удалением всего позволило мне, наконец, переустановить 9.1 и заставить все работать с ним.
  • 1
    Гораздо проще с подстановочным знаком: apt-get --purge remove postgresql\*
11

Я знаю, что ответ уже предоставлен, но 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

  • 0
    Эти инструкции работали над Debian Squeeze / SID
  • 0
    Гораздо проще использовать подстановочный знак; см обновленный 1-й ответ.
9
apt-get purge postgresql*

.

  • 2
    apt-get autoremove postgresql *
5

Следуя инструкции, выполните следующие шаги, чтобы удалить и переустановить. Что сработало для меня.

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

sudo apt-get purge postgr *

sudo apt-get autoremove

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

sudo apt-get install synaptic

Обновление sudo apt-get

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

sudo apt-get install 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 установите 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 и у вас не будет этой проблемы в будущем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню