GaussDB 100单机版安装部署实战:从环境配置到健康检查

发布时间:2026/8/4 12:58:47

GaussDB 100单机版安装部署实战:从环境配置到健康检查
1. 从零到一为什么选择单机版GaussDB 100作为起点如果你正在寻找一款能够处理企业级核心交易、同时又想在本地环境快速上手体验的国产数据库那么GaussDB 100的单机版安装绝对是你绕不开的第一个实战环节。我接触过不少从Oracle、MySQL转过来的朋友他们最初的想法往往是“先找个能跑起来的版本看看”而单机版恰恰就是这个“看看”的最佳入口。它剥离了分布式架构的复杂性让你能在一个干净的环境里集中精力搞懂它的内核特性、SQL兼容性以及基础的管理操作。GaussDB 100作为一款面向OLTP场景的数据库其单机版完整保留了核心的事务处理能力、SQL标准支持和安全管控特性。这意味着你安装的这个“单机版”并不是一个功能阉割的演示版而是一个可以用于开发、测试甚至小规模生产环境的全功能数据库实例。通过亲手部署它你能直观地感受到它在安装流程、目录结构、参数配置上与传统数据库的异同这是阅读一百篇文档都换不来的第一手经验。这次安装我们将聚焦于最经典的Linux环境。我会带你走一遍从系统准备、软件解压、初始化到启动服务的完整链路过程中会穿插我踩过的那些“坑”比如依赖包版本冲突、环境变量配置的玄学问题、以及初始化失败时如何看日志定位根因。我们的目标不仅仅是让数据库服务gs_ctl start成功跑起来更是要理解每一个步骤背后的意图确保你装好的的是一个“健康”的、随时可以投入使用的数据库实例。2. 战前准备构建一个合格的数据库运行环境安装数据库七分靠准备三分靠执行。一个粗糙的系统环境会让后续的安装步骤举步维艰。GaussDB 100对操作系统、内核参数、资源规格都有明确要求我们必须严格按照官方建议来配置任何“差不多就行”的想法都可能埋下隐患。2.1 操作系统与硬件资源核查首先确认你的操作系统版本。GaussDB 100 V300R001C00版本通常要求基于CentOS 7.6或openEuler 20.03 LTS等。你可以使用cat /etc/os-release命令来查看。我个人的经验是尽量使用纯净的最小化安装系统避免系统中存在多个版本的glibc或其他基础库减少不可预见的冲突。硬件方面CPU建议至少4核内存不小于8GB。对于磁盘需要重点关注两点一是空间安装路径建议预留50GB以上二是I/O性能如果条件允许使用SSD磁盘会极大提升数据库的整体表现。你可以用df -h查看磁盘空间用fdisk -l或lsblk查看磁盘类型。注意务必使用独立的磁盘分区或目录来存放数据库数据绝对不要放在系统根目录/下防止数据库数据增长导致系统盘被写满引发系统崩溃。我吃过这个亏当时临时装在/opt下结果业务数据激增连带系统都登不进去了。2.2 系统参数与依赖包的精细调整这是准备工作中最繁琐但也最关键的一步直接关系到数据库实例的稳定性和性能上限。内核参数调整需要修改/etc/sysctl.conf文件主要涉及共享内存、信号量、网络和文件句柄数。以下是一组适用于中等规模实例的参考值你需要以root用户执行sysctl -p使其生效。# 在/etc/sysctl.conf末尾添加 # 共享内存段最大尺寸建议为物理内存一半以上 kernel.shmmax 68719476736 kernel.shmall 4294967296 # 信号量相关参数 kernel.sem 250 32000 100 128 # 网络核心参数提升连接性能 net.core.rmem_default 262144 net.core.wmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_max 4194304 net.ipv4.tcp_rmem 4096 87380 4194304 net.ipv4.tcp_wmem 4096 65536 4194304 # 最大文件句柄数 fs.file-max 6815744 # 减少TCP连接TIME_WAIT时间加快端口回收 net.ipv4.tcp_fin_timeout 30 net.ipv4.tcp_tw_reuse 1 net.ipv4.tcp_tw_recycle 1用户资源限制编辑/etc/security/limits.conf为即将创建的数据库管理用户如omm设置资源软硬限制防止单个用户进程耗尽系统资源。omm soft nofile 1000000 omm hard nofile 1000000 omm soft nproc unlimited omm hard nproc unlimited omm soft stack unlimited omm hard stack unlimited依赖包安装使用yum一键安装所需的基础包。不同操作系统版本所需的包名可能有细微差异以下以CentOS 7为例yum install -y bzip2 libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel perl gcc gcc-c tar完成上述步骤后强烈建议重启一次服务器。很多内核参数和全局环境变量的修改需要重启才能完全生效不要抱有侥幸心理跳过这一步。重启后再次用sysctl -a | grep shm和ulimit -a以omm用户来验证参数是否已正确应用。3. 软件部署与数据库初始化实战当系统环境这个“地基”打牢固之后我们就可以开始“盖房子”了。这个阶段分为两步首先是部署数据库软件本身然后是创建一个可用的数据库实例。3.1 解压软件包与规划目录结构假设你已经从官方渠道获取了安装包GaussDB_100_1.0.0-REDHAT-64bit.tar.gz并将其上传至服务器/opt/software目录。首先创建数据库专用的管理用户和用户组。使用root用户操作groupadd dbgrp useradd -g dbgrp -m -d /home/omm omm passwd omm # 为omm用户设置一个强密码然后规划两个核心目录软件安装目录/opt/gaussdb/app用于存放可执行程序、库文件等静态内容。数据目录/opt/gaussdb/data用于存放数据库数据文件、日志文件、控制文件等动态内容。创建目录并授权mkdir -p /opt/gaussdb/app /opt/gaussdb/data chown -R omm:dbgrp /opt/gaussdb chmod -R 755 /opt/gaussdb接下来切换到omm用户开始解压和部署su - omm cd /opt/software tar -zxvf GaussDB_100_1.0.0-REDHAT-64bit.tar.gz -C /opt/gaussdb/app解压后/opt/gaussdb/app目录下通常会有一个以版本号命名的子目录例如gaussdb_100。为了方便管理可以创建一个软链接cd /opt/gaussdb/app ln -s gaussdb_100 gaussdb这样我们后续所有的操作都可以基于/opt/gaussdb/app/gaussdb这个固定路径即使未来升级版本也只需更改软链接指向而不用修改一堆配置脚本。3.2 关键配置文件解读与实例初始化初始化数据库实例是让一堆静态的二进制文件“活”起来变成一个可以接受连接、处理SQL的数据库服务。这个过程的核心是一个名为gs_initdb的工具而它的行为则由一个XML格式的配置文件config.xml所控制。在/opt/gaussdb/app/gaussdb目录下你可以找到一个模板配置文件。我们需要复制并修改它cd /opt/gaussdb/app/gaussdb cp config_template.xml config.xml vi config.xml这个配置文件内容很多但初期你只需要关注以下几个核心部分?xml version1.0 encodingUTF-8? ROOT !-- 集群信息单机版这里保持简单 -- CLUSTER PARAM nameclusterName valueSingleNodeCluster/ PARAM namenodeNames value/opt/gaussdb/data/ PARAM namebackIp1s value192.168.1.100/ !-- 替换为你的服务器IP -- PARAM namegaussdbAppPath value/opt/gaussdb/app/gaussdb/ PARAM namegaussdbDataPath value/opt/gaussdb/data/ PARAM namegaussdbLogPath value/opt/gaussdb/data/pg_log/ PARAM nametmpMppdbPath value/opt/gaussdb/data/tmp/ PARAM namegaussdbToolPath value/opt/gaussdb/app/gaussdb/tool/ PARAM namecorePath value/opt/gaussdb/data/corefile/ PARAM nameclusterType valuesingle-inst/ !-- 关键单机实例 -- /CLUSTER !-- 实例节点配置单机就一个 -- DEVICELIST DEVICE sn1000001 PARAM namename value/opt/gaussdb/data/ PARAM nameazName valueAZ1/ PARAM nameazPriority value1/ PARAM namebackIp1 value192.168.1.100/ !-- 数据库端口默认25308 -- PARAM namedataPortBase value25308/ !-- 数据库内部监听IP一般用0.0.0.0 -- PARAM namedataListenIp1 value0.0.0.0/ !-- 数据库内部通信端口 -- PARAM namedataHaIp1 value192.168.1.100/ PARAM namedataHaPort1 value26000/ /DEVICE /DEVICELIST /ROOT提示backIp1和dataHaIp1通常配置为服务器的业务平面IP地址。dataListenIp1设置为0.0.0.0表示监听所有IP方便远程连接但在生产环境建议绑定具体IP以增强安全。配置文件准备好后执行初始化命令。这个过程会创建数据目录结构、生成初始的系统表和数据字典。cd /opt/gaussdb/app/gaussdb/script ./gs_initdb -U omm -D /opt/gaussdb/data --config-file/opt/gaussdb/app/gaussdb/config.xml -w YourDBPassword123这里有几个关键参数-U omm指定初始化的超级管理员用户就是我们之前创建的omm。-D /opt/gaussdb/data指定数据目录路径。--config-file指定我们刚才编辑的配置文件。-w为omm用户设置数据库连接密码。务必设置一个强密码。初始化过程会在屏幕上输出大量日志。如果最终看到“[GAUSS-51600] : The gaussdb init succeeded.”这样的信息恭喜你最核心的一步已经成功了。如果失败请第一时间查看/opt/gaussdb/data/pg_log目录下最新的日志文件错误信息通常非常明确。4. 启动、连接与基础健康检查初始化成功相当于数据库的“躯体”已经塑造完毕但还没有“灵魂”运行中的进程。接下来我们让它运行起来并验证其基本功能是否正常。4.1 启动与停止数据库服务GaussDB 100使用gs_ctl这个工具来管理数据库实例的生命周期。启动服务cd /opt/gaussdb/app/gaussdb ./bin/gs_ctl start -D /opt/gaussdb/data -Z single_node-D指定数据目录路径告诉工具去哪里启动实例。-Z single_node明确指定为单机节点模式。启动成功后会提示“server started”。你可以通过以下命令检查进程是否存在ps -ef | grep gaussdb | grep -v grep你应该能看到一个以omm用户运行的gaussdb主进程。停止服务则使用./bin/gs_ctl stop -D /opt/gaussdb/data在运维中更常用的可能是restart重启和reload重载配置文件不重启服务命令。4.2 首次连接与基础SQL操作服务启动后我们使用GaussDB自带的命令行工具gsql进行连接。这是验证安装是否成功的直接方式。cd /opt/gaussdb/app/gaussdb ./bin/gsql -d postgres -p 25308 -U omm -W输入初始化时设置的密码后你应该会进入gsql的命令行提示符postgres#执行几个简单的SQL命令来感受一下查看版本select version();查看数据库列表\l(这是gsql的元命令注意前面有反斜杠)切换数据库\c template1(切换到模板数据库)创建一个测试库和表CREATE DATABASE mytestdb; \c mytestdb CREATE TABLE test_table (id INT, name VARCHAR(50)); INSERT INTO test_table VALUES (1, GaussDB 100); SELECT * FROM test_table;如果能顺利执行以上操作并看到正确结果那么从功能上讲你的单机版GaussDB 100已经安装成功并且具备了最基本的读写能力。4.3 安装后的必要健康检查清单安装成功并启动只是万里长征第一步。一个健康的数据库实例还需要通过以下几项检查日志检查查看/opt/gaussdb/data/pg_log目录下最新的日志确保没有持续的ERROR或FATAL级别的报错。偶尔的WARNING可以关注但不必过于紧张。端口监听使用netstat -tlnp | grep 25308确认数据库端口25308是否处于LISTEN状态并且进程号与之前查到的gaussdb主进程号一致。基础性能查询在gsql中执行SELECT * FROM pg_stat_activity;查看当前活动连接正常情况下除了你自己的gsql连接应该只有一些后台进程。磁盘空间监控使用df -h和du -sh /opt/gaussdb/data/*命令了解数据目录下各子目录的占用情况建立空间使用的基线印象。5. 避坑指南那些我亲自踩过的“雷”理论流程总是顺畅的但现实往往骨感。下面分享几个我在多次安装过程中遇到的典型问题及其解决方案希望能帮你节省大量排查时间。5.1 初始化失败“Failed to create shared memory segment”这是最常见的问题之一。错误信息通常指向shmget或shmat系统调用失败。根因分析根本原因就是我们在2.2节中调整的内核参数没有生效或者生效的值不足。特别是kernel.shmmax定义单个共享内存段的最大尺寸和kernel.shmall定义系统可分配的共享内存总页数。排查与解决首先以root身份执行sysctl -a | grep shm确认kernel.shmmax和kernel.shmall的值。计算一下shmmax应大于你为数据库配置的共享内存大小在配置文件中有相关参数如shared_buffersshmall应大于shmmax / PAGE_SIZE页大小通常为4096字节。如果值不对编辑/etc/sysctl.conf修正然后执行sysctl -p。最关键的一步如果修改了/etc/sysctl.conf必须重启服务器。仅执行sysctl -p有时无法让某些深层参数完全生效重启是最彻底的方法。还有一种情况是SELinux或AppArmor等安全模块限制了共享内存的创建。可以尝试临时将其设置为宽容模式测试setenforce 0CentOS/RHEL如果问题解决则需要配置相应的安全策略。5.2 启动失败“Lock file already exists”执行gs_ctl start时提示数据目录下的postmaster.pid或lockfile已存在。根因分析这通常意味着上一次数据库服务没有正常关闭比如被kill -9强制杀掉导致锁文件残留。解决方案首先再次确认数据库进程是否真的不存在了ps -ef | grep gaussdb | grep -v grep。如果确认没有进程可以安全地删除锁文件rm -f /opt/gaussdb/data/postmaster.pid文件路径可能在数据目录下。然后再次尝试启动。如果频繁出现此问题需要排查数据库异常退出的原因是内存不足、还是被运维脚本误杀。5.3 远程客户端无法连接本地gsql可以连但使用其他机器上的客户端工具如DBeaver、JDBC连接时超时或拒绝。排查链路检查监听配置确认config.xml中dataListenIp1是否为0.0.0.0或特定的业务IP而不是127.0.0.1。检查防火墙这是最大的“拦路虎”。需要在服务器防火墙开放25308端口。CentOS 7防火墙sudo firewall-cmd --zonepublic --add-port25308/tcp --permanent然后sudo firewall-cmd --reload。或者直接临时关闭防火墙测试仅用于排查systemctl stop firewalld。检查客户端连接串确保连接IP、端口、用户名、密码正确。密码中的特殊字符可能需要转义。检查数据库用户主机权限GaussDB默认可能只允许本地连接。你需要以omm用户登录后修改pg_hba.conf文件位于数据目录下添加允许远程主机连接的规则。例如host all all 192.168.1.0/24 md5这表示允许192.168.1.0/24网段的所有主机以密码方式连接所有数据库。修改后需要执行gs_ctl reload -D /opt/gaussdb/data重载配置无需重启。5.4 安装后运行缓慢简单查询都卡顿可能原因与对策磁盘I/O瓶颈这是首要怀疑对象。使用iostat -x 1命令查看磁盘利用率%util和响应时间await。如果利用率持续接近100%说明磁盘是瓶颈。考虑更换为SSD或检查是否有其他进程在大量读写同一块磁盘。内存不足数据库的shared_buffers等内存参数设置过大导致操作系统可用内存不足引发大量交换swap。使用free -h和top命令查看内存和swap使用情况。如果swap使用量持续增长需要调低数据库内存参数或为服务器增加物理内存。错误的参数配置单机版安装后一些默认参数可能偏保守。例如shared_buffers共享缓冲区默认值可能较小。你可以根据服务器内存大小在postgresql.conf也在数据目录下中进行调整比如设置为物理内存的1/4。注意任何参数修改都需要重启数据库服务才能生效。安装数据库是一个系统工程一次成功的安装是后续所有学习和应用的基础。遵循标准的步骤理解每一步的作用遇到问题时按照“日志-配置-系统环境”的顺序层层排查你就能从容应对大部分挑战。当你看到gsql命令行提示符闪烁并能流畅执行SQL时那种亲手搭建起一个企业级数据库系统的成就感就是技术人最好的回报。

