I have been working with a V9.0.5 postgresql source distribution under Ubuntu 10.04 where the tools (createdb, psql ) seemed to know that the socket communication file was found/created in /tmp. I don't recall having to set any configure options to have this work correctly.
Upon recent migration to V9.1.2 I find that on using pg_ctl to start the database the socket file is created in /tmp. However the tools ( psql, creatdb ) seem to expect the socket file in /var/run/postgresql.
I have solved my problem by declaring the unix_socket_directory in postgresql.conf file to be /var/run/postgresql. It does seem for a standard build they should have a common location?