- Andrew
- Medlem ●
- Stockholm
Finns det någon därute som har lyckats installera QGIS?
Jag har lyckats med installation av PROJ4, och GEOS men postgresql orsaka problem. På min rena, ominstallerade iMac har jag lyckats installera postgresql men Postgis vägrade eftersom den kunde inte hitta postgresql.
På min MacBook har jag lyckats få igång postgresql utan postgis och tittat på en db via PGAdmin3. Men nu kan jag inte få igång postgreql igen. Det finns ingen bin under usr/local/pgsql men under usr/local/bin finns det en massa saker som ser ut att vara postgresql. om jag kör pg_ctl inifrån usr/local/bin funkar det inte ändå trotts att jag ser det där.
Skillnaden mellan iMacen och MacBooken är att på min iMac har jag compilerat postgresql själv men på på min MacBook har jag använt Marc Liyanages postgreql installer. Kyng Chaos var inte mycket till hjälp i just denna fråga.
Jag borde nämna att jag är Terminal fientlig och tycker att alla program borde komma som binaries, helst drag n drop. Det vore bra om ni kunde svara som om ni instruera en fullständig idiot. Jag kommer inte ta illa upp.
Skickar du inte med några argument till pg_ctl?
Åtminstone bör du specificera vad det är du vill göra (starta, stoppa, kolla status osv), och sen kan det vara lämpligt att specificera datakatalog (dvs den katalog du gjorde initdb på).
Ex:
./pg_ctl start -D /usr/local/pgsql/data
./pg_ctl status -D /usr/local/pgsql/data
Vad för funktionalitet är du ute efter?
För inställningar för ett interaktivt login-shell kan man använda antingen .bash_profile, .bash_login, eller .profile
Haken är att enbart den första existerande av dessa läses in, sedan avbryts sökandet. För ett interaktivt shell som inte är ett login-shell läses .bashrc in.
Jag vill ställa path så att det hitta till postgresql, postgis mm. Jag har inte de två först nämnda och inte .bashrc heller. Den enda jag har är .profile men den innehåller ett par path rader
test -r /sw/bin/init.sh && . /sw/bin/init.sh
#
# Your previous .profile (if any) is saved as .profile.dpsaved
# Setting the path for DarwinPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Setting PATH for MacPython 2.5
# The orginal version is saved in .profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH
Lägg till följande sist i .profile:
PATH="/usr/local/bin:$PATH" export PATH
Sen måste du antingen läsa in ändringarna genom att göra
source .profile
eller, enklare, stäng ner terminalfönstret och öppna ett nytt, för att ändringarna ska träda i kraft.
Gäller detta för allt nytt som tillkomma? Är det bara att lägga till en liknande rad med
PATH="new/program/bin:$PATH"
eller kan man lägga till på din rad? Typ:
PATH="/usr/local/bin:/new/program/bin:$PATH"
Är det så att $PATH lägger till alla PATHs som är redan inlästa?
Det är bara att lägga till, med kolon som separator. Tänk bara på att om det av någon anledning finns två program med samma namn i sökvägen, så kommer det först påträffade av dem att exekveras.
Låt säga att du själv skriver ett program som heter 'ls' och i PATH sätter katalogen för detta program före katalogen för systemets 'ls'. Då kommer du inte längre åt den vanliga 'ls' utan att ange hela sökvägen '/bin/ls'. Detta kan också bli en säkerhetsrisk.
Variabeln $PATH innehåller mycket riktigt de sökvägar som satts upp tidigare, och därför kan man använda den för att lägga till fler kataloger. Det är dock inte förrän man exporterar variabeln som den kommer sin omgivning till del.
echo $PATH visa inte den nya path och jag var tvungen att cd till usr/local/bin för att starta postgresql
Om Spot har lust att svara på detta får du gärna göra det. Men om du har tröttnat på mina idiotiska frågor har jag full förståelse för det.
Följande är hela innehållet av .profile filen
test -r /sw/bin/init.sh && . /sw/bin/init.sh
#
# Your previous .profile (if any) is saved as .profile.dpsaved
# Setting the path for DarwinPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Setting PATH for MacPython 2.5
# The orginal version is saved in .profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH
PATH="/usr/local/bin:$PATH"
export PATH
har precis hittat en bashrc fil (utan .) under private/etc/ med följande innehåll
# System-wide .bashrc file for interactive bash(1) shells.
if [ -n "$PS1" ]; then PS1='\h:\w \u\$ '; fi
# Make bash check it's window size after a process completes
shopt -s checkwinsize
Nu blev det lite olyckligt med smileysarna i sökvägarna, men om det egentligen är ett kolon följt av ett dollartecken på de ställena, så är allt ok.
Eftersom du inte svarat på detta så frågar jag igen: har du sett till att avsluta terminalsessionen och starta en ny, så att ändringarna träder i kraft?
Nej, /etc/bashrc ska finnas där den finns.
Har du kontrollerat vilket shell du använder? Det är bara bash och sh som använder sig av .profile. För att kontrollera kan du skriva echo $0 eller echo $SHELL i terminalen.
Om du använder bash så ska den läsa in .profile vid uppstart. Lägg in ett par echo med lämplig text på ett par olika ställen i .profile och titta sen efter texterna när du öppnar ett nytt terminalfönster. Om bara en del visas är det förmodligen något fel som gör att inläsningen av filen avbryts.
echo $PATH ger /bash/bin
Jag la in några echos i .profile (1 till 4 där 4 kommer på slutet). Det ser ut som att hela filen läses in och att pathen till /usr/local/bin ÄR med men ändå måste jag cd till den.
Last login: Tue Feb 20 09:32:49 on ttyp1
Welcome to Darwin!
1
2
3
4
dhcp-no-177:~ andrew$ echo $PATH
/usr/local/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/opt/local/bin:/opt/local/sbin:/sw/bin:/sw/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
dhcp-no-177:~ andrew$ su postgres
Password:
dhcp-no-177:/Users/andrew postgres$ ./pg_ctl status -D /usr/local/pgsql/data
su: ./pg_ctl: No such file or directory
dhcp-no-177:/Users/andrew postgres$ cd /usr/local/bin/
dhcp-no-177:/usr/local/bin postgres$ ./pg_ctl status -D /usr/local/pgsql/data
pg_ctl: server is running (PID: 2295)
/usr/local/bin/postgres -D /usr/local/pgsql/data
dhcp-no-177:/usr/local/bin postgres$
Det är bara om du befinner dig i /usr/local/bin som du kan använda ./pg_ctl
När du anger ./ åsidosätter du sökvägen och bash letar efter pg_ctl enbart i den aktuella katalogen.
När du nu har /usr/local/bin i sökvägen räcker det med pg_ctl.