Passaggio 1: ho installato PostgreSQL usando sudo apt-get install postgresql-9.1come 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/binin 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 $PATHmostra 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 -inon 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 .bashrccome 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 .bashrcfile non sia letto in una shell di accesso, ma solo nel profilo. Quindi ho spostato la aliaslinea da .bashrca .profile, quindi .profileora 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 aliasmostra solo un alias RVM, ma non l' sudoalias che ho provato a configurare.
AGGIORNAMENTO Da questo sito , ho letto della precedenza dei dotfile. Sembra che .bash_profilevenga prima .profile. Detto questo, le mie PATHaggiunte sono state completate .profilee sembrano essere state caricate bene, quindi perché non aliasfunziona anche? Spostando il aliasin .bash_profileda .profilefunzionato, però. Mistero. Quindi il aliascomando 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 chowncartella, ma eseguire comunque initdbcome utente anziché root.
AGGIORNAMENTO L' esecuzione del comando sudo chown myuser /usr/local/var/postgres/, quindi l'esecuzione initdbsuccessiva 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.