如何卸载特定版本的 Postgres?

如何卸载特定版本的 Postgres?

在 Ubuntu 14.04 上我已完成此操作以获取最新的 postgres:

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade

然后我安装了9.4版本:

sudo apt-get install postgresql-9.4

然而现在我似乎有三个版本:

sudo service postgresql stop

 * Stopping PostgreSQL 9.3 database server  [ OK ]
 * Stopping PostgreSQL 9.4 database server  [ OK ]
 * Stopping PostgreSQL 9.5 database server  [ OK ]

我怎样才能只保留 9.4 并卸载其他版本?谢谢

更新:

根据评论所建议,我已经卸载了 9.3 和 9.5。

但是当我这样做时:

sudo service postgresql status
9.3/main (port 5432): down
9.4/main (port 5434): online
9.5/main (port 5433): down

到目前为止一切顺利,但是当我切换到 postgres 时:

sudo su postgres

并执行 psql,出现错误:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

答案1

PostgreSQL 的不同版本位于包 postgresql-9.* 中。

  1. 因此你应该删除两个包:

    sudo apt-get purge postgresql-9.3 postgresql-9.5
    
  2. 然后你应该删除不必要的配置文件夹:

    rm -r /etc/postgresql/9.3/ /etc/postgresql/9.5
    
  3. 如果有的话,请从 /var/lib/ 文件夹中:

    /var/lib/postgresql/*
    

我希望它能对你有所帮助。

答案2

很晚才添加答案,但可能会对这里的人有所帮助。

简短回答:错误表明 postgres 配置在错误的(非默认)端口上。请使用正确的端口

长答案: 当您安装了多个版本的 Postgresql 时,它们都开始在不同的端口上运行 postgres 集群。在您的输出中,以下 postgres 版本正在运行:9.3 --> 54329.4 -->54349.5 --> 5433

sudo service postgresql status
9.3/main (port 5432): down
9.4/main (port 5434): online
9.5/main (port 5433): down

sudo apt-get purge postgresql-9.x您可以使用您的版本在哪里卸载其他版本9.x,但是在您的情况下,系统上存在的版本(9.4)配置为在端口 5434 上运行。因此,该错误Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?完全表明 psql 默认尝试连接到5432不再连接任何 postgres 的端口。

这里有两个解决方案

  • psql -p 5434在 psql 命令中使用ie 端口选项 (-p/--port)。
  • 或者配置你的postgres服务器port配置值以/etc/postgresql/9.5/main/postgresql.conf在5432上提供服务。更改后不要忘记重新启动postgres。

相关内容