相关新闻

MidiEditor技术解析:开源MIDI编辑解决方案在音乐制作中的应用

MidiEditor技术解析:开源MIDI编辑解决方案在音乐制作中的应用

2026/8/4 12:58:47

MidiEditor技术解析:开源MIDI编辑解决方案在音乐制作中的应用 【免费下载链接】midieditor Provides an interface to edit, record, and play Midi data 项目地址: https://gitcode.com/gh_mirrors/mi/midieditor 行业痛点分析 传统MIDI编辑工具在音乐制作…

Ark-Pets桌宠:专业配置与进阶使用指南

Ark-Pets桌宠:专业配置与进阶使用指南

2026/8/4 12:58:47

Ark-Pets桌宠:专业配置与进阶使用指南 【免费下载链接】Ark-Pets Arknights Desktop Pets | 明日方舟桌宠 (ArkPets) 项目地址: https://gitcode.com/gh_mirrors/ar/Ark-Pets Ark-Pets是一款开源的《明日方舟》桌宠软件,能够将游戏中的干员模型以…

2026 年济南钢材回收市场大揭秘,目前这些回收站点你知道几个?

2026 年济南钢材回收市场大揭秘,目前这些回收站点你知道几个?

2026/8/4 12:58:46

引言2026 年济南钢材回收市场正处于动态变化中,了解当下的回收站点情况,对于有钢材回收需求的企业和个人来说至关重要。济南北环废旧物资回收有限公司作为深耕再生资源行业多年的企业,在市场中有着独特的地位。接下来,让我们一起深…

