IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

通过PostgreSQL的源代码安装数据库

淘宝数据平台团队 2010-07-20 23:18:30 累计浏览 2,788 次
本机暂存

准备步骤:

操作系统-Ubuntu10.04

第一步:下载源码
到官网www.postgresql.org去下载8.4.4版本的源码,我的下载地址是ftp://ftp2.cn.postgresql.org/postgresql/source/v8.4.4/postgresql-8.4.4.tar.gz
我的保存路径为:/home/jiwan/postgresql/postgresql-tar/postgresql-8.4.4.tar.gz
你可以存放到任意想存放的地方。

第二步:解压源码
cd /home/jiwan/postgresql
tar -xvf postgresql-tar/postgresql-8.4.4.tar.gz
mv postgresql-8.4.4 postgresql-source
处理后的文件目录截图:
原图已失效

解释一下:
postgresql-8.4.4.tar.gz中有个叫postgresql-8.4.4的文件夹;
第二行会postgresql-8.4.4.tar中的postgresql-8.4.4文件夹解压到/home/jiwan/postgresql/目录下面;
第三行将postgresql-8.4.4文件夹改名为postgresql-source。

第三步:配置
cd /home/jiwan/postgresql/postgresql-source
sudo ./configure -prefix=/home/jiwan/postgresql/postgresql-bin
执行成功的情况下,系统会有如下输出:
checking build system type… i686-pc-linux-gnu
checking host system type… i686-pc-linux-gnu
…这里省略N行输出信息…
config.status: linking ./src/include/port/linux.h to src/include/pg_config_os.h
config.status: linking ./src/makefiles/Makefile.linux to src/Makefile.port

很不幸,一般情况下都不会成功执行,因为configure执行的时候会检查依赖的库文件是否存在。有错误的系统输出是:
./configure -prefix=/home/jiwan/postgresql/postgresql-bin
checking build system type… i686-pc-linux-gnu
…这里省略N行输出信息…
configure: error: readline library not found
If you have readline already installed, see config.log for details on the
failure. It is possible the compiler isn’t looking in the proper directory.
Use -without-readline to disable readline support.
事实是,一个干净的Ubuntu10.04还需要安装下列库:
libreadline5-dev: 产生error(readline library not found)
zlib1g-dev: 产生error(readline library not found)
bison: 产生warning,可选,用于cvs支持等等
flex: 产生warning,可选,用于cvs支持等等
解决方法是:安装之前执行如下命令(也可以逐个安装以上四个库)
sudo apt-get install libreadline5-dev zlib1g-dev bison flex
其实这条命令还会自动安装libncurses5-dev, libreadline5和m4三个库

解释一下:
./configure是一个批处理文件,它会检查编译安装需要的各种文件并配置各个参数。
通过-prefix指定数据库系统的安装位置:后面的安装步骤会把运行数据库系统需要的文件(二进制,配置文件等等)拷贝到/home/jiwan/postgresql/postgresql-bin目录下面。
可以用./configure -help来查看可用的参数。
configure执行之后的屏幕输出有三种:
以cheking开头的输出:库依赖的结果;
以configure开头的输出:修改了配置选项
以config.status开头的输出:产生的配置文件;
如果安装了bison和flex,执行configure批处理文件之后,下一步编译的时候,就会使编译好后的数据库系统支持bison和flex。

第四步:编译并安装
cd /home/jiwan/postgresql/postgresql-source
make
make install
解释一下:
这一步的目的是:把源码编译成可执行文件和共享库文件,并复制到指定的”/home/jiwan/postgresql/postgresql-bin”目录下面。值得注意的是,这样做以后数据库系统还需要一些初始化的操作才可以使用。
make会默认调用Makefile文件,然后把源码全部编译;
make install会把PostgreSQL数据库安装到”/home/jiwan/postgresql/postgresql-bin”目录下面(这个目录是上一步中设置的),成功的标志就是:”/home/jiwan/postgresql/postgresql-bin”目录下面会有四个文件夹:
bin: 存放可执行文件
include: 存放源代码的头文件
lib: 存放共享库文件
share: 存放数据库系统的公共配置,文档等等

第五步:创建linux帐号”postgres”并设置密码为”postgres”
sudo adduser postgres

第六步:创建数据库初始化需要的文件夹并更改所有者
cd /home/jiwan/postgresql/postgresql-bin
mkdir data
sudo chown -R postgres /home/jiwan/postgresql/postgresql-bin

第七步:初始化数据库
su - postgres
cd /home/jiwan/postgresql/postgresql-bin
bin/initdb -D data
最后一行命令的屏幕输出是:
The files belonging to this database system will be owned by user “postgres”.
…这里省略N行输出信息…
Success. You can now start the database server using:
bin/postgres -D data
or
bin/pg_ctl -D data -l logfile start

解释一下:
这一步创建了数据库运行所需的数据文件和配置文件

第八步:启动数据库服务
su - postgres
cd /home/jiwan/postgresql/postgresql-bin
bin/postmaster -D data>logfile 2>&1 &
数据库成功启动服务之后,默认会在本机地址127.0.0.1的5432端口侦听连接请求,通过显示本机正在侦听的进程可以检查数据库服务是否成功运行:
su root -c “netstat -lnpt|grep post”
应该输出如下结果(postmaster是指向postgres程序的一个链接):
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 21288/postmaster
tcp6 0 0 ::1:5432 :::* LISTEN 21288/postmaster

第九步:创建数据库
su - postgres
/home/jiwan/postgresql/postgresql-bin/bin/createdb jiwan

第十步:连接数据库
su - postgres
/home/jiwan/postgresql/postgresql-bin/bin/psql
这条命令会自动以postgres命令连接到postgres数据库,连接后系统的输出为:
―――――――――――
psql (8.4.4)
Type “help” for help.
postgres=#
―――――――――――
可以在提示符”postgres=#”后面输入”\l”检查之前创建的数据库”jiwan”是否存在,存在的标志就是,执行之后屏幕输出包含以下一行:
jiwan | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |

第十一步:修改配置文件,使得其他主机可以访问数据库
需要修改的文件在”/home/jiwan/postgresql/postgresql-bin/data”目录之下,文件为:
postgresql.conf
pg_hba.conf.
配置方法参考Ubuntu下Postgresql-8.4安装及配置

同分类推荐文章

  1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. Linux如何统计进程的CPU利用率 (累计阅读 16,307)
  2. 我的 RHCA 之路 (累计阅读 14,013)
  3. Linux内存点滴 用户进程内存空间 (累计阅读 13,229)
  4. 给程序员新手的一些建议 (累计阅读 13,089)
  5. Linux 性能监控、测试、优化工具 (累计阅读 13,011)
  6. 关于linux内存free的一些事情 (累计阅读 12,867)
  7. ps - 按进程消耗内存多少排序 (累计阅读 12,687)
  8. Google怎么用linux (累计阅读 12,581)
  9. Linux Used内存到底哪里去了? (累计阅读 11,867)
  10. find命令的一点注意事项 (累计阅读 11,865)