【GaussDB】如何從GaussDB發布包中提取出內核二進制文件
背景
GaussDB 從505和506版本起(前面的版本不清楚),華為官方不再提供用腳本安裝GaussDB的方式(應該是基于運維交付標準化的角度考慮),僅支持使用TPOPS進行安裝。而想正常搭建一整套TPOPS+GaussDB,所需要的硬件配置非常高,普通開發者或者DBA個人很難整出這么一套硬件。就算培訓視頻和文檔再好再多,沒有環境進行測試,也全是紙上談兵罷了。
熟悉openGauss安裝原理的都知道,單機啟動其實很簡單,gs_initdb初始化一個數據目錄,然后改改參數和環境變量,直接gs_ctl start就能啟動。也就是說,如果能從GaussDB官方發布包中,把內核這些二進制提取出來,理論上也可以像openGauss一樣單機啟動。我實測這個方案在技術上的確是可以的,但是GaussDB官方發布包,層層壓縮(《GaussDB文檔中心-GaussDB內核包提取方法》),要解壓8~9次才能解壓出內核二進制,手動解壓動不動就是空間不足或者路徑超長了,操作非常麻煩,因此我就想到要寫一個腳本來自動提取出內核二進制文件。
分析
首先,我手動解壓了一下,這里以kylin系統x86_64平臺為例
[root@ky10-sp3 uncompress_gauss]# ll
total 4940332
-rw-r----- 1 root root 5058894815 Jul 16 13:16 DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872.tar.gz
[root@ky10-sp3 uncompress_gauss]# tar -xf DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872.tar.gz
[root@ky10-sp3 uncompress_gauss]# ll
total 4940332
drwxr-xr-x 3 root root 42 Apr 28 09:49 DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872
-rw-r----- 1 root root 5058894815 Jul 16 13:16 DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872.tar.gz
[root@ky10-sp3 uncompress_gauss]# cd DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872/
[root@ky10-sp3 DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872]# ll
total 4
-rw-r--r-- 1 root root 173 Apr 28 09:49 manifest.yml
drwxr-xr-x 2 root root 88 Apr 28 09:47 packages
[root@ky10-sp3 DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872]# cd packages/
[root@ky10-sp3 packages]# ll
total 4939548
-rw-r--r-- 1 root root 5058085281 Apr 27 18:21 DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all.tar.gz
[root@ky10-sp3 packages]# tar -xf DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all.tar.gz
[root@ky10-sp3 packages]# ll
total 4939560
drwx------ 2 root root 91 Apr 27 18:08 DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all
-rw-r--r-- 1 root root 5058085281 Apr 27 18:21 DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all.tar.gz
[root@ky10-sp3 packages]# cd DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all/
[root@ky10-sp3 DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all]# ll
total 4938752
-rw------- 1 root root 5057276857 Apr 27 18:08 DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_noarch.tar.gz
[root@ky10-sp3 DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all]# tar -xf DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_noarch.tar.gz
[root@ky10-sp3 DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all]# ll
total 4938756
drwx------ 6 root root 78 Apr 27 18:04 DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_noarch
-rw------- 1 root root 5057276857 Apr 27 18:08 DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_noarch.tar.gz
[root@ky10-sp3 DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all]# cd DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_noarch/
[root@ky10-sp3 DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_noarch]# ll
total 4
drwx------ 7 root root 164 Apr 27 18:05 action
drwx------ 2 root root 97 Apr 27 17:59 config
-rw------- 1 root root 1645 Apr 27 18:04 manifest.yml
drwx------ 2 root root 94 Apr 27 18:04 repo
drwx------ 3 root root 64 Apr 27 17:58 vars
[root@ky10-sp3 DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_noarch]# cd repo/
[root@ky10-sp3 repo]# ll
total 4930740
-rw------- 1 root root 5049071195 Apr 27 18:04 DBS-GaussDB-kernel-src-9.0.0.SPC0100.20250427175024.kylin.107678083-1.noarch.rpm
[root@ky10-sp3 repo]# rpm2cpio DBS-GaussDB-kernel-src-9.0.0.SPC0100.20250427175024.kylin.107678083-1.noarch.rpm | cpio -idmv ## 這個命令很關鍵,該命令用于提取rpm中的文件
./opt/cloud/GaussDB-kernel/extra
./opt/cloud/GaussDB-kernel/extra/nouse.txt
./opt/cloud/GaussDB-kernel/extra/package_os_info.json
./opt/cloud/GaussDB-kernel/kernel_after_sql
./opt/cloud/GaussDB-kernel/kernel_after_sql/v1.4.0.sql
./opt/cloud/GaussDB-kernel/kernel_after_sql/v9.0.0.SPC0100.sql
./opt/cloud/GaussDB-kernel/v9.0.0.SPC0100-GaussDBV5-install-kylin-aarch64_d918a268334971aff2d6bd567282d526df9005d9eccb7f949ee48d14a76e04fe.tar.gz
cpio: write error: No space left on device ## 這里空間不足了,只能先刪掉一些文件
[root@ky10-sp3 repo]# rm ../../DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_noarch.tar.gz
rm: remove regular file '../../DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_noarch.tar.gz'? y
[root@ky10-sp3 repo]# rm ../../../DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all.tar.gz
rm: remove regular file '../../../DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all.tar.gz'? y
[root@ky10-sp3 repo]# ll
total 4930752
-rw------- 1 root root 5049071195 Apr 27 18:04 DBS-GaussDB-kernel-src-9.0.0.SPC0100.20250427175024.kylin.107678083-1.noarch.rpm
drwxr-xr-x 3 root root 19 Jul 16 13:21 opt
[root@ky10-sp3 repo]# rm -rf opt ## 先把前面解壓不完整的刪了,重新解壓
[root@ky10-sp3 repo]# rpm2cpio DBS-GaussDB-kernel-src-9.0.0.SPC0100.20250427175024.kylin.107678083-1.noarch.rpm | cpio -idmv ## 這里4個tar包,帶ha的是集中式,不帶ha的是分布式,aarch64和x86_64是cpu平臺
./opt/cloud/GaussDB-kernel/extra
./opt/cloud/GaussDB-kernel/extra/nouse.txt
./opt/cloud/GaussDB-kernel/extra/package_os_info.json
./opt/cloud/GaussDB-kernel/kernel_after_sql
./opt/cloud/GaussDB-kernel/kernel_after_sql/v1.4.0.sql
./opt/cloud/GaussDB-kernel/kernel_after_sql/v9.0.0.SPC0100.sql
./opt/cloud/GaussDB-kernel/v9.0.0.SPC0100-GaussDBV5-install-kylin-aarch64_d918a268334971aff2d6bd567282d526df9005d9eccb7f949ee48d14a76e04fe.tar.gz
./opt/cloud/GaussDB-kernel/v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-aarch64_a7643865bd3ea44f78a8d8c4832d3103c285f7953a57def4119abc4939c13b5e.tar.gz
./opt/cloud/GaussDB-kernel/v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-x86_64_1cc3a7613759e3b6adf885c90adfd2b6ce835b95cb2b898538c14a86a0a914a0.tar.gz
./opt/cloud/GaussDB-kernel/v9.0.0.SPC0100-GaussDBV5-install-kylin-x86_64_b03ea7dd52bbb453a534fc18185f412d6b2a531824c2634858dc6c0eee97baec.tar.gz
9858503 blocks
[root@ky10-sp3 repo]# cd opt/cloud/GaussDB-kernel/
[root@ky10-sp3 GaussDB-kernel]# tar -xf v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-x86_64_1cc3a7613759e3b6adf885c90adfd2b6ce835b95cb2b898538c14a86a0a914a0.tar.gz
[root@ky10-sp3 GaussDB-kernel]# ll
total 4929376
drwxr-xr-x 2 root root 51 Jul 16 13:23 extra
drwxr-xr-x 2 root root 50 Jul 16 13:23 kernel_after_sql
-rw-r--r-- 1 root root 1267010444 Apr 27 17:56 v9.0.0.SPC0100-GaussDBV5-install-kylin-aarch64_d918a268334971aff2d6bd567282d526df9005d9eccb7f949ee48d14a76e04fe.tar.gz
-rw-r--r-- 1 root root 1260320135 Apr 27 17:53 v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-aarch64_a7643865bd3ea44f78a8d8c4832d3103c285f7953a57def4119abc4939c13b5e.tar.gz
drwx------ 2 root root 227 Apr 27 17:53 v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-x86_64
-rw-r--r-- 1 root root 1251971180 Apr 27 17:54 v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-x86_64_1cc3a7613759e3b6adf885c90adfd2b6ce835b95cb2b898538c14a86a0a914a0.tar.gz
-rw-r--r-- 1 root root 1268225145 Apr 27 17:58 v9.0.0.SPC0100-GaussDBV5-install-kylin-x86_64_b03ea7dd52bbb453a534fc18185f412d6b2a531824c2634858dc6c0eee97baec.tar.gz
[root@ky10-sp3 GaussDB-kernel]# cd v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-x86_64/
[root@ky10-sp3 v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-x86_64]# ll
total 1222444
-rw------- 1 root root 31990299 Apr 27 17:53 GaussDB-Kernel_506.0.0.SPC0100.B010_Om_X86_Py3.7_Centralized.tar.gz
-rw------- 1 root root 147639913 Apr 27 17:53 GaussDB-Kernel_506.0.0.SPC0100.B010_Server_X86_Centralized.tar.gz
-rw------- 1 root root 1072143704 Apr 27 17:53 GaussDB-Kernel_506.0.0.SPC0100.B010_Symbol_X86_Centralized.tar.gz
[root@ky10-sp3 v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-x86_64]# tar -xf GaussDB-Kernel_506.0.0.SPC0100.B010_Server_X86_Centralized.tar.gz
[root@ky10-sp3 v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-x86_64]# ll
total 1366812
-rw------- 1 root root 31990299 Apr 27 17:53 GaussDB-Kernel_506.0.0.SPC0100.B010_Om_X86_Py3.7_Centralized.tar.gz
-rw------- 1 root root 147639913 Apr 27 17:53 GaussDB-Kernel_506.0.0.SPC0100.B010_Server_X86_Centralized.tar.gz
-rw------- 1 root root 1072143704 Apr 27 17:53 GaussDB-Kernel_506.0.0.SPC0100.B010_Symbol_X86_Centralized.tar.gz
-rw-r--r-- 1 20001 20001 147830880 Apr 27 14:27 GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit_Server.tar.gz
[root@ky10-sp3 v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-x86_64]# tar -xf GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit_Server.tar.gz
[root@ky10-sp3 v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-x86_64]# ll
total 1479208
drwxr-xr-x 3 root root 16 Apr 27 14:27 components
drwxr-xr-x 4 root root 28 Apr 27 14:27 dependency
-rw------- 1 root root 31990299 Apr 27 17:53 GaussDB-Kernel_506.0.0.SPC0100.B010_Om_X86_Py3.7_Centralized.tar.gz
-rw------- 1 root root 147639913 Apr 27 17:53 GaussDB-Kernel_506.0.0.SPC0100.B010_Server_X86_Centralized.tar.gz
-rw------- 1 root root 1072143704 Apr 27 17:53 GaussDB-Kernel_506.0.0.SPC0100.B010_Symbol_X86_Centralized.tar.gz
-rwx------ 1 root root 111140514 Apr 27 14:27 GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin ## 這個文件就是內核二進制的自解壓文件
-rw-r--r-- 1 20001 20001 147830880 Apr 27 14:27 GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit_Server.tar.gz
-rw-r--r-- 1 root root 65 Apr 27 14:27 GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.sha256
drwxr-xr-x 7 root root 67 Apr 27 14:27 unixodbc
-rw------- 1 root root 65 Apr 27 14:27 upgrade_sql_a.sha256
-rw------- 1 root root 55554 Apr 27 14:27 upgrade_sql_a.tar.gz
-rw------- 1 root root 65 Apr 27 14:27 upgrade_sql_m.sha256
-rw------- 1 root root 631061 Apr 27 14:27 upgrade_sql_m.tar.gz
-rw------- 1 root root 65 Apr 27 14:27 upgrade_sql_others.sha256
-rw------- 1 root root 41744 Apr 27 14:27 upgrade_sql_others.tar.gz
-rw------- 1 root root 65 Apr 27 14:27 upgrade_sql.sha256
-rw------- 1 root root 3188417 Apr 27 14:27 upgrade_sql.tar.gz
-rw-r--r-- 1 root root 47 Apr 27 14:27 version.cfg
最后得到的 GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin 就是內核包,這是一個7z的自解壓文件,直接運行即可解壓內核到當前目錄
[root@ky10-sp3 uncompress_gauss]# mkdir
[root@ky10-sp3 uncompress_gauss]# mv GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin app
[root@ky10-sp3 uncompress_gauss]# cd app
[root@ky10-sp3 app]# ll
total 108536
-rwx------ 1 root root 111140514 Jul 16 15:07 GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin
[root@ky10-sp3 app]# ./GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin7-Zip SFX 17.05 : Copyright (c) 1999-2021 Igor Pavlov : 2017-08-28
p7zip Version 17.05 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs x64)Extracting archive: ./GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin
--
Path = ./GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin
Type = 7zEverything is Ok
[root@ky10-sp3 app]# ll
total 108552
drwx------ 2 root root 4096 Jul 16 23:47 bin
drwxr-xr-x 3 root root 22 Apr 27 14:27 etc
-rwx------ 1 root root 111140514 Jul 16 15:07 GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin
drwxr-xr-x 5 root root 46 Apr 27 14:27 include
drwx------ 5 root root 8192 Jul 16 23:47 lib
drwxr-xr-x 5 root root 50 Apr 27 14:27 share
看到最后這個目錄結構應該很熟悉了,后面就接上了openGauss手動安裝的步驟。
注意,這種手動解壓的方式安裝的GaussDB,不是GaussDB官方提供的方式,因此如果用出了任何問題,GaussDB官方都不會提供支持服務。
開發shell腳本
接下來就是寫shell腳本,不過這年頭有ai了,這種粗活不是分分鐘搞定?
于是我把我上面手動解壓的步驟給到Cursor,并且下達指令
分析這些命令,并生成以下功能腳本
# GaussDB 通用解壓腳本
# 用法: uncompress_gaussdb.sh <tar包路徑> <CPU架構>
# 架構支持: x86_64/x86/arm/arm64/aarch/aarch64 (忽略大小寫,映射到x86_64和aarch64)
# 功能: 提取集中式的*_Om_*.tar.gz *_Server_*.tar.gz *_Symbol*.tar.gz *Kernel*.bin 這4類文件到原始tar包的相同目錄
然后Cursor就一股腦給我生成完了,雖然有些小BUG,但我人工修掉了(最新版本Cursor不能連kylin v10 sp3系統遠程開發了,要不然就讓Cursor自己測試和修復了)。
腳本的執行效果
[root@ky10-sp3 uncompress_gauss]# ./uncompress_gaussdb.sh DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872.tar.gz x86_64
[信息] 原始tar包: /root/uncompress_gauss/DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872.tar.gz
[信息] 工作目錄: /root/uncompress_gauss
[信息] 目標架構: x86_64
[信息] 第1步: 解壓主tar包...
[信息] 進入目錄: ./DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872
[信息] 第2步: 解壓_all.tar.gz文件...
[信息] 解壓文件: ./DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all.tar.gz
[信息] 第3步: 解壓_noarch.tar.gz文件...
[信息] 解壓文件: ./DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_noarch.tar.gz
[信息] 第4步: 解壓RPM文件...
[信息] 解壓RPM文件: ./DBS-GaussDB-kernel-src-9.0.0.SPC0100.20250427175024.kylin.107678083-1.noarch.rpm
[信息] 第5步: 解壓架構相關的安裝包...
[信息] 解壓架構文件: ./v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-x86_64_1cc3a7613759e3b6adf885c90adfd2b6ce835b95cb2b898538c14a86a0a914a0.tar.gz
[信息] 第6步: 解壓Server相關文件...
[信息] 第7步: 查找并復制目標文件...
[信息] 找到_Om_文件: GaussDB-Kernel_506.0.0.SPC0100.B010_Om_X86_Py3.7_Centralized.tar.gz
[信息] 找到_Server_文件: GaussDB-Kernel_506.0.0.SPC0100.B010_Server_X86_Centralized.tar.gz
[信息] 找到_Symbol_文件: GaussDB-Kernel_506.0.0.SPC0100.B010_Symbol_X86_Centralized.tar.gz
[信息] 找到Kernel文件: GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin
[信息] 第8步: 清理臨時目錄...
[信息] ============== 解壓完成 ==============
[信息] 原始tar包: DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872.tar.gz
[信息] 目標架構: x86_64
[信息] 提取文件數: 4
[信息] 輸出目錄: /root/uncompress_gauss
[信息] 所有文件已提取到: /root/uncompress_gauss
[信息] 請檢查以下文件:
-rw------- 1 root root 31990299 Jul 16 15:07 /root/uncompress_gauss/GaussDB-Kernel_506.0.0.SPC0100.B010_Om_X86_Py3.7_Centralized.tar.gz
-rw------- 1 root root 147639913 Jul 16 15:07 /root/uncompress_gauss/GaussDB-Kernel_506.0.0.SPC0100.B010_Server_X86_Centralized.tar.gz
-rw------- 1 root root 1072143704 Jul 16 15:07 /root/uncompress_gauss/GaussDB-Kernel_506.0.0.SPC0100.B010_Symbol_X86_Centralized.tar.gz
-rwx------ 1 root root 111140514 Jul 16 15:07 /root/uncompress_gauss/GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin
非常的賞心悅目哈!
雖然只要一個bin文件就能啟動GaussDB內核了,但這里我提取出4個文件,主要目的是這些文件以后可能也能用到,比如Symbol符號表,這個東西在遇上內核疑難雜癥時可是必須的。
開發powershell腳本
這是linux版本上的,假設要在windows上解壓呢?
直接和Cursor說讓她根據這個sh腳本再生成一個windows上的,分分鐘就生成了一個ps1文件,只是這下需要額外安裝7z,還要裝gitbash,而且BUG又稍微多了點,有長路徑問題,還有環境變量上下文切換異常的問題。不過好在Cursor能自己測試自己修BUG,她全自動改了5個版本后,終于能正常運行了。
PS G:\gaussdb506\gaussdb506_LTS\uncompress> Set-ExecutionPolicy RemoteSigned -Scope Process -Force
PS G:\gaussdb506\gaussdb506_LTS\uncompress> .\uncompress_gaussdb.ps1 .\DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872.tar.gz x86_64 [INFO] Original tar package: G:\gaussdb506\gaussdb506_LTS\uncompress\DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872.tar.gz
[INFO] Working directory: G:\gaussdb506\gaussdb506_LTS\uncompress
[INFO] Target architecture: x86_64=== Checking Required Tools ===
[INFO] Found tool: tar (path: tar)
[INFO] Found tool: 7z (path: C:\Program Files\7-Zip\7z.exe)=== Step 1: Extracting main tar ===
False
[INFO] Entering directory: DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872
False=== Step 2: Extracting _all.tar.gz file ===
[INFO] Extracting file: DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_all.tar.gz
[WARN] Long path detected in Step 2. Path length: 203
[WARN] Switching to short path for remaining operations.
[INFO] Working in short path: G:\gaussdb506\gaussdb506_LTS\uncompress\gaussdb_extract_638883094630095806\temp_extract_801137921
True=== Step 3: Extracting _noarch.tar.gz file ===
[INFO] Extracting file: DBS-GaussDB-kernel_9.0.0.SPC0100.20250427175024.kylin.107678083_noarch.tar.gz
[WARN] Long path detected in Step 3. Path length: 173
[WARN] Switching to short path for remaining operations.
[INFO] Switched to shorter path: G:\gaussdb506\gaussdb506_LTS\uncompress\gaussdb_extract_638883094630095806\temp_872330166
True=== Step 4: Extracting RPM file ===
[INFO] Extracting RPM file: DBS-GaussDB-kernel-src-9.0.0.SPC0100.20250427175024.kylin.107678083-1.noarch.rpm
[INFO] Using 7z to extract RPM: C:\Program Files\7-Zip\7z.exe
[INFO] Extracting CPIO file: DBS-GaussDB-kernel-src-9.0.0.SPC0100.20250427175024.kylin.107678083-1.noarch.cpio
False=== Step 5: Extracting architecture-related installation packages ===
[INFO] Extracting architecture file: v9.0.0.SPC0100-GaussDBV5-install-kylin-ha-x86_64_1cc3a7613759e3b6adf885c90adfd2b6ce835b95cb2b898538c14a86a0a914a0.tar.gz
False
[WARN] Long path detected in Step 5 (install). Path length: 163
[WARN] Switching to short path for remaining operations.
[INFO] Switched to shorter path: G:\gaussdb506\gaussdb506_LTS\uncompress\gaussdb_extract_638883094630095806\temp_242132117
True=== Step 6: Extracting Server-related files ===
[INFO] Extracting Server file: GaussDB-Kernel_506.0.0.SPC0100.B010_Server_X86_Centralized.tar.gz
False
[INFO] Extracting 64bit file: GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit_Server.tar.gz
./components/cm/lib/libcjson.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libcjson.so'
./components/cm/lib/libcjson.so.1: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libcjson.so.1'
./components/cm/lib/libclient.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libclient.so'
./components/cm/lib/libcom_err.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libcom_err.so'
./components/cm/lib/libcom_err.so.3: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libcom_err.so.3'
./components/cm/lib/libgssapi_krb5.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libgssapi_krb5.so'
./components/cm/lib/libgssapi_krb5.so.2: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libgssapi_krb5.so.2'
./components/cm/lib/libgssrpc.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libgssrpc.so'
./components/cm/lib/libgssrpc.so.4: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libgssrpc.so.4'
./components/cm/lib/libk5crypto.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libk5crypto.so'
./components/cm/lib/libk5crypto.so.3: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libk5crypto.so.3'
./components/cm/lib/libkrb5.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libkrb5.so'
./components/cm/lib/libkrb5.so.3: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libkrb5.so.3'
./components/cm/lib/libkrb5support.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libkrb5support.so'
./components/cm/lib/libkrb5support.so.0: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libkrb5support.so.0'
./components/cm/lib/liblz4.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\liblz4.so'
./components/cm/lib/liblz4.so.1: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\liblz4.so.1'
./components/cm/lib/libz.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libz.so'
./components/cm/lib/libz.so.1: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libz.so.1'
./components/cm/lib/libzstd.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libzstd.so'
./components/cm/lib/libzstd.so.1: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\components\\cm\\lib\\libzstd.so.1'
./dependency/lib/libcgroup.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\dependency\\lib\\libcgroup.so'
./dependency/lib/libcgroup.so.2: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\dependency\\lib\\libcgroup.so.2'
./dependency/lib/libstdc++.so.6: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\dependency\\lib\\libstdc++.so.6'
./unixodbc/lib/libodbc.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\unixodbc\\lib\\libodbc.so'
./unixodbc/lib/libodbc.so.2: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\unixodbc\\lib\\libodbc.so.2'
./unixodbc/lib/libodbccr.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\unixodbc\\lib\\libodbccr.so'
./unixodbc/lib/libodbccr.so.2: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\unixodbc\\lib\\libodbccr.so.2'
./unixodbc/lib/libodbcinst.so: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\unixodbc\\lib\\libodbcinst.so'
./unixodbc/lib/libodbcinst.so.2: Can't create '\\\\?\\G:\\gaussdb506\\gaussdb506_LTS\\uncompress\\gaussdb_extract_638883094630095806\\temp_242132117\\unixodbc\\lib\\libodbcinst.so.2'
tar.exe: Error exit delayed from previous errors.
False=== Step 7: Finding and copying target files ===
[INFO] Found _Om_ file: GaussDB-Kernel_506.0.0.SPC0100.B010_Om_X86_Py3.7_Centralized.tar.gz
[INFO] Found _Server_ file: GaussDB-Kernel_506.0.0.SPC0100.B010_Server_X86_Centralized.tar.gz
[INFO] Found _Symbol file: GaussDB-Kernel_506.0.0.SPC0100.B010_Symbol_X86_Centralized.tar.gz
[INFO] Found Kernel file: GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin
[INFO] Found Kernel file: GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin=== Extraction Complete ===
[INFO] Original tar package: .\DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872.tar.gz
[INFO] Target architecture: x86_64
[INFO] Extracted files: 5
[INFO] Output directory: G:\gaussdb506\gaussdb506_LTS\uncompress
[INFO] All files have been extracted to: G:\gaussdb506\gaussdb506_LTS\uncompress
[INFO] Please check the following files:GaussDB-Kernel_506.0.0.SPC0100.B010_Om_X86_Py3.7_Centralized.tar.gz (30.51 MB)GaussDB-Kernel_506.0.0.SPC0100.B010_Server_X86_Centralized.tar.gz (140.8 MB)GaussDB-Kernel_506.0.0.SPC0100.B010_Symbol_X86_Centralized.tar.gz (1022.48 MB)GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin (105.99 MB)=== Cleaning up temporary directory ===
[INFO] Cleaned up temporary directory: gaussdb_extract_638883094630095806
[INFO]
馃帀 Task completed! 馃帀PS G:\gaussdb506\gaussdb506_LTS\uncompress> ls目錄: G:\gaussdb506\gaussdb506_LTS\uncompressMode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2025/5/6 12:03 5058894815 DBS-GaussDB-Kylin-Kernel_25.1.30.10.968045292423872.tar.gz
-a---- 2025/4/27 17:53 31990299 GaussDB-Kernel_506.0.0.SPC0100.B010_Om_X86_Py3.7_Centralized.tar.gz
-a---- 2025/4/27 17:53 147639913 GaussDB-Kernel_506.0.0.SPC0100.B010_Server_X86_Centralized.tar.gz
-a---- 2025/4/27 17:53 1072143704 GaussDB-Kernel_506.0.0.SPC0100.B010_Symbol_X86_Centralized.tar.gz
-a---- 2025/4/27 14:27 111140514 GaussDB-Kernel_506.0.0.SPC0100_Kylin_64bit.bin
-a---- 2025/7/17 0:37 18364 uncompress_gaussdb.ps1
由于ai編程對中文字符集處理很容易出現亂碼,我就讓Cursor把中文全改成英文了,后面的那個“馃帀”其實是emoji 🎉。
第6步里的那些報錯不用管,那些是因為解壓的包里有軟鏈接,windows上不認linux的軟鏈接。
總結
- 時代變了,AI自動寫代碼的完成度已經非常高了(寫完這篇,剛好Cursor高級模型開始封國內ip了…)
- 建議GaussDB官方應該考慮下如何在安裝測試數據庫這個方面對開發者和DBA友好化(別說用openGauss,因為兩者差別已經很大了)
- 本文中使用到的shell腳本和powershell腳本已開源,實測在505.2版本和506.0版本都可以正確提取內核二進制
https://gitee.com/darkathena/uncompress-gaussdb
- 本文作者: DarkAthena
- 本文鏈接: https://www.darkathena.top/archives/GaussDB-How-to-Extract-Kernel-Binaries-from-the-Release-Package
- 版權聲明: 本博客所有文章除特別聲明外,均采用CC BY-NC-SA 3.0 許可協議。轉載請注明出處