IMU数据处理的流程(原始数据->零漂校准->数据滤波->四元数计算得出欧拉角)

IMU数据处理的流程(原始数据->零漂校准->数据滤波->四元数计算得出欧拉角)

2026/8/4 14:08:50

整套可直接移植 C 代码 适用:STM32 / ESP32 / 普通32位MCU IMU:6轴(加速度计陀螺仪,如MPU6050、ICM42688) 流程:原始数据读取 → 零偏校准 → 一阶低通预处理 → Mahony AHRS融合输出四元数 → 四元数转欧拉…

BetterNCM安装器实战指南:从零到一的网易云插件管理解决方案

BetterNCM安装器实战指南:从零到一的网易云插件管理解决方案

2026/8/4 14:08:50

BetterNCM安装器实战指南:从零到一的网易云插件管理解决方案 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer BetterNCM安装器是网易云音乐PC客户端的专业插件管理工具&…

SpringBoot用户信用评估系统设计与实现

SpringBoot用户信用评估系统设计与实现

2026/8/4 14:08:50

1. 项目背景与核心价值 这个基于SpringBoot的用户信用评估系统毕业设计项目,本质上是一个融合了业务逻辑处理与数据可视化展示的典型企业级应用。在当前互联网金融和信用消费蓬勃发展的背景下,这类系统实际上解决了三个核心痛点: 首先&#…

