当前位置: 首页 > news >正文

PostgreSQL 14.4 ARM64 架构源码编译安装指南

PostgreSQL 14.4 ARM64 架构源码编译安装指南


文章目录

    • PostgreSQL 14.4 ARM64 架构源码编译安装指南
    • 说明
    • 环境要求
      • 操作系统
    • 1. 系统环境准备
      • 1.1 更新系统包
      • 1.2 创建 PostgreSQL 用户
    • 2. 解压 PostgreSQL 14.4 源码包
    • 3. 配置编译选项
    • 4. 编译源代码
    • 5. 安装 PostgreSQL
    • 6. 初始化数据库
      • 6.1 创建数据目录
      • 6.2 初始化数据库集群
    • 7. 配置 PostgreSQL
      • 7.1 配置 postgresql.conf
      • 7.2 配置 pg_hba.conf
    • 8. 启动 PostgreSQL 服务
      • 8.1 配置 systemd 服务
      • 8.2 启动服务
    • 9. 配置环境变量
      • 9.1 设置 PATH 环境变量
      • 9.2 应用环境变量
    • 10. 验证安装
      • 10.1 检查 PostgreSQL 版本
      • 10.2 连接到数据库
      • 10.3 创建测试数据库
    • 11. 常见问题解决
      • 11.1 编译错误
      • 11.2 用户切换警告
      • 11.3 权限问题
      • 11.4 启动失败
      • 11.5 连接被拒绝

说明

  • PostgreSQL 版本: 14.4
  • 架构要求: ARM64 (aarch64)
  • 安装方式: 源码编译安装
  • 适用场景: 在 ARM64 架构服务器上安装 PostgreSQL 数据库

根据项目信息,PostgreSQL 官方通常不提供 ARM64 架构的预编译二进制包,因此需要通过源码编译方式进行安装。

环境要求

操作系统

  • Ubuntu 20.04/22.04 LTS (ARM64)
  • Debian 11 (ARM64)
  • 或其他支持 ARM64 的 Linux 发行版

1. 系统环境准备

1.1 更新系统包

# 更新软件包列表
sudo apt update# 升级已安装的软件包
sudo apt upgrade -y# 安装编译工具和依赖
sudo apt install -y build-essential libreadline-dev zlib1g-dev flex bison systemd

1.2 创建 PostgreSQL 用户

# 创建 postgres 用户和组,并创建家目录
sudo groupadd postgres
sudo useradd -g postgres -m -s /bin/bash postgres# 设置用户密码(可选)
# sudo passwd postgres

