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

原创
2019/12/31 10:05
阅读数 1K

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

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

第1步

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

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

第2步

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

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

./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.

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

 

第3步

补充缺少的软件。

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

安装了readline、readline-devel。

第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目录设置为数据库的存放目录,且创建了数据库。

还是出错了。如下:

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

 

参考资料:

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

展开阅读全文
加载中

作者的其它热门文章

打赏
0
1 收藏
分享
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部