数据库内核研发学习之路(二)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云和软件安全大会”在北京召开。本届论坛聚焦云和软件安全最新…

Java学习笔记整理: 关于SpringBoot 2024/7/12;

SpringBoot springboot也是spring公司开发的一款框架。为了简化spring项目的初始化搭建的。 特点specialty: springboot的特点: 1) 自动配置 Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程&a…

Java中常用的util类库在Maven

Java中常用的util类库在Maven项目中通常以依赖的形式引入。以下是一些常用的util库及其Maven依赖。 Apache Commons Lang 3: 提供了很多工具类&#xff0c;如StringUtils, ArrayUtils等。 <dependency><groupId>org.apache.commons</groupId><artifactI…

new Date() 是 JavaScript 中用来创建日期和时间对象的构造函数。它能够生成当前日期和时间,或者根据提供的参数生成特定的日期和时间对象

new Date() 是 JavaScript 中用来创建日期和时间对象的构造函数。它能够生成当前日期和时间&#xff0c;或者根据提供的参数生成特定的日期和时间对象。以下是关于 new Date() 的详细说明&#xff0c;包括如何使用不同参数来创建日期对象以及如何操作日期对象。 创建 Date 对象…

RISC-V在线反汇编工具

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

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

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

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

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

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

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

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

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

华为生成树协议技术概述

生成树协议&#xff08;Spanning Tree Protocol&#xff0c;STP&#xff09;是一种网络协议&#xff0c;旨在防止以太网网络中发生环路。环路会导致广播风暴、MAC地址表混乱等问题&#xff0c;从而严重影响网络性能和稳定性。华为交换机支持多种生成树协议&#xff0c;包括STP、…

数据库第六次

视图 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) 为保证数据安全性&#xff0c;当不需要使用该密钥时&#xff0c;应该删除密钥。 开发步骤 以删除HKDF256密钥为例。 确定密钥别名keyAlias&#xff0c;密钥别名最大长度为64字节。初始化密钥属性集。用于删除时指定密钥的属性TAG&#xff0c;比如删除的密钥…

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

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

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

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

算法训练营day08 字符串(反转,替换,综合运用(逻辑+反转))

&#x1f4a1; 解题思路 &#x1f4dd; 确定输入与输出&#x1f50d; 分析复杂度&#x1f528; 复杂题目拆分 &#xff1a;严谨且完整 地拆分为更小的可以解决的子问题&#xff08;字符的逻辑拆分&#xff09;–&#xff08;多总结&#xff09;&#x1f4ad; 选择处理逻辑&…

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

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

Git 2.45.2源码安装

环境 Centos 7 安装环境依赖 $ yum install curl-devel gcc-c zlib zlib-devel perl-ExtUtils-MakeMaker package下载git $ wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.45.2.tar.gz $ tar -xzvf git-2.45.2.tar.gz安装git $ cd git-2.45.2 ./…

Docker修改国内镜像源

如果docker已将安装好 参考&#xff1a;https://github.com/cmliu/CF-Workers-docker.io sudo mkdir -p /etc/dockercd /etc/dockersudo vim daemon.json #输入以下内容 { "registry-mirrors": ["https://docker.fxxk.dedyn.io"] } #重启docker服务 su…

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

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

猫头虎:什么是内耗?

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