Setting up Postgresql on Linux
Tom Lane wrote:
phil campaigne <pcampaigne@charter.net> writes:
when I login to linux and check the env's I see:
PATH=/usr/local/pgsql/bin:/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/home/postgres/bin:/opt/IBMJava2-14/bin:/opt/IBMJava2-14/jre/bin:/usr/local/pgsql/binLD_LIBRARY_PATH=/usr/local/pgsql/lib
What are you checking exactly? If it's not the output of "env" then
I would say you are looking at the wrong thing. Possibly you're looking
at a profile file that neglects to "export LD_LIBRARY_PATH", or some
such.I cannot execute the following:
psql testdb
psql: relocation error: psql: undefined symbol: PQgetsslThis is clearly picking up an incompatible version of libpq.so
(specifically, psql was built with SSL support but libpq.so wasn't).
I'd suggest trying "which psql" and "ldd" on the psql executable
to figure out exactly what's what.regards, tom lane
I'm not sure how to interpret this,
[phil@hardwoodthunder phil]$ which psql
/usr/bin/psql
[phil@hardwoodthunder phil]$ ldd /usr/bin/psql
libpq.so.3 => /usr/local/pgsql/lib/libpq.so.3 (0x40013000)
libpam.so.0 => /lib/libpam.so.0 (0x4002f000)
libssl.so.2 => /lib/libssl.so.2 (0x40037000)
libcrypto.so.2 => /lib/libcrypto.so.2 (0x40067000)
libkrb5.so.3 => /usr/kerberos/lib/libkrb5.so.3 (0x4013e000)
libz.so.1 => /usr/lib/libz.so.1 (0x4019b000)
libreadline.so.4 => /usr/lib/libreadline.so.4 (0x401a9000)
libtermcap.so.2 => /lib/libtermcap.so.2 (0x401d6000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x401da000)
libresolv.so.2 => /lib/libresolv.so.2 (0x40207000)
libnsl.so.1 => /lib/libnsl.so.1 (0x40217000)
libdl.so.2 => /lib/libdl.so.2 (0x4022b000)
libm.so.6 => /lib/libm.so.6 (0x4022e000)
libc.so.6 => /lib/libc.so.6 (0x40250000)
libk5crypto.so.3 => /usr/kerberos/lib/libk5crypto.so.3 (0x4036e000)
libcom_err.so.3 => /usr/kerberos/lib/libcom_err.so.3 (0x4037e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
thanks,
Phil
phil campaigne wrote:
Tom Lane wrote:
phil campaigne <pcampaigne@charter.net> writes:
when I login to linux and check the env's I see:
PATH=/usr/local/pgsql/bin:/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/home/postgres/bin:/opt/IBMJava2-14/bin:/opt/IBMJava2-14/jre/bin:/usr/local/pgsql/binLD_LIBRARY_PATH=/usr/local/pgsql/lib
What are you checking exactly? If it's not the output of "env" then
I would say you are looking at the wrong thing. Possibly you're looking
at a profile file that neglects to "export LD_LIBRARY_PATH", or some
such.I cannot execute the following:
psql testdb
psql: relocation error: psql: undefined symbol: PQgetsslThis is clearly picking up an incompatible version of libpq.so
(specifically, psql was built with SSL support but libpq.so wasn't).
I'd suggest trying "which psql" and "ldd" on the psql executable
to figure out exactly what's what.regards, tom lane
I'm not sure how to interpret this,
[phil@hardwoodthunder phil]$ which psql
/usr/bin/psql[phil@hardwoodthunder phil]$ ldd /usr/bin/psql
libpq.so.3 => /usr/local/pgsql/lib/libpq.so.3 (0x40013000)
libpam.so.0 => /lib/libpam.so.0 (0x4002f000)
libssl.so.2 => /lib/libssl.so.2 (0x40037000)
libcrypto.so.2 => /lib/libcrypto.so.2 (0x40067000)
libkrb5.so.3 => /usr/kerberos/lib/libkrb5.so.3 (0x4013e000)
libz.so.1 => /usr/lib/libz.so.1 (0x4019b000)
libreadline.so.4 => /usr/lib/libreadline.so.4 (0x401a9000)
libtermcap.so.2 => /lib/libtermcap.so.2 (0x401d6000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x401da000)
libresolv.so.2 => /lib/libresolv.so.2 (0x40207000)
libnsl.so.1 => /lib/libnsl.so.1 (0x40217000)
libdl.so.2 => /lib/libdl.so.2 (0x4022b000)
libm.so.6 => /lib/libm.so.6 (0x4022e000)
libc.so.6 => /lib/libc.so.6 (0x40250000)
libk5crypto.so.3 => /usr/kerberos/lib/libk5crypto.so.3 (0x4036e000)
libcom_err.so.3 => /usr/kerberos/lib/libcom_err.so.3 (0x4037e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)thanks,
Phil---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster
Do you have two copies of postgres installed on your pc? If your distro
(what is it BTW?) has the following commands, try these (without the
quotes): "updatedb" and then "locate pgsql" to see if you have multiple
copies installed. And/or check out /usr/bin/psql. Is this a file or a
directory?
What is the home directory of postgres? Is it /home/postgres or
/usr/local/pgsql? It should be /usr/local/pgsql.
Final resort, copy your .bashrc and .bash_profile from your home
directory somewhere else for backup, remove postgres and re-install it.
Here is my *complete* install list (open to constructive comments),
(slightly) modified of course from "Practical PostgreSQL":
--------------------------------------------------------------------------------------------------------------------------------
Installing PostgreSQL
1. Ensure that Java
<http://lanfear.syscor.priv/installs/java/index.html> and Ant
<http://lanfear.syscor.priv/installs/ant/index.html> and readline
(ftp://ftp.gnu.org/pub/gnu/readline) are installed first and working
correctly.
2. Install the following packages:
zliblg-dev
libreadline4-dev
libgcrypt-dev
openssl
libssl-dev
3. Create postgres group and user (-m option creates the directory):
# groupadd postgres
# useradd -d /usr/local/pgsql -m postgres
# gpasswd -a postgres postgres
4. Download the following file into /usr/local/src, extract it as root,
and update permissions:
# cd /usr/local/src/
# tar xvzf postgresql-7.x.tar.gz
# chown -R postgres.postgres postgresql-7.x/
5. Ensure the following exists in /usr/local/pgsql/.bash_profile:
PATH=$PATH:/usr/local/java/bin:/usr/local/ant/bin:/usr/local/pgsql/bin:/usr/local/scripts
export JAVA_HOME=/usr/local/java
export ANT_HOME=/usr/local/ant
6. Configure the source tree with the following options and then compile:
# cd postgresql-7.3
# ./configure --enable-multibyte \
--enable-odbc \
--with-java \
--with-maxbackends=96 \
--with-openssl="/usr/bin/openssl" \
--enable-syslog
# make
# cd /usr/local/src/
# chown -R postgres.postgres postgresql-7.x/
7. Regression Testing. This builds a test installation of PostgreSQL and
checks whether all parts of the source are properly compiled.
# su - postgres
$ cd /usr/local/src/postgresql-7.x
$ make check
8. Install (as root):
# cd /usr/local/postgresql-7.x
# make install
# make install-all-headers
# cd /usr/local
# chown -R postgres.postgres pgsql
9. Initialize the database as user postgres:
# su - postgres
# initdb -E UNICODE -D /usr/local/pgsql/data
10. Configure (as root) the PostgreSQL SysV Script. This script is
useful for starting, stopping, and checking the status of PostgreSQL.
# cd /usr/local/src/postgresql-7.x
# cp contrib/start-scripts/linux /etc/init.d/postgres
# chmod 755 /etc/init.d/postgres
To have PostgreSQL start automatically when the computer boots add
symbolic links from the correct /etc/rc*.d/ directories to
/etc/init.d/postgres. If the normal runlevel is 3 then you really only
need to add it to rc3.d:
# ln -s /etc/init.d/postgres /etc/rc2.d/S85postgres
# ln -s /etc/init.d/postgres /etc/rc3.d/S85postgres
etc ...
11. Start PostgreSQL for the first time:
# /etc/init.d/postgres start
12. Create a new db:
# su - postgres
$ createdb testdb
$ psql testdb
13. To shutdown:
# /etc/init.d/postgres stop
Configuration files and the server log are found in /usr/local/pgsql/data
------------------------------------------------------------------------
Server Configuration
Edit file /usr/local/pgsql/data/pg_hba.conf:
#TYPE DATABASE IP_ADDRESS NETMASK AUTHTYPE MAP
host all 127.0.0.1 255.255.255.255 trust
local all trust
Edit file /usr/local/pgsql/data/postgresql.conf:
tcpip_socket = true
shared_buffers = 2048
sort_mem = 32168
syslog=1
------------------------------------------------------------------------
System Logging
Edit the /etc/syslog.conf file to capture PostgreSQL sysloggin calls, by
adding:
local0.* /var/log/postgresql