在树莓派Raspbian下安装支持Hard Float的.NET环境

在树莓派Raspbian下安装支持Hard Float的.NET环境

2026/8/4 14:08:50

在树莓派Raspbian下安装支持Hard Float的.NET环境 为什么树莓派需要Hard Float?树莓派(尤其是Zero、2B、3B等型号)使用的是ARM架构的CPU,而Raspbian系统默认采用Hard Float(硬件浮点运算) ABI。简单来说&am…

SpringBoot2+Vue3校园招聘系统开发实践

SpringBoot2+Vue3校园招聘系统开发实践

2026/8/4 14:08:50

1. 项目概述:校园招聘系统的技术架构与核心价值 这个基于SpringBoot2Vue3MyBatis-PlusMySQL8.0的校园招聘系统,是当前企业校招数字化转型的典型解决方案。我在实际开发中发现,这类系统需要同时满足企业HR的高效筛选需求和应届生的求职体验&am…

涨跌股池数据统计分析:用Python挖掘涨停板与强势股的共性特征

涨跌股池数据统计分析:用Python挖掘涨停板与强势股的共性特征

2026/8/4 13:58:49

涨跌股池数据统计分析:用Python挖掘涨停板与强势股的共性特征 涨停板是A股市场最有特色的现象之一,每天涨停的股票往往代表当天市场最热点的方向。很多人追涨停靠的是盘感和经验,但我更喜欢用数据说话。我之前写了一套涨停板和强势股的统计分…

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