参数说明:

  • -g postgres:指定用户的主要组为 postgres 组
  • -m:创建用户的家目录(通常是 [/home/postgres](file:///home/postgres))
  • -s /bin/bash:设置用户的默认 shell 为 bash

2. 解压 PostgreSQL 14.4 源码包

# 切换到您的文件目录
cd /files# 查看文件
ls -la# 解压 PostgreSQL 14.4 源码包
sudo tar -zxvf postgresql-14.4.tar.gz# 查看解压后的目录结构
ls -la postgresql-14.4/

3. 配置编译选项

# 进入源码目录
cd /files/postgresql-14.4# 配置编译选项,指定安装目录为 /files/db_tool
./configure --prefix=/files/db_tool# 查看配置结果
echo $?

常用配置选项:

  • --prefix=PREFIX:安装目录
  • --with-openssl:支持 OpenSSL
  • --with-python:支持 Python 存储过程
  • --with-perl:支持 Perl 存储过程
  • --with-pam:支持 PAM 认证

4. 编译源代码

# 在源码目录中执行编译
make# 查看编译结果(0 表示成功)
echo $?# 如果编译成功,会看到类似以下输出:
# "All of PostgreSQL successfully made. Ready to install."

编译过程可能需要较长时间,具体取决于硬件性能。

5. 安装 PostgreSQL

# 安装编译好的程序到指定目录
make install# 查看安装结果
echo $?# 查看安装后的目录结构
ls -la /files/db_tool/

安装完成后,目录结构应该如下:

/files/db_tool/
├── bin/           # 可执行文件
├── include/       # 头文件
├── lib/           # 库文件
├── share/         # 共享文件
└── ...

6. 初始化数据库

6.1 创建数据目录

# 创建数据目录
sudo mkdir -p /files/db_tool/data
sudo chown -R postgres:postgres /files/db_tool

6.2 初始化数据库集群

# 切换到 postgres 用户
sudo su - postgres# 初始化数据库(数据目录在 /files/db_tool/data)
/files/db_tool/bin/initdb -D /files/db_tool/data

7. 配置 PostgreSQL

7.1 配置 postgresql.conf

# 编辑主配置文件
vim /files/db_tool/data/postgresql.conf# 修改关键配置项
# listen_addresses = '*'          # 监听所有地址
# port = 15432                     # 端口号
# max_connections = 100           # 最大连接数
# shared_buffers = 128MB          # 共享缓冲区大小
# unix_socket_directories = '/tmp,/files/db_tool'  # Unix套接字目录

7.2 配置 pg_hba.conf

# 编辑客户端认证配置文件
vim /files/db_tool/data/pg_hba.conf# 添加必要的访问控制规则,例如:
# 本地连接信任
local   all             all                                     trust
# 本地主机连接信任
host    all             all             127.0.0.1/32            trust
host    all             all             ::1/128                 trust
# 允许特定IP地址通过密码连接到所有数据库
host    all             all             10.0.10.0/24             md5

8. 启动 PostgreSQL 服务

8.1 配置 systemd 服务

# 创建 systemd 服务文件
sudo vim /etc/systemd/system/postgresql.service

添加以下内容到服务文件:

[Unit]
Description=PostgreSQL database server
After=network.target[Service]
Type=forking
User=postgres
Group=postgresEnvironment=PGDATA=/files/db_tool/data
Environment=PGLOG=/files/db_tool/data/logfileExecStart=/files/db_tool/bin/pg_ctl start -D ${PGDATA} -l ${PGLOG}
ExecStop=/files/db_tool/bin/pg_ctl stop -D ${PGDATA}
ExecReload=/files/db_tool/bin/pg_ctl reload -D ${PGDATA}KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0[Install]
WantedBy=multi-user.target

8.2 启动服务

# 重新加载 systemd 配置
sudo systemctl daemon-reload# 启用 PostgreSQL 服务开机自启
sudo systemctl enable postgresql# 启动 PostgreSQL 服务
sudo systemctl start postgresql# 检查服务状态
sudo systemctl status postgresql

9. 配置环境变量

9.1 设置 PATH 环境变量

# 编辑 postgres 用户的 .bashrc 文件
sudo vim /home/postgres/.bashrc# 添加以下行(如果没修改port则不需要export PGPORT)
export PATH=/files/db_tool/bin:$PATH
export PGDATA=/files/db_tool/data
export PGPORT=15432

9.2 应用环境变量

# 切换到 postgres 用户并重新加载环境变量
sudo su - postgres
source ~/.bashrc

10. 验证安装

10.1 检查 PostgreSQL 版本

# 检查 PostgreSQL 版本
/files/db_tool/bin/psql --version

10.2 连接到数据库

# 使用 psql 连接到数据库
psql -U postgres -d postgres# 在 psql 提示符中执行简单查询
# postgres=# SELECT version();
# postgres=# \q  -- 退出

10.3 创建测试数据库

# 创建测试数据库
/files/db_tool/bin/createdb testdb# 连接到测试数据库
/files/db_tool/bin/psql -U postgres -d testdb# 在测试数据库中创建表
# testdb=# CREATE TABLE test (id SERIAL PRIMARY KEY, name VARCHAR(100));
# testdb=# INSERT INTO test (name) VALUES ('Test Entry');
# testdb=# SELECT * FROM test;
# testdb=# \q  -- 退出

11. 常见问题解决

11.1 编译错误

如果在 [./configure](file:///usr/bin/configure) 或 [make](file:///usr/bin/make) 阶段遇到错误,请检查:

  1. 是否安装了所有必需的依赖包
  2. 系统架构是否支持
  3. 磁盘空间是否充足
# 重新安装依赖包
sudo apt update
sudo apt install -y build-essential libreadline-dev zlib1g-dev flex bison

11.2 用户切换警告

如果在执行 su - postgres 时出现以下警告:

su: 警告:无法更改到 /home/postgres 目录: 没有那个文件或目录

这表示 postgres 用户没有home目录。可以通过以下方式解决:

方法一:创建home目录(推荐在创建用户时使用 -m 参数)

# 为已存在的用户创建home目录
sudo mkhomedir_helper postgres

方法二:在创建用户时指定创建home目录

# 删除已存在的用户(如果需要重新创建)
sudo userdel postgres# 重新创建用户并创建home目录
sudo groupadd postgres
sudo useradd -g postgres -m -s /bin/bash postgres

方法三:临时切换用户(不切换到home目录)

# 使用 -s 参数指定 shell,避免切换到home目录
sudo su - postgres -s /bin/bash

11.3 权限问题

如果遇到权限问题,请确保以下几点:

  1. PostgreSQL 安装目录由 postgres 用户拥有
  2. PostgreSQL 二进制文件具有执行权限
  3. 配置文件具有正确的读写权限
# 修复权限问题
sudo chown -R postgres:postgres /files/db_tool
sudo chmod +x /files/db_tool/bin/*

11.4 启动失败

如果 PostgreSQL 启动失败,请检查日志文件:

# 查看日志文件
cat /files/db_tool/data/logfile

常见启动问题:

  1. 端口被占用:检查 15432 端口是否被其他进程占用
  2. 数据目录权限:确保数据目录由 postgres 用户拥有
  3. 配置错误:检查 postgresql.conf 和 pg_hba.conf 配置

11.5 连接被拒绝

如果连接数据库被拒绝,请检查:

  1. listen_addresses 设置是否正确
  2. pg_hba.conf 中的认证规则
  3. 防火墙设置是否允许 15432 端口
# 检查 PostgreSQL 是否在监听
netstat -tlnp | grep 15432# 如果使用 ufw 防火墙,允许 PostgreSQL 端口
sudo ufw allow 15432/tcp
http://www.dtcms.com/a/301906.html

相关文章:

  • 【运维】HuggingFace缓存目录结构详解
  • MySQL SQL性能优化与慢查询分析实战指南:新手DBA成长之路
  • 【第四章:大模型(LLM)】01.神经网络中的 NLP-(2)Seq2Seq 原理及代码解析
  • 数据结构 | 队列:从概念到实战
  • nvim cspell
  • Nginx HTTP 反向代理负载均衡实验
  • NAT地址转换,静态NAT,高级NAT,NAPT,easy IP
  • 【Linux指南】Linux粘滞位详解:解决共享目录文件删除安全隐患
  • GaussDB 开发基本规范
  • XML Expat Parser:深入解析与高效应用
  • Python 列表内存存储本质:存储差异原因与优化建议
  • 第4章唯一ID生成器——4.2 单调递增的唯一ID
  • 【Android】卡片式布局 滚动容器ScrollView
  • Go语法入门:变量、函数与基础数据类型
  • 飞算科技重磅出品:飞算 JavaAI 重构 Java 开发效率新标杆
  • JAVA后端开发——用 Spring Boot 实现定时任务
  • 【Spring】Spring Boot启动过程源码解析
  • 鸿蒙打包签名
  • HarmonyOS 6 云开发-用户头像上传云存储
  • 前端工程化常见问题总结
  • Windows|CUDA和cuDNN下载和安装,默认安装在C盘和不安装在C盘的两种方法
  • AI技术革命:产业重塑与未来工作范式转型。
  • 深入解析MIPI C-PHY (四)C-PHY物理层对应的上层协议的深度解析
  • 齐护Ebook科技与艺术Steam教育套件 可图形化micropython Arduino编程ESP32纸电路手工
  • 湖南(源点咨询)市场调研 如何在行业研究中快速有效介入 起头篇
  • Triton编译
  • 【n8n教程笔记——工作流Workflow】文本课程(第一阶段)——5.5 计算预订订单数量和总金额 (Calculating booked orders)
  • Rouge:面向摘要自动评估的召回导向型指标——原理、演进与应用全景
  • 分表分库与分区表
  • Android启动时间优化大全