数据库内核研发学习之路(二)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的意思是一直同意,不需要手动同意

安装结果如下:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/46193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度安全大模型智能体实践入选信通院“安全守卫者计划”优秀案例

7月3日,由全球数字经济大会组委会主办,中国信息通信研究院(以下简称中国信通院)与中国通信标准化协会联合承办的2024全球数字经济大会“云和软件安全论坛暨第二届SecGo云和软件安全大会”在北京召开。本届论坛聚焦云和软件安全最新…

RISC-V在线反汇编工具

RISC-V在线反汇编工具: https://luplab.gitlab.io/rvcodecjs/#q34179073&abifalse&isaAUTO 不过,似乎,只支持RV32I、RV64I、RV128I指令集:

ControlNet作者新作Paints-Undo:一键模拟人类绘画过程,再也没人敢说你的图是生成的了!

ControlNet作者敏神又有新项目了。 Paints-Undo 可以生成模拟人类绘画过程的动画。支持输入单图倒推出绘制这个图片某一步的过程,也可以给两张图,生成一个绘制过程动画。 再有人说你的图是生成的就把这个拿给他看,哈哈。下面先看一下展示的…

【JUC】使用CompletableFuture执行异步任务

文章目录 Future接口介绍Future接口常用实现类FutureTaskFuture接口能干什么Future接口相关架构FutureTask初步使用Future编码实战和优缺点分析优点缺点获取结果的方式不优雅结论 完成一些复杂的任务 CompletableFuture对Future的改进CompletableFuture为什么会出现Completable…

解决nginx代理静态资源刷新后404问题

背景 在公司的项目中,有一个管理系统,大致的逻辑是通过nginx代理的静态资源, 正常页面跳转是没有问题的,有的时候我们会使用回车或者F5进行 页面刷新的时候都会出现404问题。 解决 这种我怀疑是nginx的配置不到位的问题。 我在本…

数据库管理-第218期 服务器内存(20240711)

数据库管理218期 2024-07-11 数据库管理-第218期 服务器内存(20240711)1 内存2 ECC内存3 原理3.1 多副本传输3.2 纠错码3.3 汉明码 总结 数据库管理-第218期 服务器内存(20240711) 作者:胖头鱼的鱼缸(尹海文…

数据库第六次

视图 salary decimal(10,2) not null default 0 comment ‘工资’, address varchar(200) not null default ‘’ comment ‘通讯地址’, dept_id int comment ‘部门编号’ ); create index idx_name on emp(emp_name); create index idx_birth on emp(birth); create index…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥删除(ArkTS)】

密钥删除(ArkTS) 为保证数据安全性,当不需要使用该密钥时,应该删除密钥。 开发步骤 以删除HKDF256密钥为例。 确定密钥别名keyAlias,密钥别名最大长度为64字节。初始化密钥属性集。用于删除时指定密钥的属性TAG,比如删除的密钥…

【java】力扣 合并k个升序链表

文章目录 题目链接题目描述思路代码 题目链接 23.合并k个升序链表 题目描述 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表 思路 我在这个题里面用到了PriorityQueue(优先队列) 的知识 Prio…

顶顶通呼叫中心中间件实现随时启动和停止质检(mod_cti基于FreeSWITCH)

文章目录 前言联系我们拨号方案启动停止ASR执行FreeSWITCH 命令接口启动ASR接口停止ASR接口 通知配置cti.json配置质检结果写入数据库 前言 顶顶通呼叫中心中间件的实时质检功能是由两个模块组成:mod_asr 和 mod_qc。 mod_asr:负责调用ASR将用户们在通…

进程通信(1):无名管道(pipe)

无名管道(pipe)用来具有亲缘关系的进程之间进行单向通信。半双工的通信方式,数据只能单向流动。 管道以字节流的方式通信,数据格式由用户自行定义。 无名管道多用于父子进程间通信,也可用于其他亲缘关系进程间通信。 因为父进程调用fork函…

开发个人Ollama-Chat--10 绑定域名

开发个人Ollama-Chat–10 绑定域名 域名购买最好找正规的渠道购买,不要因贪图小便宜而多走很多的弯路。我就是第一次购买域名,到了一个坑壁的平台"西部数码",SSL证书申请了2个月,没下来,客服也贼不专业&…

猫头虎:什么是内耗?

猫头虎 🐯 建联猫头虎,商务合作,产品评测,产品推广,个人自媒体创作,超级个体,涨粉秘籍,一起探索编程世界的无限可能! 摘要 内耗是指在工作或学习过程中,个…

leetcode日记(37)旋转图像

方法是看评论区想出来的&#xff1a;先将矩阵转置&#xff0c;再将每一行逆转 class Solution { public: int n,m,l,k; struct bian{int u;int v;int d; }; void digui(int loc,int c[],vector<bian> bi,int now,int q,bool colour[],int& maxx,bool jg[]){if(q>…

网络协议 — Keepalived 高可用方案

目录 文章目录 目录Keepalived 是实现了 VRRP 协议的软件Keepalived 的软件架构VRRP StackCheckersKeepalived 的配置Global configurationvrrp_scriptVRRP Configurationvrrp synchroization groupvrrp instancevirtual ip addressesvirtual routesLVS Configurationvirtual_s…

偶数位的数c++

题目描述 给你两个整数 l,r&#xff0c;求 l∼r 范围内有多少个位数为偶数的数。 输入 一行两个整数 l,r。 输出 输出位数为偶数的数的数量。 样例输入 5 15样例输出 6 提示 样例解释 10,11,12,13,14,15 位数为偶数&#xff0c;都是两位数。 数据规模与约定 对于 1…

数据结构之线性表表示集合详解与示例(C,C#,C++)

文章目录 基本特征线性表的特点&#xff1a;线性表的表示方法&#xff1a;C、C#和C语言如何实现一个线性表表示集合1. C实现2. C#实现3. C实现 总结 线性表是计算机数据结构中的一个基本概念&#xff0c;它是一种最简单的抽象数据类型。在线性表中&#xff0c;数据元素之间的关…

Qt进阶版五子棋

五子棋是一种两人对弈的棋类游戏&#xff0c;目标是在横、竖、斜任意方向上连成五个子。在Qt中实现五子棋程序&#xff0c;你需要设计棋盘界面、处理下棋逻辑、判断胜负等。以下是实现一个基本五子棋程序的步骤&#xff1a; 创建项目和界面 使用Qt Creator创建一个新的Qt Widge…

academic-homepage:快速搭建个人学术主页,页面内容包括个人简介、教育经历、发布过的学术列表等,同时页面布局兼容移动端。

今天给大家分享GitHub 上一个开源的 GitHub Pages 模板 academic-homepage。 可帮助你快速搭建个人学术主页&#xff0c;页面内容包括个人简介、教育经历、发布过的学术列表等最基本内容&#xff0c;同时页面布局兼容移动端。 相关链接 github.com/luost26/academic-homepage …

Java语言程序设计——篇四(1)

类和对象 面向对象概述面向过程与面向对象面向对象基本概念面向对象的基本特征面向对象的优势及应用 为对象定义类类的修饰符成员变量成员变量-修饰符 构造方法⭐️成员方法成员方法-修饰符例题讲解 ⚠️理解栈和堆 面向对象概述 两种程序设计方法 结构化程序设计&#xff0c…