Установка расширения vector в PostgreSQL

Содержание

Введение

Пакета с расширением vector нет в официальном репозитории Debian, но он есть в репозитории PostgreSQL. Если для вас не принципиально, из какого репозитория будет устанавливаться и обновляться сервер PostgreSQL, тогда можно не заморачиваться с выставлением приоритетов репозиториев и с указанием конкретной версии пакета с расширением vector - можете воспользоваться этими репозиториями для того, чтобы установить из них совместимые между собой версии сервера и расширения по умолчанию. Мне же хотелось сохранить уже установленный из официального репозитория пакет с сервером, не обновляя его, и установить версию расширения, совместимую с уже установленной версией сервера. Совместимость можно проверять по минимальной требуемой версии пакета postgresql-jit-llvm.

Настройка репозитория

Добавить в /etc/apt/sources.list репозиторий pg-vector:

deb https://apt-archive.postgresql.org/pub/repos/apt/ bookworm-pgdg-archive main

Установить GPG-ключ репозитория:

wget https://www.postgresql.org/media/keys/ACCC4CF8.asc
mv ACCC4CF8.asc /etc/apt/trusted.gpg.d/apt-archive.postgresql.org.asc

Обновить список пакетов, доступных через репозитории:

apt-get update

Понизить приоритет пакетов из репозитория так, чтобы пакеты из этого репозитория не заменяли пакеты из официального репозитория Debian. Для этого создать файл /etc/apt/preferences.d/apt-archive.postgresql.org.pref со следующим содержимым:

Package: *
Pin: origin "apt-archive.postgresql.org"
Pin-Priority: 100

Определение совместимой версии

Первым делом определим версию установленного сервера:

$ dpkg -l | grep postgresql
ii  postgresql-15                      15.6-0+deb12u1                 amd64        The World's Most Advanced Open Source Relational Database
ii  postgresql-client-15               15.6-0+deb12u1                 amd64        front-end programs for PostgreSQL 15
ii  postgresql-client-common           248                            all          manager for multiple PostgreSQL client versions
ii  postgresql-common                  248                            all          PostgreSQL database-cluster manager

Посмотрим, какую версию интерфейса jit-llvm предоставляет установленный сервер:

$ apt-cache show postgresql-15=15.6-0+deb12u1 | grep Provides:
Provides: postgresql-15-jit-llvm (= 14), postgresql-contrib-15

Сервер предоставляет интерфейс jit-llvm версии 14.

Находим пакет подходящей версии, который требует jit-llvm от 14 версии или выше:

$ apt-cache show postgresql-15-pgvector | egrep 'Depends|Version' | grep -B1 '= 14'
Version: 0.5.1-1.pgdg120+1
Depends: postgresql-15, postgresql-15-jit-llvm (>= 14), libc6 (>= 2.14)
Version: 0.5.0-2.pgdg120+1
Depends: postgresql-15, postgresql-15-jit-llvm (>= 14), libc6 (>= 2.14)
Version: 0.5.0-1.pgdg120+1
Depends: postgresql-15, postgresql-15-jit-llvm (>= 14), libc6 (>= 2.14)
Version: 0.4.4-1.pgdg120+1
Depends: postgresql-15, postgresql-15-jit-llvm (>= 14), libc6 (>= 2.14)
Version: 0.4.2-1.pgdg120+1
Depends: postgresql-15, postgresql-15-jit-llvm (>= 14), libc6 (>= 2.14)

Установка расширения

Установить расширение:

apt-get install postgresql-15-pgvector=0.5.1-1.pgdg120+1