在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

相關文章
相關標籤/搜索