postgresql-7.2.3-r1 has a new init-script. This init-script uses su -c, which causes pg_ctl to be started through the user postgres' shell. By default, the shell for the user postgres is /bin/false if postgresql had been installed before. Thus, /etc/init.d/postgresql start fails if you do not manually change /bin/false to /bin/bash in /etc/passwd. This is not very nice. It took me a while to figure out what was wrong. Currently, the ebuild uses useradd to add postgres. It should probably also use usermod to set the shell to /bin/bash if the user postgres already exists. Also, since postgresql-7.2.3-r1 no longer (as far as I can see) uses sudo, the ebuild should not depend on app-admin/sudo.
giving non-interactive accounts a valid shell is bad
Yes. Perhaps go back to using sudo instead of su -c, then.
how about 7.3.3 ?
*** This bug has been marked as a duplicate of 10367 ***