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.pswp.cn/pingmian/91364.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91364.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91364.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【科普】在STM32中有哪些定時器?

在 STM32 單片機中,定時器種類豐富,不同系列(如 F1、F4、H7 等)略有差異,以下是常見的定時器類型及核心特點:1. 基本定時器(TIM6、TIM7)功能:僅具備定時計數功能&#xf…

git使用秘訣(詳解0到1)

前言: 不知道大家有沒有使用git提交代碼或者拉取代碼的經歷,自從上一家公司實習結束以后,對git的使用歷歷在目,從一開始的add、commit到后來的pull都有著許多的疑惑。 自從有一次merge代碼以后,被師兄批了一頓以后(不小…

RHEL 9.5 離線安裝 Ansible 完整教程

文章目錄RHEL 9.5 離線安裝 Ansible 完整教程環境準備系統要求準備工作清單方法一:使用 RPM 包離線安裝步驟 1:在聯網機器上下載必要的 RPM 包步驟 2:創建本地倉庫元數據步驟 3:在離線服務器上安裝方法二:使用 Python …

44、鴻蒙HarmonyOS Next開發:視頻播放 (Video)組件和進度條 (Progress)組件的使用

目錄 視頻播放 (Video) 創建視頻組件 加載視頻資源 加載本地視頻 加載沙箱路徑視頻 加載網絡視頻 添加屬性 事件調用 Video控制器使用 其他說明 示例代碼 進度條 (Progress) 創建進度條 設置進度條樣式 場景示例 視頻播放 (Video) Video組件用于播放視頻文件并…

6、微服務架構常用十種設計模式

目錄 1、微服務架構 2、微服務架構的優點 3、微服務架構的缺點 4、何時使用微服務架構 5、微服務架構常用十種設計模式 ① 獨享數據庫(Database per Microservice) ② 事件源(Event Sourcing) ③ 命令和查詢職責分離&…

Docker 初學者需要了解的幾個知識點 (六):docker-compose.yml (ThinkPHP)

下面這個文 docker-compose.yml 文件定義了一個包含 PHP、Nginx、MySQL、Redis 的完整 ThinkPHP 開發環境,各配置項的含義如下:version: 3.8services:# PHP-FPM 服務php-fpm:image: php:8.1-fpmvolumes:- ./tp-demo:/var/www/html- ./php.ini:/usr/local…

TiDB 詳解

TiDB 詳解:架構、特性與應用實踐 TiDB 是 PingCAP 公司開發的開源分布式 NewSQL 數據庫,采用 “計算-存儲分離” 架構設計,兼具傳統關系型數據庫的 ACID 事務特性和 NoSQL 系統的水平擴展能力。以下是 TiDB 的全面技術解析。一、核心架構設計…

推客小程序商業模型設計:合規分傭體系×盈利模式×LTV提升策略

一、推客小程序的市場背景與商業價值在當今移動互聯網紅利逐漸消退的背景下,社交電商正成為流量增長的新突破口。推客小程序作為一種基于社交關系的分銷工具,完美融合了社交傳播與電商變現的雙重優勢,為企業和個人創業者提供了全新的商業機會…

Matlab處理多個循環的判斷的方式:

1、使用正則表達式:pattern strcat(\b, strjoin(tuple, \b|\b), \b);% 4. 逐行處理文件內容 modifiedContents {}; % 存儲修改后的內容 for i 1:length(fileContents)line fileContents{i};% 使用正則表達式檢查當前行是否包含元組中的任何元素if ~isempty(reg…

從字符串中“薅出”最長子串:LeetCode 340 Swift 解法全解析

文章目錄摘要描述題解答案題解代碼分析詳細解析:示例測試及結果結果解釋:時間復雜度總結摘要 在日常開發中,我們經常需要處理字符串,比如分析用戶輸入、文本挖掘、數據清洗等等。而這道題就特別實用:如何找到一個字符…

時序數據庫廠商 TDengine 發布 AI 原生的工業數據管理平臺 IDMP,“無問智推”改變數據消費范式

在工業企業越來越依賴數據驅動決策的今天,數據的獲取不再是難題,難的是從紛繁復雜的數據中提煉出有用的信息。而 AI 的崛起,正在重塑整個數據分析的邏輯。 7 月 29 日晚,TDengine 發布了一款全新產品 —— TDengine IDMP&#xf…

HBase、MongoDB 和 Redis 的區別詳解

這三者都是流行的 NoSQL 數據庫,但設計目標、數據模型和適用場景有顯著差異。以下是它們的核心對比: 1. 數據模型對比特性HBaseMongoDBRedis數據模型寬列存儲(類似 BigTable)文檔存儲(BSON/JSON)鍵值存儲&a…

設計模式之單例模式及其在多線程下的使用

很多時候,我們在使用類創建類的實例并不想可以創建很多實例對象,比如在數據庫連接的時候,對于一個數據庫的連接通常只需要連接池中的某個連接的實例,連接一次即可,對于session會話,用戶在訪問網頁做會話保持…

Apache Ignite 2.8 引入的新指標系統(New Metrics System)的完整說明

這段文檔是關于 Apache Ignite 2.8 引入的“新指標系統(New Metrics System)” 的完整說明。這是 Ignite 監控體系的一次重大升級,相比舊的、分散的統計方式,新系統更統一、靈活、可擴展。 我們來逐層拆解、通俗易懂地理解這個新…

【氮化鎵】GaN同質外延p-i-n二極管中星形與三角形擴展表面缺陷的電子特性

2025年7月23日,美國國家標準與技術研究院(NIST)與美國海軍研究實驗室的Andrew J. Winchester等人在《Applied Physics Letters》期刊發表了題為《Electronic properties of extended surface defects in homoepitaxial GaN diodes》的文章,基于光電發射電子顯微術、導電原子…

使用 Scrapy 框架定制爬蟲中間件接入淘寶 API 采集商品數據

一、引言 在電商數據分析、市場調研等領域,獲取淘寶平臺上的商品數據是一項常見需求。淘寶提供了 API 接口,允許開發者通過授權的方式獲取商品信息。本文將介紹如何使用 Scrapy 框架定制爬蟲中間件,實現對淘寶 API 的接入,從而高…

Jmeter全局變量跨線程組的使用

一、線程組1中從數據庫中查詢到字段值二、BeanShell取樣器中設置為全局變量#為什么說props.put("Out1",Out);其實是設置Out1為Jmeter的屬性了呢? 因為在后面的調試取樣器運行結果中,會發現如果只打開顯示變量開關,是看不到Out1運行…

前端技術棧詳解

前端技術棧是指構建現代Web應用程序所需的一系列技術和工具的集合。以下是當前主流前端技術棧的詳細解析&#xff1a; 一、核心基礎技術 1. HTML5 作用&#xff1a;網頁內容的結構化標記關鍵特性&#xff1a; 語義化標簽&#xff08;<header>, <section>, <arti…

Git Pull 時遇到 Apply 和 Abort 選項?詳解它們的含義與應對策略

在使用 Git 進行團隊協作時&#xff0c;git pull 是最常用的命令之一&#xff0c;用于拉取遠程倉庫的最新代碼并合并到本地分支。但有時執行 git pull 后&#xff0c;Git 會提示 ?Apply&#xff08;應用&#xff09;?? 和 ?Abort&#xff08;中止&#xff09;?? 兩個選項…

暑期算法訓練.11

目錄 47. 力扣203 移除鏈表元素 47.1 題目解析&#xff1a; ?編輯 47.2 算法思路&#xff1a; 47.3 代碼演示&#xff1a; ?編輯 48. 力扣2.兩數相加 48.1 題目解析&#xff1a; ?編輯 48.2 算法思路; 48.3 代碼演示&#xff1a; 48.4 總結反思&#xff1a; …