244

不知何故,我设法完全在 Ubuntu 业力上安装了 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 不存在”,所以我会去找其中一个,但我我确信这不会结束。

有没有一些简单的(或两个)可以完全烧掉它并让我重新开始的方法?

4

9 回答 9

485

选项 A

如果您的安装尚未损坏,您可以使用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
于 2010-05-01T02:23:45.687 回答
47

我也遇到过类似的情况:我需要在 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

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

于 2014-01-18T14:57:42.587 回答
17

对我有用的步骤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/
    
于 2012-03-08T14:29:00.987 回答
15
apt-get purge postgresql*

足够。

于 2013-07-03T04:43:23.290 回答
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

于 2011-07-14T19:55:50.293 回答
9

按照我卸载和重新安装的步骤。这对我有用。

首先删除已安装的 postgres :-

sudo apt-get purge postgr*

sudo apt-get 自动删除

然后安装“突触”:

sudo apt-get 安装突触

sudo apt-get 更新

然后安装postgres

sudo apt-get install postgresql postgresql-contrib

于 2016-06-03T09:25:21.320 回答
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)。

于 2013-10-02T03:10:29.447 回答
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)

于 2011-09-05T12:32:31.710 回答
-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
于 2018-03-03T16:22:10.797 回答