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

How to thoroughly purge and reinstall postgresql on ubuntu?

不知怎么的,我已经成功地在Ubuntu Karmic上安装了PostgreSQL。我想从头开始,但是当我用apt-get"清除"包时,它仍然会留下痕迹,这样重新安装配置就不能正常运行。

做完之后:

1
2
apt-GET purge postgresql
apt-GET install postgresql

它说

1
2
3
4
5
6
7
8
9
10
11
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-cluster文件。

/etc/passwd有一个postgres用户;purge脚本似乎没有接触到它。有一系列的症状,我一直在努力,只为了暴露下一个。

就在这一秒,当我运行命令"pg_createCluster…"时,它抱怨'/var/lib/postgresql/8.4/main/postgresql.conf不存在',所以我会找到其中的一个,但我确信这不会是它的结尾。

有没有简单的一个(或两个)班轮会完全烧毁它,让我重新开始?


首先:如果您的安装尚未损坏,您可以使用pg_dropcluster在Ubuntu中删除不需要的PostgreSQL服务器("集群")。如果您只想从一个新的initdb的postgresql实例开始,可以先使用它来进行完全清除和重新安装。

如果您真的需要完全清除并重新安装,首先确保PostgreSQL没有运行。ps -C postgres不应显示任何结果。

现在运行:

1
apt-GET --purge remove postgresql\*

从系统中删除所有PostgreSQL。仅仅清除postgres包是不够的,因为它只是一个空的元包。

删除所有PostgreSQL包后,运行:

1
2
3
4
5
rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres

您现在应该能够:

1
apt-GET install postgresql

或完整安装:

1
apt-GET install postgresql-8.4 postgresql-contrib-8.4 postgresql-doc-8.4


我也遇到过类似的情况:我需要清除Debian喘息系统上的PostgreSQL 9.1(我以前从8.4迁移过,现在出错了)。

我做了什么:

首先,我删除了配置和数据库

1
$ sudo pg_dropcluster --stop 9.1 main

然后删除postgresql

1
$ sudo apt-GET remove --purge postgresql postgresql-9.1

然后重新安装

1
$ sudo apt-GET install postgresql postgresql-9.1

在我的例子中,我注意到/etc/postgresql/9.1是空的,运行service postgresql start没有返回任何内容。

所以,在更多的谷歌搜索之后,我得到了这个命令:

1
$ sudo pg_createcluster 9.1 main

这样我就可以启动服务器,但现在我得到了与日志相关的错误。经过更多的搜索,我最终更改了/var/log/postgresql目录的权限。

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

解决了这个问题,希望能有所帮助


我在Ubuntu 8.04.2上工作的步骤,以移除postgres 8.3

  • 列出所有与Postgres相关的包

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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
  • 删除上面列出的所有内容

    1
    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
  • 删除以下文件夹

    1
    2
    3
    sudo rm -rf /var/lib/postgresql/
    sudo rm -rf /var/log/postgresql/
    sudo rm -rf /etc/postgresql/

  • 1
    apt-GET purge postgresql*

    就够了。


    我知道已经提供了一个答案,但dselect不适合我。以下是找到要删除的包的方法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 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


    按照我卸载和重新安装的步骤,执行AE。这对我很有用。

    首先移除已安装的Postgres:

    sudo apt-get purge postgr*

    sudo apt-get autoremove

    然后安装"synaptic":

    sudo apt-get install synaptic

    sudo apt-get update

    然后安装Postgres

    sudo apt-get install postgresql postgresql-contrib


    我刚刚为Ubuntu13.04遇到了同样的问题。这些命令删除了Postgres 9.1:

    1
    2
    sudo apt-GET purge postgresql
    sudo apt-GET autoremove postgresql

    我突然想到也许只有第二个命令是必要的,但从那里我可以安装Postgres9.2(sudo apt get install postgresql-9.2)。


    我在跟踪回复,编辑/etc/group时,我还删除了此行:

    1
    ssl-cert:x:112:postgres

    然后,在尝试安装PostgreSQL时,我得到了这个错误

    1
    2
    3
    4
    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)。


    我在Ubuntu 16.04遇到了同样的问题

    但我解决了这个问题,非常简单,只需遵循以下步骤,您就可以在系统中安装PostgreSQL 10:

    将此添加到源中。列表:

    1
    2
    3
    4
    5
    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

    之后,将这些链接添加到pdg.list文件中,如果没有,则必须创建并添加链接并保存它。

    1
    2
    3
    4
    5
    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

    然后更新你的系统

    1
    2
    3
    sudo apt-GET UPDATE

    sudo apt-GET upgrade

    并安装未设置的依赖项:

    1
    apt-GET install ssl-cert

    就是这样。现在使用以下命令安装PostgreSQL

    1
    sudo apt-GET install postgresql-10