Passo 1: Eu instalei o PostgreSQL usando sudo apt-get install postgresql-9.1 como recomendado no site do PostgreSQL
Etapa 2: tentei executar postgres . Não é encontrado. Por alguma razão, a instalação não parece adicioná-lo ao caminho? Então eu tive que adicionar manualmente a linha export PATH=$PATH:/usr/lib/postgresql/9.1/bin ao final do meu ~/.profile . (Sidenote: Alguém sabe por que isso é necessário? Estou fazendo algo errado com a instalação? Tudo o que eu instalei no Ubuntu "apenas funciona" sem alterar o $PATH ...)
Etapa 3: Eu tento executar initdb /usr/local/var/postgres . Permissão negada. Eu tento executar sudo initdb /usr/local/var/postgres . O resultado é sudo: initdb: command not found . Como este comando não é encontrado? Eu apenas corri a maldita coisa! echo sudo $PATH mostra o diretório do PostgreSQL no caminho ... o que me falta?
Sou um pouco novato no Linux, mas esses são os tipos de problemas super-irritantes que eu continuo encontrando!
UPDATE : acredito que esteja relacionado a esta questão . No entanto, executar o comando com sudo -i não não corrige o problema. Acabei de receber: -bash: initdb: command not found . Ótimo.
UPDATE : Isso parece ainda mais próximo. Então eu adicionei alias sudo='sudo env PATH=$PATH' ao meu .bashrc como instruído. Ainda não funciona! Parece que o alias não está funcionando. Quando executo alias , mostro apenas um único. E mesmo assim meu .bashrc está cheio deles ... então, algo está errado com aqueles que estão sendo configurados.
UPDATE : Como estou usando o Ubuntu e o RVM, o RVM recomendou que eu configurasse o terminal para "Executar o comando como shell de login". Com base na leitura eu fiz aqui , parece que o arquivo .bashrc não é lido em um shell de login, somente perfil. Então, movi a linha alias de .bashrc para .profile , então .profile agora tem isso no final:
export PATH="/usr/lib/postgresql/9.1/bin:$PATH"
alias sudo='sudo env PATH=$PATH'
... e ainda não funciona. A execução de alias mostra apenas um alias RVM, mas não o alias sudo que tentei configurar.
UPDATE Em este site , li sobre a precedência de dotfiles. Parece que .bash_profile vem antes de .profile . Dito isto, as minhas adições de PATH foram feitas em .profile e pareciam estar carregadas muito bem, então porque é que o alias também não funcionava? Movendo o alias para .bash_profile de .profile trabalhado, no entanto. Mistério. Então, o comando alias mostra meu novo alias. Eu finalmente digito sudo initdb /usr/local/var/postgres , para ser encontrado com: initdb: cannot be run as root . Sério? Então por que você estava me dando erros de permissão ?! Então, agora eu acho que o problema é que eu só tenho que chown da pasta, mas ainda executar initdb como meu usuário, em vez de root .
UPDATE Executar o comando sudo chown myuser /usr/local/var/postgres/ e depois executar initdb permitiu que o banco de dados fosse inicializado. Ainda bem que era tão óbvio que as permissões do diretório precisavam ser definidas para myuser e não para root. Incrível. Banco de dados bem-sucedido init 4 horas depois.