Passaggio 1: ho installato PostgreSQL usando sudo apt-get install postgresql-9.1
come raccomandato sul sito Web PostgreSQL
Passaggio 2: ho provato a correre postgres
. Non è stato trovato Per qualsiasi motivo, l'installazione non sembra aggiungerlo al percorso? Quindi ho dovuto aggiungere manualmente la linea export PATH=$PATH:/usr/lib/postgresql/9.1/bin
in fondo alla mia ~/.profile
. (Sidenote: Qualcuno sa perché questo è necessario? Sto facendo qualcosa di sbagliato con l'installazione? Tutto il resto che ho installato in Ubuntu "funziona" senza cambiare il $PATH
...)
Passaggio 3: provo a correre initdb /usr/local/var/postgres
. Permesso negato. Provo a correre sudo initdb /usr/local/var/postgres
. Il risultato è sudo: initdb: command not found
. Come non viene trovato questo comando? Ho appena corso la dannata cosa! echo sudo $PATH
mostra la directory PostgreSQL nel percorso ... cosa mi sto perdendo?
Sono un po 'un principiante in Linux, ma questi sono i tipi di problemi super irritanti che continuo a incontrare!
AGGIORNAMENTO : credo sia correlato a questa domanda . Tuttavia, l'esecuzione il comando con sudo -i
non non risolve il problema. Ottengo solo: -bash: initdb: command not found
. Grande.
UPDATE : Questo sembra ancora più vicino. Quindi ho aggiunto alias sudo='sudo env PATH=$PATH'
al mio .bashrc
come indicato. Non funziona ancora! Sembra che l'alias non funzioni. Quando corro alias
, ne mostro solo uno. Eppure il mio .bashrc
è pieno di loro ... quindi c'è qualcosa di sbagliato in quelli che si stanno preparando.
AGGIORNAMENTO : Dal momento che sto usando Ubuntu e RVM, RVM mi ha consigliato di impostare il terminale su "Esegui comando come shell di accesso". Sulla base della lettura che ho fatto qui , sembra che il .bashrc
file non sia letto in una shell di accesso, ma solo nel profilo. Quindi ho spostato la alias
linea da .bashrc
a .profile
, quindi .profile
ora ha questo alla fine:
export PATH="/usr/lib/postgresql/9.1/bin:$PATH"
alias sudo='sudo env PATH=$PATH'
... e ancora non funziona. L'esecuzione alias
mostra solo un alias RVM, ma non l' sudo
alias che ho provato a configurare.
AGGIORNAMENTO Da questo sito , ho letto della precedenza dei dotfile. Sembra che .bash_profile
venga prima .profile
. Detto questo, le mie PATH
aggiunte sono state completate .profile
e sembrano essere state caricate bene, quindi perché non alias
funziona anche? Spostando il alias
in .bash_profile
da .profile
funzionato, però. Mistero. Quindi il alias
comando mostra il mio nuovo alias. Ho finalmente digito sudo initdb /usr/local/var/postgres
, per essere soddisfatte con: initdb: cannot be run as root
. Oh veramente? Allora perché mi stavi dando errori di autorizzazione ?! Quindi ora penso che il problema sia che devo solo accedere alla chown
cartella, ma eseguire comunque initdb
come utente anziché root
.
AGGIORNAMENTO L' esecuzione del comando sudo chown myuser /usr/local/var/postgres/
, quindi l'esecuzione initdb
successiva ha consentito l'inizializzazione del database. Sono contento che fosse così ovvio che le autorizzazioni della directory dovevano essere impostate su myuser e non su root. Incredibile. Inizializzazione del database riuscita 4 ore dopo.