Як ретельно очистити та перевстановити postgresql на ubuntu? [зачинено]


221

Якось мені вдалося повністю помилити встановлення 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; сценарій очищення не торкається його. Була купа симптомів, які я працюю лише для того, щоб викрити наступне.

Прямо в цю секунду, коли я запускаю команду "pg_createcluster ...", вона скаржиться, що "/var/lib/postgresql/8.4/main/postgresql.conf не існує", тож я знайду одну з них, але я " я впевнений, що це не буде кінцем.

Хіба не існує легкого однолінійного (або двох), який повністю спалить його і дозволить мені почати спочатку?


2
Спробуйте інсталятор одним клацанням, він простіший, його каталоги не розкидані в / etc / і / var. Усі вони зберігаються в одному каталозі
Майкл Буен

2
Це не загальне питання обчислень, а postgresql є стандартною темою стаціонарного потоку. Питання слід знову відкрити.
Андрій

Відповіді:


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для ручного вибору пакунків, використовуйте влучну підстановку, щоб їх надійно відповідати.
Крейг Рінгер

11
+1 для pg_dropcluster!! (Приклад: pg_dropcluster --stop 9.1 main)
Ануй Гупта

5
додати libpq5 та libpq-dev до цього списку очищення, що lib створив мені багато проблем, поки я не перевстановив його у правильній версії
Rogerio Chaves

Працює на Debian 8 і з PostgreSQL 9.4.

2
Я також додам rm -r /var/log/postgresql.
Григорій Ареній

45

У мене була подібна ситуація: мені потрібно було очистити postgresql 9.1 на дебіанській хрипі (я раніше мігрував з 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 push / sid
Євген

Це легше використовувати підстановку; див. оновлену першу відповідь.
Крейг Рінгер


9

Виконуючи кроки, я слідував за видаленням та перевстановленням. Який працював на мене.

Спочатку видаліть встановлені постгреси: -

sudo apt-get purge postgr *

sudo apt-get autoremove

Потім встановіть "синаптичний":

sudo apt-get install синаптичний

sudo apt-get update

Потім встановіть 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 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. Натомість, щоб видалити постгреси з групи ssl-cert, видаліть "postgres" після двокрапки.
Джон Мі

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

-2

Я зіткнувся з тією ж проблемою в моєму ubuntu 16.04

але я вирішив цю проблему, і це дуже просто, просто дотримуйтесь цих кроків, і ви зможете встановити postgresql 10 у вашій системі:

Додайте це до свого source.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.