数据库内核研发学习之路(二)postgres编译安装

我们在前面安装配置好环境之后,接下来就是去安装编译postgres,不是以前我们常用的一键化安装,而是根据源码进行编译安装。

1、获取postgres的15.2版本的源码

我这里获取的是15.2版本的源码,当然大家也可以获取其他版本的源码,虽然有所不同,但是在编译安装的过程还是没有区别。

git clone -b REL_15_2 https://gitee.com/mirrors/PostgreSQL.git --depth=1

首先就是通过git从网站上面克隆下来postgres的源码。在这里我们大家最好新建一个postgres用户,因为在后面使用的时候对root用户有限制,我这里就是将源码克隆到postgres用户目录下的pgcode文件夹。

#如何新建一个用户
useradd postgres #新建

passwd postgres #设置密码

cd /home/postgres #进入用户目录

mkdir pgcode #创建pgcode文件夹存放源码

然后就是使用刚刚的git语句克隆代码到该文件夹中。

2、安装必要的依赖

 在获取到postgres的源码之后我们就准备开始安装一些必要的依赖,我这里直接提供这些常见的依赖。

yum install readline-devel flex bison zlib-devel perl

在实际的操作中,根据大家的电脑不同,可能会出现不同的问题,大家需要根据自己安装过程中的报错信息找到缺少的依赖单独进行安装。

3、开始执行编译安装

 首先进入到源码的根目录,在我这里也就是在/home/postgres/pgcode/PostgresSQL里面,然后执行下列命令进行检查。

./configure --prefix=/home/postgres/pginstall --enable-debug

#--prefix是指准备安装的路径
#--enable-debug是指打卡debug

 

在语句执行完成之后没有报错即为执行成功,如上所示。

检查好环境依赖之后就需要进行编译,编译的命令如下:

make -j 32 #-j32的意思是让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。

 使用make命令进行编译的结果也是没有出现报错即为执行成功,当然,如果大家在前面执行。configure命令的时候没有成功,在处理好依赖安装之后需要重新执行一遍,然后在执行一遍如下命令。也就是说你在执行完configure命令之后出现报错,然后你继续执行make命令肯定也会报错,需要清理缓存之后重新执行即可。

make clean

 执行结果如下没有报错信息即为执行成功

 接下来就是安装,执行安装命令

make install

 执行无报错即为执行成功:

 进入安装目录验证是否成功,安装目录为我们最开始使用configure命令prefix指定的目录。

 /home/postgres/pginstall目录下有如下文件即为安装成功。

4、初始化postgres数据库

注意在执行命令的时候看清楚在哪里执行的哦!

本小节的initdb、pg_ctl、psql命令都是在/home/postgres/pginstall/bin目录下执行的!

在安装成功之后我们需要初始化一个postgres的数据目录出来,然后才能启动postgres数据库。

进入/home/postgres/pginstall/bin目录下执行如下命令:

./initdb -D /home/postgres/pginstall/pgdata

#-D 的意思是指定初始化的data目录放在哪里

 然后就是启动postgres数据库的服务。

 ./pg_ctl start -D ../pgdata/

# -D 是指指定postgres刚刚初始化的data目录的位置

出现以上结果说明postgres的服务已经启动成功。

可以使用ps目录查看一下进程是否已经启动。

ps -ef |grep postgres

到这里我们就可以登录数据库。

./psql -d postgres -U postgres

#登录指定登录的数据库名字-d 和登录的用户名字 -U

到这里安装已经结束了。 

5、常见报错信息

(1)错误1

 根据最后的报错提示可以知道,是因为我们的环境没有c语言的编译环境,所以我们安装gcc环境和make环境即可。

yum install gcc make -y #-y的意思是一直同意,不需要手动同意

安装结果如下:

按照以上流程就只有这一个报错,如果遇到其他报错信息我再更新 

相关推荐

  1. postgres数据库安装

    2024-07-15 07:22:03       56 阅读
  2. Android学习数据存储()

    2024-07-15 07:22:03       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 07:22:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 07:22:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 07:22:03       58 阅读
  4. Python语言-面向对象

    2024-07-15 07:22:03       69 阅读

热门阅读

  1. [Spring Boot]定时任务因系统时间修改之后无法执行

    2024-07-15 07:22:03       20 阅读
  2. Redis避坑疑难杂症

    2024-07-15 07:22:03       20 阅读
  3. Leetcode【零钱兑换】

    2024-07-15 07:22:03       27 阅读
  4. 配置提交节点

    2024-07-15 07:22:03       24 阅读
  5. 【信息收集】 IP信息收集

    2024-07-15 07:22:03       20 阅读
  6. 线程同步的使用(一)

    2024-07-15 07:22:03       26 阅读
  7. lvs集群

    lvs集群

    2024-07-15 07:22:03      27 阅读