如何在ubuntu上彻底清除并重新安装postgresql?[关闭]


221

不知何故,我设法完全在Ubuntu karmic上破解了postgresql的安装。我想从头开始,但是当我用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中。它们全部存储在一个目录中
Michael Buen

2
这不是一般的计算问题,而PostgreSQL是标准的stackoverflow主题。问题应该重新开始。
Andrew

Answers:


446

选项A

如果您的安装尚未损坏,则可以使用删除不需要的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

选项B

如果您确实需要进行完全清除并重新安装,请首先确保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手工选择软件包,而应使用适当的通配符来可靠地匹配它们。
Craig Ringer

11
+1 pg_dropcluster!(实施例使用方法:pg_dropcluster --stop 9.1 main
Anuj古普塔

5
将libpq5和libpq-dev添加到该清除列表中,该lib给我带来了很多问题,直到我将其重新安装到正确的版本上
Rogerio Chaves 2014年

也可以在Debian 8和PostgreSQL 9.4上运行。

2
我还要补充rm -r /var/log/postgresql
格雷戈里·阿雷纽斯

45

我有一个类似的情况:我需要在debian wheezy上清除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\*
Craig Ringer

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
Evgeny

使用通配符更容易;请参阅更新的第一答案。
Craig Ringer


9

按照AE的步骤,我执行了卸载并重新安装的操作。对我有用。

首先删除已安装的postgres:-

须藤apt-get purge postgr *

须藤apt-get autoremove

然后安装“ synaptic”:

sudo apt-get install synaptic

sudo apt-get更新

然后安装postgres

须藤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,请从冒号后面删除“ postgres”。
约翰·米

2
原始说明在建议您进行手工编辑时非常错误/etc/passwd永远不要那样做。使用userdelgroupdel命令,以后就不会有这个问题了。
Craig Ringer

-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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.