Ubuntu 下编译安装 PostgreSQL

前言

最近有同学问到在 Ubuntu 下如何编译安装 PostgreSQL。这次内容就来说一下如何在 Ubuntu 操作系统中安装 PostgreSQL 数据库。那么,安装 PostgreSQL 对于 DBA 来说是再简单不过的事儿了,我们知道 PostgreSQL 在 Redhat 家族系统中有三种安装方式,分别是源码安装,rpm 方式安装和yum 方式安装,当然,rpm 安装和 yum 安装可以当做是同类型的安装,除此之外,就是使用已经编译好的二进制安装。那么对于Ubuntu操作系统来说,除了一键化使用 apt-get install 来安装和 redhat 家族安装不同以外,源码安装和二进制安装都一样。但如果使用源码安装,需要解决一些依赖。本文就是在最新版本的 Ubuntu 服务器操作系统上安装 PostgreSQL。

NOTE:当前 Ubuntu 操作系统上已经集成了最新的 PostgreSQL 安装包,版本为 12.9 版本

一 、 使用 apt-get 安装

apt-get 命令为 Ubuntu 系统管理软件的命令,利用该命令可以管理,移除,清空,检查等在 Ubuntu 上安装的软件。

1. 操作系统版本
操作系统为 Ubuntu 20.04.3 服务器操作系统


root@developer:~# lsb_release -a
No LSB modules are available.
Distributor ID:Ubuntu
Description:Ubuntu 20.04.3 LTS
Release:20.04
Codename:focal

2. 查看 Ubuntu 上可用的 PostgreSQL 包

通过 apt list 可以列出 PostgreSQL 相关的软件包


root@developer:~# apt list | grep -w  postgresql-12 | tail -1

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

postgresql-12/focal-updates,focal-security 12.9-0ubuntu0.20.04.1 amd64

3. 执行安装

postgresql-12/focal-updates,focal-security 12.9-0ubuntu0.20.04.1 amd64
		root@developer:~# apt-get install postgresql-12 -y 
		Reading package lists... Done
		Building dependency tree       
		Reading state information... Done
		The following packages were automatically installed and are no longer required:
		  libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib
		Use 'apt autoremove' to remove them.
		The following NEW packages will be installed:
		  postgresql-12
		0 upgraded, 1 newly installed, 0 to remove and 10 not upgraded.
		Need to get 0 B/13.5 MB of archives.
		After this operation, 41.1 MB of additional disk space will be used.
		Preconfiguring packages ...
		Selecting previously unselected package postgresql-12.
		(Reading database ... 158185 files and directories currently installed.)
		Preparing to unpack .../postgresql-12_12.9-0ubuntu0.20.04.1_amd64.deb ...
		Unpacking postgresql-12 (12.9-0ubuntu0.20.04.1) ...
		Setting up postgresql-12 (12.9-0ubuntu0.20.04.1) ...
		Creating new PostgreSQL cluster 12/main ...
		/usr/lib/postgresql/12/bin/initdb -D /var/lib/postgresql/12/main --auth-local peer --auth-host md5
		The files belonging to this database system will be owned by user "postgres".
		This user must also own the server process.

		The database cluster will be initialized with locale "en_US.UTF-8".
		The default database encoding has accordingly been set to "UTF8".
		The default text search configuration will be set to "english".

		Data page checksums are disabled.

		fixing permissions on existing directory /var/lib/postgresql/12/main ... ok
		creating subdirectories ... ok
		selecting dynamic shared memory implementation ... posix
		selecting default max_connections ... 100
		selecting default shared_buffers ... 128
### Ubuntu编译安装 PostgreSQL 并进行调试 #### 准备工作 为了成功编译安装 PostgreSQL,需确保系统已更新至最新状态,并安装必要的构建工具和依赖项。对于基于 Debian 的发行版如 Ubuntu,可以使用如下命令来获取所需软件包: ```bash sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install build-essential libreadline-dev zlib1g-dev flex bison openssl libssl-dev ``` #### 下载源码 从官方提供的链接下载目标版本的 PostgreSQL 源代码压缩包[^2]。 ```bash wget https://ftp.postgresql.org/pub/source/v14.1/postgresql-14.1.tar.gz tar xfz postgresql-14.1.tar.gz cd postgresql-14.1/ ``` #### 构建与安装 创建一个独立于源文件夹之外的工作空间用于编译过程中的临时文件存储;接着通过 `../configure` 命令配置编译选项,再利用 Make 工具完成实际编译流程。最后一步则是将生成的应用程序及其资源部署到自定义路径下以便后续管理维护。 ```bash mkdir build && cd build ../configure --prefix=/usr/local/pgsql14.1 make world sudo make install-world DESTDIR=/home/user/path/to/installation/directory ``` 注意这里 `/usr/local/pgsql14.1` 是建议的目标位置而 `/home/user/path/to/installation/directory` 则代表最终安装目录,请根据实际情况调整这些参数设置。 #### 初始化数据库集群和服务启动 首次运行之前要初始化一个新的数据集实例,这可以通过执行 initdb 来实现。之后就可以正常开启服务端口监听等待客户端连接请求了。 ```bash /usr/local/pgsql14.1/bin/initdb -D /path/to/data_directory /usr/local/pgsql14.1/bin/pg_ctl -D /path/to/data_directory start ``` #### Eclipse 中配置 PostgreSQL 调试环境 按照《PostgreSQL 数据库内核分析》书籍指导以及 Postgres 官方 Wiki 页面上的说明,在 Eclipse IDE 内建立相应的开发项目结构,加载 PGSQL 源代码作为本地模块加入工程之中。确保所有必需插件均已正确装载完毕后,便可在图形界面里方便快捷地开展断点跟踪、变量查看等一系列高级功能操作[^1]。 ```python import os os.environ['PATH'] += ':/usr/local/pgsql14.1/bin' ``` 以上 Python 语句展示了怎样向系统的 PATH 环境变量追加 PostgreSQL 执行文件所在的位置,从而使得可以在任何地方调用 psql 或其他相关命令行工具而不必每次都指明全限定名。 #### 升级注意事项 当计划迁移到更高版本比如 PostgreSQL 16.3 版本时,只需要重新经历一遍上述提到过的编译环节,随后停止旧的服务进程并将符号链接切换成指向新的二进制集合即可迅速达成目的[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值