卸载后psql仍存在及PostgreSQL安装、版本管理等问题求助
问题描述
我未添加新软件源便在系统中安装了psql,之后按照PostgreSQL官网指引添加其软件源并执行sudo apt install postgres,随后执行sudo apt remove postgres。
现在执行sudo apt remove postgresql时,apt提示“Unable to locate package postgresql”,但执行dpkg -l | grep sql仍能看到postgresql-14、postgresql-15等相关包,且psql --version显示psql 15.1仍存在。
疑问解答
1. 为何psql已安装但apt找不到postgresql包?psql属于哪个包,如何查询?是否因依赖包未卸载导致psql残留?
- apt找不到
postgresql包的原因:postgresql是元数据包,本身不含实际文件,仅用于依赖安装对应版本的PostgreSQL核心组件。你可能从未安装过这个元包,或添加官方源后的操作未正确安装它,因此apt提示无法定位。 - psql所属包:psql是PostgreSQL的客户端工具,属于
postgresql-client-<版本号>包(如你当前的postgresql-client-15)。查询方法:执行命令dpkg -S $(which psql),即可查看它所属的具体包。 - psql残留的原因:你仅卸载了非标准包名的
postgres,但客户端包postgresql-client-15未被卸载,因此psql仍保留在系统中。
2. 仅需使用最新LTS版本PostgreSQL 15.1,是否需要保留14版本包?若无需,如何卸载?
- 是否保留:不需要,PostgreSQL不同版本的包相互独立,仅保留15.1不会影响使用。
- 卸载步骤:
- 停止14版本服务(若仍在运行):
sudo systemctl stop postgresql@14-main - 彻底卸载14版本的服务器和客户端包:
sudo apt purge postgresql-14 postgresql-client-14 - 清理残留的配置文件和无用依赖:
sudo apt autoremove --purge
- 停止14版本服务(若仍在运行):
3. 卸载postgresql-14和postgresql-15后,psql仍可执行但报连接错误,为何该命令仍存在?
psql属于客户端工具包(postgresql-client-<版本>),与服务器端包(postgresql-<版本>)是分离的。你卸载的只是服务器端组件,客户端包未被移除,因此psql命令仍能执行。连接错误是因为没有运行中的PostgreSQL服务器可供连接,客户端本身功能不受影响。
内容的提问来源于stack exchange,提问作者Bunny
相关产品推荐
相关产品推荐

