当我在EPEL 源地址失效,但pgvector 编译只需要 Base 源里的 3 个核心依赖,完全可以绕开 EPEL;
- 关键命令:
- 装核心依赖:
yum install -y postgresql13-devel gcc make --disablerepo=epel;
- 装核心依赖:
CentOS 7 的 Base 源里没有postgresql13-devel这个包 (PG13 不是 CentOS 7 官方默认版本,这个包不在 Base 源里,需要先添加 PostgreSQL 官方的 PGDG 仓库),而gcc和make已经装好了(显示 "已安装并且是最新版本"),咱们只需要补装postgresql13-devel就行!
第一步:先解释报错
| 输出内容 | 通俗含义 |
|---|---|
| 没有可用软件包 postgresql13-devel | Base 源里找不到这个包,因为 PG13 是 PostgreSQL 官方维护的,不是 CentOS 官方包 |
| 软件包 gcc-4.8.5-44.el7.x86_64 已安装并且是最新版本 | gcc 编译器已经装好了,不用再装 |
| 软件包 1:make-3.82-24.el7.x86_64 已安装并且是最新版本 | make 工具也装好了,不用再装 |
| 无须任何处理 | 除了 postgresql13-devel,其他依赖都满足 |
第二步:解决方案(添加 PG 官方仓库,装 postgresql13-devel)
PostgreSQL 官方提供了专门的 PGDG 仓库,里面有所有版本的 PG 开发包,咱们先添加这个仓库,再装包:
步骤 1:下载并安装 PGDG 仓库配置包(CentOS 7 适配)
# 下载PGDG仓库包(适配CentOS 7)
wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装仓库包(添加PG官方源)
rpm -ivh pgdg-redhat-repo-latest.noarch.rpm --nodeps
- 含义 :
wget:下载 PG 官方的仓库配置文件;rpm -ivh:安装 rpm 包,--nodeps跳过依赖检查(避免和系统现有包冲突);
- 效果 :执行后会在
/etc/yum.repos.d/里添加 PG 官方的源配置,yum 就能找到 postgresql13-devel 了
不过这个服务器没有下载wget,于是换用下面语句:
curl -o /root/pgdg-repo.rpm https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
总之兜兜转转,我也不知道问题为什么会这么多,头也有点痛了,其实本来并不应该这么困难,但是中途报错,什么yum源呀等等,总之最后时刻的一些语句是大道至简如下:
sudo yum install pgvector_13
下载完之后记得更新pg,如下:
查看PG13服务名(不同系统可能略有差异)
sudo systemctl list-unit-files | grep postgresql-13
重启PG13服务(通用命令)
sudo systemctl restart postgresql-13
确认服务启动成功
sudo systemctl status postgresql-13
后面就是进入pg操作拓展
1. 切换到postgres系统用户 sudo su - postgres (后面还有一步psql)
2. 登录PG13(确保是13版本,不是其他版本) psql -U postgres
3. 先确认当前PG版本(必须是13!) postgres=# SELECT version();
输出里要能看到「PostgreSQL 13.x」,如果是12/14等,说明登错版本了
4. 重新执行创建扩展(务必带分号!)
postgres=# CREATE EXTENSION vector;
成功会提示:CREATE EXTENSION
5. 验证扩展 postgres=# \dx vector;
退出 \q ctrl + d
终于终于!哎 真的要哭了呜呜┭┮﹏┭┮

算是结束了吧,中途太乱了不想总结~