首先,为了避免安全风险,我们将创建一个名为postgres的非特权用户帐户,作为 Postgres 文件的所有者。
要创建 Postgres 帐户,请使用以下命令
[root@deep] /# useradd -M -o -r -d /var/lib/pgsql -s /bin/bash -c "PostgreSQL Server" -u 40 postgres >/dev/null 2>&1 || : |
移动到我们之前解压的新 PostgreSQL 目录,然后移动到名为src的子目录。在您的终端中输入以下命令
[root@deep] /# cd /var/tmp/postgresql-6.5.3 [root@deep ]/postgresql-6.5.3# cd src CC="egcs" \ ./configure \ --prefix=/usr \ --enable-locale |
- 启用本地化支持。 |
编辑Makefile.global文件,vi +210Makefile.global并更改行
CFLAGS= -I$(SRCDIR)/include -I$(SRCDIR)/backend |
CFLAGS= -I$(SRCDIR)/include -I$(SRCDIR)/backend -O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions |
现在,我们必须在服务器上编译和安装 PostgreSQL
[root@deep ]/src# make all [root@deep ]/src# cd .. [root@deep ]/postgresql-6.5.3# make -C src install [root@deep ]/postgresql-6.5.3# make -C src/man install [root@deep ]/postgresql-6.5.3# mkdir -p /usr/include/pgsql [root@deep ]/postgresql-6.5.3# mv /usr/include/access /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/commands /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/executor /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/lib /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/libpq /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/libpq++ /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/port /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/utils /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/fmgr.h /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/os.h /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/config.h /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/c.h /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/postgres.h /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/postgres_ext.h /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/libpq-fe.h /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/libpq-int.h /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/ecpgerrno.h /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/ecpglib.h /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/ecpgtype.h /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/sqlca.h /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/include/libpq++.H /usr/include/pgsql/ [root@deep ]/postgresql-6.5.3# mkdir -p /usr/lib/pgsql [root@deep ]/postgresql-6.5.3# mv /usr/lib/*source /usr/lib/pgsql/ [root@deep ]/postgresql-6.5.3# mv /usr/lib/*sample /usr/lib/pgsql/ [root@deep ]/postgresql-6.5.3# mkdir -p /var/lib/pgsql [root@deep ]/postgresql-6.5.3# chown -R postgres.postgres /var/lib/pgsql/ [root@deep ]/postgresql-6.5.3# chmod 755 /usr/lib/libpq.so.2.0 [root@deep ]/postgresql-6.5.3# chmod 755 /usr/lib/libecpg.so.3.0.0 [root@deep ]/postgresql-6.5.3# chmod 755 /usr/lib/libpq++.so.3.0 [root@deep ]/postgresql-6.5.3# strip /usr/bin/postgres [root@deep ]/postgresql-6.5.3# strip /usr/bin/postmaster [root@deep ]/postgresql-6.5.3# strip /usr/bin/ecpg [root@deep ]/postgresql-6.5.3# strip /usr/bin/pg_id [root@deep ]/postgresql-6.5.3# strip /usr/bin/pg_version [root@deep ]/postgresql-6.5.3# strip /usr/bin/pg_dump [root@deep ]/postgresql-6.5.3# strip /usr/bin/pg_passwd [root@deep ]/postgresql-6.5.3# strip /usr/bin/psql [root@deep ]/postgresql-6.5.3# rm -f /usr/lib/global1.description [root@deep ]/postgresql-6.5.3# rm -f /usr/lib/local1_template1.description |
make 命令将所有源文件编译成可执行的二进制文件。
make install 命令将二进制文件和任何支持文件安装到适当的位置。
mkdir 将创建一个名为pgsql的新目录,在/usr/include和/usr/lib目录下,
然后我们将所有与 PostgreSQL 相关的子目录和文件移动到/usr/include和/usr/lib目录下的/usr/include/pgsql和/usr/lib/pgsql目录,分别使用 mv 命令。
chown 命令将为/var/lib/pgsql目录设置正确的属主和组权限。
strip 命令将丢弃对象文件中的所有符号。这意味着我们的二进制文件体积会更小。这将提高程序的性能,因为当系统执行二进制文件时,需要读取的行数会更少。
rm 命令将删除global1.description和local1_template1.description这些文件,我们的 PostgreSQL 程序不需要它们。