Olá

Esta minha "saga" ainda não chegou ao fim...

Resolvi (por uma gambiarra talvez) o problema das permissões, já que minhas
concessões de privilégios não estavam sendo herdadas nos subdiretórios e
seus arquivos. Li alguma coisa sobre Diretivas de Grupo (Group Policy) mas
ainda não compreendi a origem do problema (!?).

Enfim, tentando agora "startar" o initdb, encontro este erro:

      O programa "postgres" foi encontrado pelo "D:\pgsql\bin\initdb" mas
nao tem a mesma versão que initdb.
      Verifique sua instalação.

Pois bem, examinando o código-fonte do initdb (embora eu não seja
programador C) encontrei as linhas que tratam esse problema:

02306         /*
02307          * we have to set PGDATA for postgres rather than pass it on
the
02308          * command line to avoid dumb quoting problems on Windows,
and we
02309          * would especially need quotes otherwise on Windows because
paths
02310          * there are most likely to have embedded spaces.
02311          */
02312         pgdenv = xmalloc(8 + strlen(pg_data));
02313         sprintf(pgdenv, "PGDATA=%s", pg_data);
02314         putenv(pgdenv);
02315
02316         if ((ret = find_other_exec(argv[0], "postgres", PG_VERSIONSTR,
02317
 backend_exec)) < 0)
02318         {
02319                 char full_path[MAXPGPATH];
02320
02321                 if (find_my_exec(argv[0], full_path) < 0)
02322                         StrNCpy(full_path, progname, MAXPGPATH);
02323
02324                 if (ret == -1)
02325                         fprintf(stderr,
02326                                         _("The program \"postgres\"
is needed by %s "
02327                                           "but was not found in the\n"
02328                                           "same directory as
\"%s\".\n"
02329                                           "Check your
installation.\n"),
02330                                         progname, full_path);
02331                 else
02332                         fprintf(stderr,
02333                                         _("The program \"postgres\"
was found by \"%s\"\n"
02334                                           "but was not the same
version as %s.\n"
02335                                           "Check your
installation.\n"),
02336                                         full_path, progname);
02337                 exit(1);
02338         }

Mais adiante, temos a função find_my_exec , em:
http://se.uwaterloo.ca/~h7zhang/psql/exec_8c-source.html

Aparentemente, a primeira validação é com relação às variáveis de ambiente,
path absoluto e não relativo, etc.
Eu testei algumas coisas em minhas environments variables, sem sucesso,
seja testando setar o caminho "absoluto", seja setando a PG_VERSION, etc,
etc...

Confirmei na linha de comando:

postgres  -V
initdb  -V

Resultado dá idêntico.

Também tentei na porta 5433.

Testei também outras 2 versões do PostgreSQL, acredite...

E testei também em instalações (agora sempre usando o zip) em outros
diretórios, sempre mudando as variáveis, checando tudo...

Por último, a medida derradeira: faxina geral. Apaguei tudo, zerei as
pastas, passei o CCleaner, Glarys, removi a conta "postgres" e limpei
manualmente o registro do windows, excluindo todos os rastros referentes ao
profile "postgres", etc.

Naturalmente, também esvaziando a pasta temp do Administrador, já que
alguma coisa fica ali.

Faxina geral. Ficou uma beleza. Máquina nova...

Pronto. Criei a conta "postgres2" (tudo novo, 100% à prova de balas),
descompactei o zip, criei as variáveis de ambiente, abri o cmd para esta
conta nova e fui instalar confiante... e o resultado novamente foi:

      O programa "postgres" foi encontrado pelo "D:\pgsql\bin\initdb" mas
nao tem a mesma versão que initdb.
      Verifique sua instalação.

Urucubaca? Assombração? Bruxaria?...

Só o que falta é eu ter que compilar (sou virgem nisso, heheh) o fonte do
initdb.c , suprimindo o maldito "exit" da linha 02338 que não está deixando
eu criar o meu cluster!

Sugestões?

Fabiano


      ._____________________
      |
      |   ,-,__,
      |  { / /__\
      | { `}'- -/
      | {_}/\ o/
      |   __}  {__
      | /     "   \
      |/ /| 0}  0} \
      / / \`~' `"/\ \
     { :   }    {  : }
      \ \  }  . { / /
      |\ \/      \ /
      | j{   \ /  }t
      |  {    Y   }
      |   \    \ /
      |    \    V
      |     `,   \
      |      {`   }
      |_____ {'  /_________
             ;  /
            ;  /
           ,  ,
          (, k
           \,,,
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a