Eu literalmente tentei todas as 20 principais soluções do Google e do stackoverflow, mas não consigo fazer meu postgres 17 instalar uma extensão chamada 'pgvector'. Quando eu digito 'make' ou 'cl', eu posso ver que eles são adicionados ao meu caminho e a entrada do terminal é capaz de abrir esses arquivos exe. Eu até instalei o WSL como sugerido pelo AI. Eu clonei o repositório para pgvector na minha pasta de documentos, e quando eu chego lá usando o comando Powershell (admin) e executo o comando make, eu recebo esse erro
C:\Usuários\rohit\Documentos\Codificação\pgvector>make cl -Wall -O2 /wd4018 /wd4244 /wd4273 /wd4101 /wd4102 /wd4090 /wd4267 -march=native -ftree-vectorize -fassociative-math -fno-signed-zeros -fno-trapping-math -I. -I./ -IC:/PROGRA~1/PostgreSQL/17/include/server -IC:/PROGRA~1/PostgreSQL/17/include/internal /DWIN32 /DWINDOWS /D__WINDOWS__ /D__WIN32__ /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE -IC:/PROGRA~1/PostgreSQL/17/include/server/port/win32 -DWIN32_STACK_RLIMIT=4194304 -c -o src/bitutils.o src/bitutils.c Microsoft (R) C/C++ Optimizing Compiler Versão 19.29.30157 para x86 Copyright (C) Microsoft Corporation. Todos os direitos reservados.
trapping-math' bitutils.c C:\Program Files\PostgreSQL\17\include\server\ch(75): erro fatal C1083: Não é possível abrir o arquivo include: 'libintl.h': Nenhum arquivo ou diretório make: *** [: src/bitutils.o] Erro 2
Alguém tem alguma ideia do que eu posso fazer? Eu até tentei usar o método docker image, e mesmo com essa imagem docker em execução, quando eu executo o comando make ainda recebo um erro parecido.
Também instalei o código do VS Studio com as ferramentas C++ instaladas no meu sistema.
Eu tentei usar este comando também:
"C:\Arquivos de programas\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
mas meu sistema não tem essas pastas VC e posteriores. Devo reinstalar meu postgres 17 ou reinstalar o código do vs studio?
Acredito que todos os meus caminhos foram corrigidos, pois não há mais erros como cl.exe não encontrado ou make não encontrado.
Se eu chegar ao psql e executar
ERRO: a extensão "pgvector" não está disponível DETALHE: Não foi possível abrir o arquivo de controle de extensão "C:/Program Files/PostgreSQL/17/share/extension/pgvector.control": Nenhum arquivo ou diretório. DICA: A extensão deve ser instalada primeiro no sistema onde o PostgreSQL está sendo executado.
A parte estranha é que consigo ver meu sistema tendo esse arquivo exato chamado ch no mesmo diretório que o erro acima sugere. Vi no meu antivírus se havia um erro de permissão, mas não havia nenhum.
Seguindo a documentação exata do repositório, consegui executar o comando
cd "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build" e recebo uma mensagem [vcvarsall.bat] Ambiente inicializado para: 'x64'
Depois disso, quando clono um novo repositório para o pgvector, recebo este novo erro:
C:\Usuários\rohit\AppData\Local\Temp\pgvector>nmake /F Makefile.win instalar
Microsoft (R) Program Maintenance Utility Versão 14.43.34808.0 Copyright (C) Microsoft Corporation. Todos os direitos reservados.
copy vector.dll "C:\Program Files\PostgreSQL\17\lib" Access is denied. 0 file(s) copied. NMAKE : fatal error U1077: 'copy vector.dll "C:\Program Files\PostgreSQL\17\lib"' : return code '0x1' Stop.
Observe que executei esses comandos no Powershell Executar como administrador e até mesmo no terminal de opções de inicialização do MS VS Code.
Como você pode ver na saída do terminal após executar o nmake, ele mostra que ele foi instalado. Ele até me mostrou instalando centenas de arquivos chamados pgvector, mas quando eu reinicio meu serviço postgres e vejo se meu postgres tem alguma extensão chamada pgvector ele apenas diz cant find anything
Seguindo as instruções, também consegui executar o comando nmake após clonar o repositório pgvector , e ele até mostra que o instalou corretamente (estou supondo?), mas ainda assim, após reiniciar o serviço postgres ou todo o sistema, dentro do psql não consigo usar essa extensão.
C:\pgvector>nmake /F Makefile.win install Microsoft (R) Program Maintenance Utility Versão 14.43.34808.0 Copyright (C) Microsoft Corporation. Todos os direitos reservados.
cl /nologo /I"C:\Program Files\PostgreSQL\17\include\server\port\win32_msvc" /I"C:\Program
Arquivos\PostgreSQL\17\include\server\port\win32" /I"C:\Arquivos de programas\PostgreSQL\17\include\server" /I"C:\Arquivos de programas\PostgreSQL\17\include" /O2 /fp:fast /c src\hnsw.c /Fosrc\hnsw.obj hnsw.c C:\Arquivos de programas\PostgreSQL\17\include\server\access/tupmacs.h(65): erro C2196: valor do caso '4' já usado C:\Arquivos de programas\PostgreSQL\17\include\server\access/tupmacs.h(197): erro C2196: valor do caso '4' já usado NMAKE: erro fatal U1077: 'cl /nologo /I"C:\Program Arquivos\PostgreSQL\17\include\servidor\porta\win32_msvc" /I"C:\Arquivos de Programas\PostgreSQL\17\include\servidor\porta\win32" /I"C:\Arquivos de Programas\PostgreSQL\17\include\servidor" /I"C:\Arquivos de Programas\PostgreSQL\17\include" /O2 /fp:fast /c src\hnsw.c /Fosrc\hnsw.obj' : código de retorno '0x2' Parar.
Além disso, é realmente tão difícil instalar uma extensão simples do Postgres em um sistema Windows? Todos os sistemas Unix ou Mac podem usar qualquer gerenciador de pacotes, mas os usuários do Windows são forçados a instalar pelo VS Studio e ainda estou preso nisso há 2 dias inteiros.
Faça o que o Unix faz, use um gerenciador de pacotes
Transferir todo o esforço de gerenciamento de dependências para um gerenciador de pacotes evita a maioria desses problemas, como você mesmo apontou:
O VS Studio tem um gerenciador de pacotes nele. O PostgreSQL também recomenda oficialmente um gerenciador de pacotes dedicado do EnterpriseDB, o StackBuilder . O
pgvector
módulo está listado entre seus non-contribs suportados:Basta marcar uma caixa e deixar que ele passe por esse inferno .DLL sozinho.
pgvector
lá também.pg_vector
readme.md do menciona que é possível apontar para a correta. Se for apenas seu ambiente de desenvolvimento local, você pode acessarpg_dump
o conteúdo do seu banco de dados e fazer uma reinstalação limpa de apenas um.De acordo com esta postagem,
libintl.h
é provável que faça parte da biblioteca GNU C. Tente instalar isso.Eles também mencionam
gettext
, então você pode tentar.