PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装
PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装
- 1、环境
- 2、安装包下载
- 3、安装
- 3.1 、解压
- 3.2、配置
- 3.3、编译安装
- 3.4 、启动与关闭
- 4、安装 uuid-ossp 、plpython2u插件
- 5、参考
1、环境
centos 7 、 postgresql 10.19
2、安装包下载
postgres 源码安装包

3、安装
3.1 、解压
cd /tmp
tar -xzvf postgresql-10.19.tar.gz
3.2、配置
注:配置的时候一定要带上这两个选项,因为后面我要安装 uuid-ossp 、plpython2u插件
–with-python
–with-uuid=ossp \
./configure \
--prefix=/pg \
--exec-prefix=/pg \
--bindir=/pg/bin \
--sysconfdir=/pg/etc \
--libdir=/pg/lib \
--includedir=/pg/include --mandir=/pg/man --docdir=/pg/doc \
--htmldir=/pg/html \
--enable-nls='zh_CN en_US' \
--with-pgport=5432 \
--with-perl \
--with-python \
--with-tcl \
--with-icu \
--with-openssl \
--with-pam \
--with-ldap \
--with-systemd \
--with-readline \
--with-libxml \
--with-libxslt \
--with-segsize=1 \
--with-blocksize=8 \
--with-wal-segsize=16 \
--with-wal-blocksize=8 \
--with-uuid=ossp \
--without-zlib
配置的过程中,会提示缺少包,需要根据提示,手动安装这些包
yum install -y gcc
yum install -y libicu-devel.x86_64
yum install -y perl-ExtUtils-Embed.noarch
yum install -y readline-devel.x86_64
yum -y install openssl-devel
yum -y install pam-devel.x86_64
yum install -y libxml2-devel.x86_64
yum install -y libxslt.x86_64
yum install -y libxslt-devel.x86_64
yum install -y openldap-devel.x86_64
yum install -y systemd-devel.x86_64
yum install -y tcl-devel.x86_64
yum install -y python-devel.x86_64
3.3、编译安装
1、编译
首先进行编译,使用make命令进行编译,如果希望编译所有的东西,包括文档(man、html)和附加模块(contrib),使用
make world
如果最后1行出现下面的描述,说明编译成功
PostgreSQL, contrib, and documentation successfully made. Ready to install.
2、安装
make install
当最后1行出现"PostgreSQL installation complete."时,说明安装成功了。
NOTE:这条命令会把文件安装到2.2指定的路径,需要确保有足够的权限向该区域写入。通常需要使用root权限操作,或者也可以事先创建目录并分配权限给相应的用户
3、创建pg用户
adduser postgres
passwd postgresmkdir -p /pg/data
chown -R postgres:postgres /pg/
4、初始化数据库
su - postgres# 初始化
/pg/bin/initdb -D /pg/data
# 或者
/pg/bin/pg_ctl -D /pg/data initdb
5、设置环境变量
在postgres用户下配置pg数据库的环境变量
[postgres@pg01 ~]$ cat .bash_profile
# .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi# User specific environment and startup programsPATH=$PATH:$HOME/.local/bin:$HOME/bin:/pg/binexport PATHexport PGHOME=/pg
export PGDATA=/pg/data
export LD_LIBRARY_PATH=/pg/lib
export MANPATH=/pg/man
export PATH=/pg/bin:$PATH
[postgres@pg01 ~]$
6、使用source命令生效
[postgres@pg01 ~]$ source .bash_profile
3.4 、启动与关闭
1、在postgresql用户下使用pg_ctl
# 1.启动数据库
/pg/bin/postgres -D /pg/data >logfile 2>&1 &
# 或者可以使用pg_ctl命令
/pg/bin/pg_ctl -D /pg/data -l /tmp/logfile start# 2.关闭数据库
/pg/bin/pg_ctl -D /pg/data -l /tmp/logfile stop# 3.查看数据库状态
/pg/bin/pg_ctl -D /pg/data status
2、使用root配置systemd管理数据库
# 1.使用root用户配置
su - rootvim /etc/systemd/system/postgresql.service[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)[Service]
Type=notify
User=postgres
ExecStart=/pg/bin/postgres -D /pg/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0[Install]
WantedBy=multi-user.target# 2.重新加载systemd配置
[root@pg01 pg]# systemctl daemon-reload# 3.启动、关闭、状态,使用root用户
systemctl start postgresql
systemctl stop postgresql
systemctl status postgresql# 4.配置开机自启动
systemctl enable postgresql
4、安装 uuid-ossp 、plpython2u插件
我们有时候需要像Oracle或MySQL那样可以通过函数sys_guid()或uuid()来获得uuid,如:bdf7eb80-776f-11eb-b4e3-0800277427f4。默认postgresql并没有该功能,但是可以通过扩展uuid-ossp来实现。
1、检查是否已安装扩展uuid-ossp
postgres=# select * from pg_extension;oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
-------+---------+----------+--------------+----------------+------------+-----------+--------------13579 | plpgsql | 10 | 11 | f | 1.0 | |
(1 row)
可以看到postgresql目前没有安装uuid-ossp扩展。
2、检查是否有可用来安装的扩展uuid-ossp
查看当前可用的扩展:
postgres=# select * from pg_available_extensions;name | default_version | installed_version | comment
------------+-----------------+-------------------+-------------------------------------------plpgsql | 1.0 | 1.0 | PL/pgSQL procedural languageplperl | 1.0 | | PL/Perl procedural languageplperlu | 1.0 | | PL/PerlU untrusted procedural languageplpython2u | 1.0 | | PL/Python2U untrusted procedural languageplpythonu | 1.0 | | PL/PythonU untrusted procedural language
(5 rows)
可以看到postgres目前并没有可用的uuid-ossp扩展。
此时,直接创建uuid-ossp会报错,如:
postgres=# create extension "uuid-ossp";
ERROR: could not open extension control file "/opt/pgsql12.2/share/extension/uuid-ossp.control": No such file or directory
3、PG源码文件下编译安装扩展
3.1 安装uuid依赖包
[root@Location-01 ~]# yum -y install e2fsprogs-devel uuid uuid-devel libuuid-devel
3.2 编译安装uuid-ossp
进入扩展目录:(注意只有源码安装且要带上 --with-uuid=ossp 选项才有这个目录)
[root@VM_0_11_centos uuid-ossp]# pwd
/tmp/postgresql-10.19/contrib/uuid-ossp
[root@VM_0_11_centos uuid-ossp]# ls
expected sql uuid-ossp--1.1.sql uuid-ossp.control uuid-ossp.so
Makefile uuid-ossp--1.0--1.1.sql uuid-ossp.c uuid-ossp.o uuid-ossp--unpackaged--1.0.sql
3.3 执行编译安装
[root@Location-01 uuid-ossp]# make && make install
3.4 创建扩展
3.4.1 查看可用扩展
postgres=# select * from pg_available_extensions;name | default_version | installed_version | comment
------------+-----------------+-------------------+-------------------------------------------------plpgsql | 1.0 | 1.0 | PL/pgSQL procedural languageplperl | 1.0 | | PL/Perl procedural languageplperlu | 1.0 | | PL/PerlU untrusted procedural languageplpython2u | 1.0 | | PL/Python2U untrusted procedural languageplpythonu | 1.0 | | PL/PythonU untrusted procedural languageuuid-ossp | 1.1 | | generate universally unique identifiers (UUIDs)
(6 rows)
可以看到已经有扩展uuid-ossp了。下面可以创建了。
postgres=# create extension "uuid-ossp";
CREATE EXTENSION
创建成功。
3.5 、使用扩展
安装扩展成功以后,就可以使用函数uuid_generate_v4()来生产uuid了。
postgres=# select uuid_generate_v4();uuid_generate_v4
--------------------------------------cba03532-aa87-40be-b4e2-cf2e13b71c6e
(1 row)
4、安装plpython2u插件
注意:在安装postgres库的时候一定要带上 --with-python这个选项,
postgres=# CREATE EXTENSION "plpython2u";
CREATE EXTENSION
5、参考
1、PostgreSQL10数据库源码安装
2、postgresql12下安装uuid-ossp
相关文章:
PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装
PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装 1、环境2、安装包下载3、安装3.1 、解压3.2、配置3.3、编译安装3.4 、启动与关闭 4、安装 uuid-ossp 、plpython2u插件5、参考 1、环境 centos 7 、 postgresql 10.19 2、安装包下载 postgres 源码安装包 3、安…...
如何成为ChatGPT 优质Prompt创作者
如何提问? 我想让你成为我的Prompt创作者。你的目标是帮助我创作最佳的Prompt,这个Prompt将由你ChatGPT使用。你将遵循 以下过程:1.首先,你会问我Prompt是关于什么?我会告诉你,但我们需要 通过不断的重复来…...
LeetCode第71题 - 简化路径
题目 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表…...
VSCode上远程调试代码出现的问题
记录一下: 真的是汗流浃背了,师妹叫帮忙如何在VSCode上远程调试代码,一些自己已经经历过的问题,现在已经忘记了。又在网上一顿搜索,这次记录下吧。。。 出现以下问题: 1. 终端界面总是sh-4.4 $ ÿ…...
【langchain】入门初探实战笔记(Chain, Retrieve, Memory, Agent)
1. 简介 1.1 大语言模型技术栈 大语言模型技术栈由四个主要部分组成: 数据预处理流程(data preprocessing pipeline)嵌入端点(embeddings endpoint )向量存储(vector store)LLM 终端ÿ…...
《数据结构、算法与应用C++语言描述》- 平衡搜索树 -全网唯一完整详细实现插入和删除操作的模板类
平衡搜索树 完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_34Balanced search tree 概述 本章会讲AVL、红-黑树、分裂树、B-树。 平衡搜索树的应用? AVL 和红-黑树和分裂树适合内部存储的应用。 B-树适合外部存储的…...
网络路由跟踪工具
随着企业网络需求的增长,组织发现监控和管理其网络基础设施变得越来越困难。网络管理员正在转向其他工具和资源,这些工具和资源可以使他们的工作更轻松一些,尤其是在故障排除方面。 目前,网络管理员主要使用简单、免费提供的实用…...
设计模式 七大原则
1.单一职责原则 单一职责原则(SRP:Single responsibility principle)又称单一功能原则 核心:解耦和增强内聚性(高内聚,低耦合)。 描述: 类被修改的几率很大,因此应该专注…...
(1)(1.13) SiK无线电高级配置(一)
文章目录 前言 1 监控链接质量 2 诊断范围问题 3 MAVLink协议说明 前言 本文提供 SiK 遥测无线电(SiK Telemetry Radio)的高级配置信息。它面向"高级用户"和希望更好地了解无线电如何运行的用户。 !Tip 大多数用户只需要 SiK Radio v2 中提供的基本…...
drf知识--10
接口文档 # 后端把接口写好后: 登录接口:/api/v1/login ---> post---name pwd 注册接口 查询所有图书带过滤接口 # 前后端需要做对接,对接第一个东西就是这个接口文档,前端照着接口文档开发 公司3个人ÿ…...
探索 Vue 实例方法的魅力:提升 Vue 开发技能(下)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
mysql死锁排查
查看正在进行中的事务 SELECT * FROM information_schema.INNODB_TRX;字段解释trx_id唯一事务id号,只读事务和非锁事务是不会创建id的trx_state事务的执行状态,值一般分为:RUNNING, LOCK WAIT, ROLLING BACK, and COMMITTING.trx_started事务…...
若依项目(ruoy-vue)多模块依赖情况简要分析
主pom文件关键点分析 properties标签声明变量信息:版本号、编码类型、java版本spring-boot依赖形式:spring-boot-dependencies、pom、importdependencies中添加本项目内部模块,同时在modules中声明模块packaging打包选择pom设置打包maven-co…...
【普中开发板】基于51单片机的篮球计分器液晶LCD1602显示( proteus仿真+程序+设计报告+讲解视频)
基于普中开发板51单片机的篮球计分器液晶LCD1602显示 1.主要功能:讲解视频:2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接(可点击): 基于51单片机的篮球计分器液晶LCD1602显示 ( pr…...
按照层次遍历结果打印完全二叉树
按照层次遍历结果打印完全二叉树 按照推论结果: l 层首个节点位置 2h-l - 1l 层节点间距:2h-l1 - 1 编码实现 public static<E> void print(BinaryTree<E> tree) {List<List<Node<E>>> levelNodeList levelOrderTraver…...
基于SpringBoot的药店管理系统
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的药店管理系统,java项目…...
Java 泛型深入解析
Java 中的泛型是一种强大的编程特性,允许我们编写更加通用和类型安全的代码。本篇博客将深入探讨 Java 泛型的各个方面,包括泛型类、泛型方法、泛型接口以及泛型通配符。 1. 泛型类 首先,让我们看一个简单的泛型类的例子。在下面的代码中&a…...
Apache Doris (六十): Doris - 物化视图
🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录...
【javaweb】tomcat9.0中的HttpServlet
2023年12月28日,周四晚上 目录 什么是HttpServlet tomcat中的HttpServlet由谁产生 什么是HttpServlet 在Tomcat中,HttpServlet 是 Java Servlet API 中的一个抽象类,用于简化基于HTTP协议的Servlet的开发。HttpServlet 扩展了 GenericServ…...
数据结构学习笔记——查找算法中的树形查找(B树、B+树)
目录 前言一、B树(一)B树的概念(二)B树的性质(三)B树的高度(四)B树的查找(五)B树的插入(六)B树的删除 二、B树(一…...
NumPy 2.4.4 发布,修复关键错误
NumPy 2.4.4 版本正式发布,作为补丁版本,它修复了 2.4.3 版本的错误,解决了 ARM 平台 OpenBLAS 线程问题,还支持 Python 3.11 - 3.14 版本。 版本修复亮点 NumPy 2.4.4 主要解决了 ARM 平台上的 OpenBLAS 线程问题,即 …...
请解释 Linux 操作系统中的进程与线程的区别,并举例说明它们各自的应用场景。
在 Linux 操作系统中,**进程(Process)和线程(Thread)**是程序执行的基本单位,但它们在资源管理、隔离性、通信方式和性能开销上有显著区别。一、核心概念对比特性进程 (Process)线程 (Thread)定义操作系统进…...
Qt——窗口部件及窗口类型、坐标系统
1.QWidget类继承QObject和QPaintDevice类,是所有用户界面组件的父类QObject是所有支持Qt对象模型的基类QPaintDevice是Qt中所有可绘制组件的基类QWidget的功能:QWidget能够绘制自己和处理用户的输入QWidget是Qt中所有窗口组件类的父类QWidget是所有窗口组…...
2025年SQL2API平台深度评测:QuickAPI、dbapi与Magic API的实战应用指南
1. 2025年SQL2API平台的核心价值与应用场景 在数据爆炸的时代,企业每天产生的数据量呈指数级增长。我曾参与过一个零售企业的数据中台项目,他们的商品数据分散在5个不同系统的数据库中,光是整理基础数据接口就耗费了团队两周时间。直到我们引…...
洛谷-入门5-字符串3
P1553 数字反转(升级版)题目背景以下为原题面,仅供参考:给定一个数,请将该数各个位上数字反转得到一个新数。这次与 NOIp2011 普及组第一题不同的是:这个数可以是小数,分数,百分数,整…...
别再只盯着虚短虚断!运放设计必须掌握的6个非理想参数(附MCP6N16实测数据)
运算放大器非理想特性实战指南:从理论到MCP6N16实测 在嵌入式系统设计中,运算放大器如同精密仪器中的齿轮,其微小偏差可能导致整个测量系统的崩溃。许多工程师在初期学习阶段被"虚短虚断"的理想模型所束缚,直到实际项目…...
LC_numStream:嵌入式轻量级数字流解析库
1. LC_numStream 库概述:面向嵌入式通信的轻量级数字流解析工具LC_numStream 是一个专为资源受限嵌入式系统设计的纯 C 语言文本数字流解析库。其核心定位并非通用字符串处理,而是解决嵌入式设备在串口、UART、I2C、SPI 或自定义协议通信中高频出现的一类…...
从零开始理解反步控制:用李雅普诺夫函数一步步‘后退’设计控制器(附Simulink仿真模型)
非线性控制实战:用反步法构建稳定系统的可视化指南 在控制理论中,非线性系统总是以其复杂的动态特性让工程师们又爱又恨。传统的线性控制方法往往难以应对这种复杂性,而反步控制(Backstepping Control)作为一种系统化的…...
从ThreadLocal到TransmittableThreadLocal:手把手解决线程池上下文传递难题
从ThreadLocal到TransmittableThreadLocal:线程池上下文传递的终极解决方案 在分布式系统和微服务架构盛行的今天,异步编程已成为Java开发者日常工作中不可或缺的一部分。无论是处理高并发请求、优化系统性能,还是实现复杂的业务流程…...
鼎捷T100——快速构建简易报表:azzi310与azzi910的高效协作
1. 从零开始:理解鼎捷T100报表开发的核心模块 第一次接触鼎捷T100系统时,我被各种功能模块搞得晕头转向。直到真正用azzi310和azzi910协作完成报表开发,才发现这套组合拳的妙处。简单来说,azzi310就像你的SQL编辑器报表设计器&…...
