在64位的CentOS 7上安装32位的PostgreSQL 8

最近,阿里云催促一位朋友赶忙处理系统漏洞,再不处理就停机了。这位朋友在阿里云上,在CentOS 6主机上部署的是32位的PostgreSQL 8.1,他要用这个。html

想来想去,仍是在CentOS 7上安装PostgreSQL 8.1。前者是64位的操做系统,后者是32位的应用程序。能不能安装成功呢?那得试一试才知道。因而,到PostgreSQL官网上去下载,发现只有名称,没有软件包,RPM或者源代码都没有。幸亏,那位朋友保留有源码备份。java

第1步

将源码拷贝到VMware Workstation Pro中的一台CentOS 虚拟机中。python

# tar xvf postgresql-8.1.23.tar.gz
# cd postgresql-8.1.23

第2步

编译。我直接运行的是:./configurelinux

实际上,查看编译日志config.log,缺省的编译参数以下:c++

./configure --prefix=/usr 
--mandir=/usr/share/man 
--infodir=/usr/share/info 
--with-bugurl=http://bugzilla.redhat.com/bugzilla 
--enable-bootstrap 
--enable-shared 
--enable-threads=posix 
--enable-checking=release 
--with-system-zlib 
--enable-__cxa_atexit 
--disable-libunwind-exceptions 
--enable-gnu-unique-object 
--enable-linker-build-id 
--with-linker-hash-style=gnu 
--enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto 
--enable-plugin 
--enable-initfini-array 
--disable-libgcj 
--with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install 
--with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function 
--with-tune=generic 
--with-arch_32=x86-64 
--build=x86_64-redhat-linux

结果显示了一个错误:Readline library not found.sql

查看官网的安装说明,才知道,Readline是psql命令行工具的助手,缺省是要安装的。它能帮助记住经过psql运行过的命令,能用上、下方向键翻看这些命令。要安装两个软件包readline、readline-devel。数据库

 

第3步

补充缺乏的软件。express

# make clean
# yum install -y bison perl python readline readline-devel readline zlib zlib-devel

安装了readline、readline-devel。bootstrap

第4步

# useradd postgres
# mkdir /usr/local/pgsql/data
# chown postgres /usr/local/pgsql/data
# /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

PostgreSQL须要postgres用户来运行。因而添加了这个用户,而且将数据目录的权限授予之。上面最后一条,则将/usr/local/pgsql/data目录设置为数据库的存放目录,且建立了数据库。vim

仍是出错了。以下:

creating template1 database in data/base/1 ... ok
initializing pg_authid ... FATAL:  wrong number of index expressions
child process exited with exit code 1
initdb: removing contents of data directory "data"

搜索了好久,才知道,这是由于gcc的版本太高。在配置的时候须要特殊参数为其降级。

第5步

# ./configure CFLAGS="-fno-aggressive-loop-optimizations"
# make 
# make install

这个参数则解决了前面GCC版本太高的问题。

第6步

启动PostgreSQL,建立数据库testdb,将原先备份的testdb.sql导入到testdb中。最后,为postgres用户设置密码123456。

# /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data &
# /usr/local/pgsql/bin/createdb -U postgres testdb -E SQL_ASCII -D pg_default
# /usr/local/pgsql/bin/psql -U postgres testdb < /backup/testdb.sql
# /usr/local/pgsql/bin/psql -U postgres
postgres# alter user postgres with password '123456';
\q;

最后固然还有几件事情要作:

1)设置监听的IP

# vim /usr/local/data/postgresql.conf

listen = "11.22.33.44"    //监听某个IP地址

或者

listen = '*'  //监听全部IP地址

2)启用密码验证

在/usr/local/data/pg_hba.conf最后添加以下一行:

host    all         all         0.0.0.0 0.0.0.0       md5

备份数据库

/usr/local/pgsql/bin/pg_dump  -U postgres mydatabase > /backup/mydatabase.sql

建立数据库
/usr/local/pgsql/bin/createdb -U  postgres mydatabase -E SQL_ASCII -D pg_default

导入数据库
/usr/local/pgsql/bin/psql -U postgres -d mydatabase < ./backup/mydatabase .sql

删除数据库
/usr/local/pgsql/bin/dropdb -U postgres mydatabase

启动数据库

/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data

中止数据库

/usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data

 

参考资料:

一、https://www.postgresql.org/docs/8.1/install-requirements.html

相关文章
相关标签/搜索