2026/8/3 4:49:52

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am…

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

2026/8/3 19:24:18

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架…

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

2026/8/3 20:38:37

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,…

3步解决Windows DLL缺失问题:VisualCppRedist AIO终极运行库修复方案

3步解决Windows DLL缺失问题:VisualCppRedist AIO终极运行库修复方案

2026/8/4 0:07:58

3步解决Windows DLL缺失问题:VisualCppRedist AIO终极运行库修复方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经在打开游戏或软件时遇…

SingleFile终极指南:一键保存完整网页的5大核心功能

SingleFile终极指南:一键保存完整网页的5大核心功能

2026/8/4 0:07:58

SingleFile终极指南:一键保存完整网页的5大核心功能 【免费下载链接】SingleFile Web Extension for saving a faithful copy of a complete web page in a single HTML file 项目地址: https://gitcode.com/gh_mirrors/si/SingleFile 你是否曾经遇到过这样的…

国家中小学智慧教育平台电子课本下载终极方案:三步免费获取PDF教材

国家中小学智慧教育平台电子课本下载终极方案:三步免费获取PDF教材

2026/8/4 0:07:58

国家中小学智慧教育平台电子课本下载终极方案:三步免费获取PDF教材 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/4 13:34:51

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/3 7:25:44

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/3 2:41:27

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…