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.