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不存在',所以我会找到其中的一个,但我确信这不会是它的结尾。
有没有简单的一个(或两个)班轮会完全烧毁它,让我重新开始?
首先:如果您的安装尚未损坏,您可以使用
如果您真的需要完全清除并重新安装,首先确保PostgreSQL没有运行。
现在运行:
1 | apt-GET --purge remove postgresql\* |
从系统中删除所有PostgreSQL。仅仅清除
删除所有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是空的,运行
所以,在更多的谷歌搜索之后,我得到了这个命令:
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 |
解决了这个问题,希望能有所帮助
我在
列出所有与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 |