Posted in

【Go语言安装权威指南】:20年Golang布道者亲授,5步完成全平台稳定部署(Windows/macOS/Linux)

第一章:怎样下载golang

Go 语言官方提供跨平台、免安装(即解压即用)的二进制分发包,支持 Windows、macOS 和主流 Linux 发行版。推荐始终从 https://go.dev/dl/ 获取最新稳定版,该页面会自动识别访问设备的操作系统并高亮推荐版本。

访问官方下载页面

打开浏览器,访问 https://go.dev/dl/。页面顶部显示当前最新稳定版本(如 go1.23.0),下方按操作系统分类列出对应安装包。注意区分:

  • Windows:选择 .msi(图形化向导安装)或 .zip(便携解压版);
  • macOS:Intel 芯片选 darwin-amd64,Apple Silicon(M1/M2/M3)选 darwin-arm64
  • Linux:确认系统架构(通常 linux-amd64linux-arm64),优先使用 .tar.gz 包。

下载与解压(以 Linux/macOS 为例)

执行以下命令下载并释放到 /usr/local(需 sudo 权限):

# 下载(请将 URL 替换为实际最新版链接,例如 go1.23.0)
curl -OL https://go.dev/dl/go1.23.0.linux-amd64.tar.gz
# 验证完整性(可选但推荐:检查 SHA256 值是否匹配官网公示值)
sha256sum go1.23.0.linux-amd64.tar.gz
# 解压覆盖安装(/usr/local/go 将成为 Go 根目录)
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz

配置环境变量

确保 go 命令全局可用。将 /usr/local/go/bin 添加至 PATH(以 Bash 为例):

echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc

验证安装成功:

go version  # 应输出类似 "go version go1.23.0 linux/amd64"
go env GOROOT  # 应返回 "/usr/local/go"

⚠️ 注意:Windows 用户若选择 .msi 安装包,安装向导将自动配置环境变量;若使用 .zip,需手动将 go\bin 目录添加至系统 PATH。所有平台均无需额外依赖或编译步骤。

第二章:Go语言下载机制深度解析与平台适配原理

2.1 Go官方二进制分发体系与版本命名规范(理论)+ 实时校验go.dev/dl页面结构(实践)

Go 官方通过 go.dev/dl 提供权威、签名验证的二进制分发服务,所有版本遵循 vX.Y.Z[+patch][-(beta|rc).N] 命名规范,例如 go1.22.5.linux-amd64.tar.gz

版本解析规则

  • 主版本 1 表示 Go 语言大版本(向后兼容性保证)
  • 次版本 22 对应年份(2022 年起采用年号纪年)
  • 修订版 5 为安全/关键修复编号

实时页面结构校验(curl + jq 示例)

curl -s https://go.dev/dl/ | \
  grep -o 'go[0-9]\+\.[0-9]\+\.[0-9]\+\.linux-amd64\.tar\.gz' | \
  head -n 3

该命令提取最新三个 Linux AMD64 官方包名;grep -o 确保仅捕获完整匹配项,避免误抓 HTML 标签或注释。

架构 支持平台示例
linux-amd64 Ubuntu 20.04+, RHEL 8+
darwin-arm64 macOS 13.0+ (Apple M1/M2)
windows-386 Windows 10+ (32-bit)
graph TD
    A[go.dev/dl] --> B[HTML 页面]
    B --> C{解析 <a> 标签}
    C --> D[提取 href 属性]
    D --> E[正则过滤 go*.tar.gz]
    E --> F[验证 SHA256.sum 签名]

2.2 CPU架构识别逻辑与GOOS/GOARCH环境映射关系(理论)+ 使用uname/arch命令精准判定本地平台(实践)

Go 构建系统依赖 GOOS(目标操作系统)和 GOARCH(目标CPU架构)决定交叉编译行为。其底层识别并非仅靠 Go 自身,而是深度协同系统级工具链。

系统级架构探测原理

Linux 下最权威的判定方式是组合使用:

# 获取内核架构(ABI视角,非CPU物理型号)
uname -m
# 输出示例:x86_64、aarch64、riscv64

# 获取更细粒度的硬件架构标识(GNU标准)
arch
# 输出示例:x86_64、aarch64、loongarch64

uname -m 返回 utsname.machine 字段,反映内核编译时设定的运行时 ABI 架构arch 是 GNU coreutils 工具,语义等价但更严格遵循 GNU 架构命名规范(如 armv7larm)。

GOOS/GOARCH 映射关键规则

uname -m 输出 GOARCH 说明
x86_64 amd64 x86-64 兼容 AMD/Intel
aarch64 arm64 ARMv8-A 64位指令集
riscv64 riscv64 RISC-V 64位通用扩展
loongarch64 loong64 龙芯自主指令集(自 Go 1.21+)
graph TD
  A[执行 uname -m] --> B{输出匹配?}
  B -->|x86_64| C[GOARCH=amd64]
  B -->|aarch64| D[GOARCH=arm64]
  B -->|riscv64| E[GOARCH=riscv64]
  B -->|其他| F[需查证 Go 源码 src/cmd/internal/goobj/abi.go]

2.3 TLS证书链验证与MITM风险规避机制(理论)+ curl -v + openssl s_client验证golang.org/dl证书链(实践)

TLS证书链验证是客户端确认服务器身份的核心环节:从叶证书(golang.org/dl)逐级向上校验签名,直至受信任的根证书。中间人(MITM)攻击常通过伪造中间证书或劫持DNS/HTTP劫持破坏该链条。

验证工具对比

工具 优势 局限
curl -v 显示完整握手日志、证书摘要、CA验证结果 不展示证书链细节
openssl s_client 可输出完整PEM证书链、支持 -showcerts-verify 参数 输出冗长,需人工解析

实践命令与分析

curl -v https://golang.org/dl/ 2>&1 | grep -E "(subject|issuer|SSL certificate|CN=)"

输出含证书主体(CN=golang.org)、签发者及验证状态;-v 启用详细模式,2>&1 合并stderr/stdout便于过滤,grep 提取关键字段定位链完整性。

openssl s_client -connect golang.org:443 -servername golang.org -showcerts </dev/null 2>/dev/null | openssl x509 -noout -text | grep -E "(Subject:|Issuer:|DNS:|CA Issuers)"

-servername 启用SNI;-showcerts 输出全部证书(叶→中间→根);管道二次解析首张证书的X.509结构,验证域名绑定(SAN)与CA签发路径是否可信。

graph TD
    A[golang.org/dl 证书] -->|由 DigiCert TLS RSA SHA256 2020 CA 签发| B[DigiCert 中间证书]
    B -->|由 DigiCert Global Root G3 签发| C[DigiCert 根证书]
    C -->|预置于系统信任库| D[验证通过]

2.4 校验和完整性保障体系:SHA256SUMS与SHA256SUMS.sig双签名验证流程(理论)+ gpg –verify + sha256sum -c校验全流程实操(实践)

现代软件分发依赖双层信任链:先验证签名者身份,再验证文件内容一致性。

双签名验证核心逻辑

  • SHA256SUMS:明文哈希清单(每行 SHA256_HASH filename
  • SHA256SUMS.sig:由发布者私钥对 SHA256SUMS 签名生成
# 1. 验证签名真实性(确认SHA256SUMS未被篡改)
gpg --verify SHA256SUMS.sig SHA256SUMS

--verify 自动匹配公钥环中对应公钥;若输出 Good signature from "Name <email>",表明清单完整可信。

# 2. 校验下载文件实际哈希是否匹配清单
sha256sum -c SHA256SUMS 2>&1 | grep -E "(OK|FAILED)"

-c 参数启用校验模式,逐行读取清单并计算本地文件哈希;2>&1 合并错误流便于过滤。

验证失败典型场景

场景 原因 检测阶段
BAD signature SHA256SUMS 被篡改或公钥未导入 gpg --verify
filename: FAILED 下载文件损坏或版本不匹配 sha256sum -c
graph TD
    A[获取SHA256SUMS + .sig] --> B{gpg --verify}
    B -->|Good| C[sha256sum -c]
    B -->|Bad| D[终止:清单不可信]
    C -->|ALL OK| E[文件可信]
    C -->|FAILED| F[终止:文件损坏/替换]

2.5 代理策略与CDN路由优化原理(理论)+ GOPROXY=direct对比GOPROXY=https://goproxy.cn的下载耗时与重试行为分析(实践

代理策略的本质

Go 模块代理本质是 HTTP 中间层,将 https://proxy.golang.org 或镜像站(如 goproxy.cn)作为模块元数据与 .zip 包的统一出口。CDN 路由优化则通过 GeoDNS + Anycast 将请求智能调度至最近边缘节点,降低 RTT 并规避跨境带宽瓶颈。

实测对比关键指标

配置 平均首字节时间(ms) 3次失败后自动重试次数 是否启用并发 fetch
GOPROXY=direct 1840 3(退避至原始 repo) 否(串行 git clone)
GOPROXY=https://goproxy.cn 217 0(CDN 缓存命中即返回) 是(并行 module index + zip)
# 启用详细调试日志观察重试行为
GOPROXY=https://goproxy.cn GODEBUG=http2debug=2 go mod download -x github.com/gin-gonic/gin@v1.9.1

该命令输出含 Fetching https://goproxy.cn/github.com/gin-gonic/gin/@v/v1.9.1.info 及重定向链路;direct 模式下则触发 git ls-remotegit archive 多轮 SSH/HTTPS 探测,无 CDN 缓存加速。

路由决策流程

graph TD
    A[go get 请求] --> B{GOPROXY 设置}
    B -->|direct| C[解析 go.mod → 直连 VCS]
    B -->|https://goproxy.cn| D[CDN 边缘节点路由]
    D --> E[缓存命中?]
    E -->|是| F[200 + ZIP 流式响应]
    E -->|否| G[回源至上海中心集群 → 缓存后返回]

第三章:Windows平台Go下载部署实战

3.1 Windows Installer与ZIP包的本质差异与注册表/PATH注入机制(理论)+ 使用msiexec /a解包分析安装器行为(实践)

Windows Installer(MSI)是事务性、策略驱动的安装引擎,而ZIP仅是静态归档格式——二者在设计目标上存在根本分野。

本质差异对比

维度 MSI 安装包 ZIP 包
执行模型 基于InstallExecuteSequence事件链 无执行逻辑,纯文件提取
系统集成 自动写注册表、服务、PATH、COM组件 需手动配置,无系统级注册能力
回滚能力 支持原子回滚(事务日志) 不可逆解压

注册表与PATH注入机制

MSI通过RegistryEnvironment标准表驱动写入,例如:

msiexec /a "App.msi" /qb TARGETDIR="C:\extracted"

/a 触发管理安装(Admin Install):将压缩的CAB流解包为明文文件结构,并还原_SummaryInformation流与Property表中的INSTALLLEVELTARGETDIR等上下文。此过程不执行任何自定义操作(如CustomAction),但完整暴露Installer数据库schema。

解包行为验证流程

graph TD
    A[msiexec /a App.msi] --> B[解析Database表]
    B --> C[提取Embedded CAB]
    C --> D[重建文件树+元数据]
    D --> E[保留Component GUID与Registry键路径映射]

该机制使安全审计者可静态分析安装意图,无需运行时沙箱。

3.2 PowerShell执行策略与数字签名绕过风险控制(理论)+ Set-ExecutionPolicy RemoteSigned + Get-AuthenticodeSignature双重验证(实践)

PowerShell执行策略是第一道运行时防线,RemoteSigned 允许本地脚本无签名执行,但强制要求远程脚本(如 Invoke-WebRequest 下载的.ps1)必须具备有效Authenticode签名。

执行策略风险本质

  • RemoteSigned 不校验本地脚本来源,易被恶意篡改或社工诱导执行;
  • 攻击者常利用 BypassUnrestricted 临时提权绕过,或通过 PowerShell -ExecutionPolicy Bypass 启动会话。

双重验证实践

# 设置策略(需管理员权限)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force

# 对关键脚本进行签名完整性+发布者可信度双检
$scriptPath = ".\deploy.ps1"
$signature = Get-AuthenticodeSignature $scriptPath
if ($signature.Status -eq 'Valid' -and $signature.SignerCertificate.Subject -match "CN=Contoso") {
    & $scriptPath
} else {
    throw "签名无效或发布者不匹配"
}

逻辑说明:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 仅影响当前用户,避免系统级策略污染;Get-AuthenticodeSignature 返回对象含 Status(Valid/NotSigned/HashMismatch等)和 SignerCertificate,可精确校验证书主题字段,实现最小权限信任模型。

签名验证结果语义对照表

Status 含义 是否可执行
Valid 签名完整且证书链可信
NotSigned 未签名 ❌(RemoteSigned下拒绝)
HashMismatch 文件被篡改
graph TD
    A[脚本执行请求] --> B{ExecutionPolicy == RemoteSigned?}
    B -->|是| C[本地脚本:直接执行]
    B -->|是| D[远程脚本:检查Authenticode签名]
    D --> E[Get-AuthenticodeSignature]
    E --> F{Status == Valid AND Issuer Trusted?}
    F -->|是| G[允许执行]
    F -->|否| H[中止并报错]

3.3 Windows Defender SmartScreen拦截原理与白名单注册方案(理论)+ signtool sign + 添加可信发布者证书(实践)

SmartScreen 拦截核心机制

SmartScreen 基于应用信誉云服务(Microsoft Reputation Service) 实时查询文件哈希、签名证书指纹、发布者域名及安装行为模式。新未见过的二进制即使已签名,若证书无历史分发记录或未绑定有效 EV 代码签名证书,仍触发“未知发布者”警告。

白名单注册路径(理论)

  • ✅ 获得 EV 代码签名证书(强制硬件密钥存储,微软预审核发布者资质)
  • ✅ 连续 30 天以上稳定分发(≥1000 台设备成功安装且零举报)
  • ✅ 证书 Subject CN 与 Microsoft Partner Center 注册组织名严格一致

实践:签名与证书部署

使用 signtool 执行时间戳增强型签名:

signtool sign ^
  /v ^
  /fd SHA256 ^
  /td SHA256 ^
  /tr "http://timestamp.digicert.com" ^
  /n "Contoso Inc." ^
  MyApp.exe

逻辑说明/fd SHA256 指定文件摘要算法;/td SHA256 指定时间戳哈希算法;/tr 提供 RFC 3161 时间戳服务器地址,确保签名长期有效;/n 必须与证书主题名称完全匹配(区分大小写),否则 SmartScreen 视为无效签名。

信任链关键验证点

验证项 是否必需 说明
证书由 Microsoft 可信根签发 如 DigiCert SHA2 Extended Validation Server CA
证书启用“代码签名”EKU 缺失则 Windows 拒绝识别为有效签名
签名含 RFC 3161 时间戳 ⚠️ 决定签名在证书过期后是否仍被接受
graph TD
    A[用户双击 MyApp.exe] --> B{SmartScreen 查询云端信誉}
    B -->|证书无分发历史| C[显示“未知发布者”警告]
    B -->|EV 证书+持续分发≥30天| D[静默放行]
    D --> E[加载 Authenticode 签名]
    E --> F[验证证书链→时间戳→哈希完整性]

第四章:macOS与Linux平台Go下载部署实战

4.1 macOS Gatekeeper与Notarization机制对Go二进制的审查逻辑(理论)+ xattr -d com.apple.quarantine + spctl –assess验证绕过路径(实践)

macOS Gatekeeper 在启动未签名或未公证(notarized)的 Go 二进制时,会检查 com.apple.quarantine 扩展属性及签名链完整性。

Gatekeeper 审查触发条件

  • 首次运行从网络下载的可执行文件(xattr -l ./main 可见 quarantine 属性)
  • spctl --assess --type execute ./main 返回 rejected 表示未通过策略

常见绕过操作(仅限开发/测试环境)

# 移除隔离属性(不解除签名验证)
xattr -d com.apple.quarantine ./main

# 强制评估为允许(需已禁用 Gatekeeper 或配置自定义规则)
spctl --assess --type execute --verbose=4 ./main

--verbose=4 输出详细策略匹配日志;xattr -d 仅清除元数据,不修改代码签名,但可能使 spctl 跳过部分网络来源检查。

审查逻辑优先级(简表)

检查项 是否必需 说明
com.apple.quarantine 属性 是(首次运行) 标记来源为不可信网络
Apple Developer ID 签名 是(启用 Gatekeeper 时) 否则直接拒绝
Notarization Ticket 嵌入 是(macOS 10.15+) 缺失则 spctl --assess 显示 rejected
graph TD
    A[启动 Go 二进制] --> B{存在 quarantine 属性?}
    B -->|是| C[触发 Gatekeeper 审查]
    B -->|否| D[跳过来源检查,仅验签名]
    C --> E[检查签名 + Notarization Ticket]
    E -->|全部通过| F[允许执行]
    E -->|任一失败| G[阻断并提示]

4.2 Linux发行版包管理器(apt/yum/dnf)与官方二进制的ABI兼容性陷阱(理论)+ ldd go | grep libc对比glibc版本兼容性(实践)

ABI不兼容的根源

Linux发行版通过apt(Debian/Ubuntu)、yum(RHEL/CentOS 7)或dnf(RHEL 8+)分发预编译二进制,其链接的glibc版本由系统锁定。而上游Go官方二进制(如go1.22.5.linux-amd64.tar.gz)在构建时绑定构建机的glibc ABI,若高于目标系统,运行时将报GLIBC_2.34 not found

快速验证glibc版本差异

# 查看系统glibc最低兼容版本(即已安装的最老符号集)
ldd --version | head -1  # 输出:ldd (GNU libc) 2.31

# 检查Go二进制依赖的glibc符号版本
ldd /usr/local/go/bin/go | grep libc
# 输出示例:libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f...)

该命令输出的是动态链接路径,需进一步用objdump -Treadelf -d提取所需符号版本——但grep libc仅定位共享库路径,不揭示符号版本需求,属常见误用。

兼容性决策矩阵

场景 安全做法 风险提示
目标系统glibc ≥ Go构建机 直接部署官方二进制
目标系统glibc 使用apt install golang-go 版本滞后,但ABI严格向下兼容
graph TD
    A[下载官方Go二进制] --> B{ldd ./go \| grep libc}
    B --> C[解析/libc.so.6路径]
    C --> D[readelf -d ./go \| grep GLIBC]
    D --> E[比对系统glibc版本]
    E -->|匹配| F[安全运行]
    E -->|不匹配| G[降级或源码编译]

4.3 macOS ARM64与Intel双架构fat binary结构解析(理论)+ file go + lipo -info验证Universal Binary组成(实践)

macOS Universal Binary(即 fat binary)本质是一个容器式二进制文件,内部按 Mach-O 格式嵌套多个架构独立的可执行段,通过头部 fat_header 和后续 fat_arch 数组描述各 slice 的偏移、大小与 CPU 类型。

文件结构概览

  • fat_header:固定 8 字节,含 magic(0xcafebabe)、nfat_arch(如 2)
  • 每个 fat_arch:20 字节,含 cputypeCPU_TYPE_ARM64=16777228CPU_TYPE_X86_64=16777223)、cpusubtypeoffsetsize

验证命令实践

# 查看二进制类型与架构标识
file /usr/bin/python3
# 输出示例:/usr/bin/python3: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64]

# 解析 fat header 组成
lipo -info /usr/bin/python3
# 输出:Architectures in the fat file: /usr/bin/python3 are: x86_64 arm64

lipo -info 读取 fat_header 并遍历 fat_arch 数组,仅输出 cputype 映射后的架构名,不校验 Mach-O 内容完整性。

架构标识对照表

cputype (hex) 架构 常见值(dec)
0x01000007 x86_64 16777223
0x0100000c arm64 16777228
graph TD
    A[fat binary] --> B[fat_header]
    A --> C[fat_arch #1]
    A --> D[fat_arch #2]
    C --> E[x86_64 Mach-O]
    D --> F[arm64 Mach-O]

4.4 Linux无root环境下的$GOROOT隔离部署方案(理论)+ tar -C ~/local/go –strip-components=1解压并配置~/.bashrc PATH(实践)

在受限用户环境中,$GOROOT 必须与系统级路径完全隔离,避免依赖 /usr/local/go/opt/go 等需 root 权限的目录。

隔离设计原则

  • 所有 Go 文件仅存在于 ~/local/go/
  • 二进制、源码、pkg 目录结构完整保留
  • GOCACHEGOPATH 同步指向用户空间

解压与路径配置

# 下载 go1.22.5.linux-amd64.tar.gz 后执行:
mkdir -p ~/local/go
tar -C ~/local/go --strip-components=1 -xzf go1.22.5.linux-amd64.tar.gz

--strip-components=1 跳过顶层 go/ 目录,直接展开内容到 ~/local/go-C 指定解压根目录,确保无跨用户写入风险。

环境变量注入

将以下行追加至 ~/.bashrc

export GOROOT="$HOME/local/go"
export PATH="$GOROOT/bin:$PATH"
export GOPATH="$HOME/go"
export GOCACHE="$HOME/.cache/go-build"
变量 作用
GOROOT ~/local/go Go 运行时根目录
GOPATH ~/go 用户级模块与构建空间
GOCACHE ~/.cache/go-build 构建缓存隔离存储
graph TD
    A[下载 .tar.gz] --> B[tar --strip-components=1]
    B --> C[生成 ~/local/go/bin/go]
    C --> D[PATH 注入 ~/.bashrc]
    D --> E[go version 验证]

第五章:怎样下载golang

Go语言官方提供多平台、多方式的安装支持,确保开发者能在不同操作系统上快速获得稳定、安全的二进制分发包。以下为覆盖主流环境的实操指南,所有步骤均经 macOS Ventura 13.6、Ubuntu 22.04 LTS 和 Windows 11(22H2)实测验证。

官方二进制包直连下载

访问 https://go.dev/dl/ 可获取最新稳定版(如 go1.22.5.linux-amd64.tar.gz)。该页面按操作系统、架构、压缩格式分类,支持直接 curl 下载:

# Linux x86_64 示例(以 1.22.5 为例)
curl -O https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin

注意:Windows 用户需下载 .msi 安装器或 .zip 包,并将 C:\Go\bin 手动加入系统 PATH 环境变量。

使用包管理器自动化安装

系统 命令
macOS (Homebrew) brew install go(自动配置 /opt/homebrew/bin/go 到 PATH)
Ubuntu/Debian sudo apt update && sudo apt install golang-go(版本略旧,建议优先用官方包)
Windows (Chocolatey) choco install golang(需管理员权限运行 PowerShell)

验证安装完整性

下载后务必校验 SHA256 哈希值。Go 官网每版发布页均附带 goX.Y.Z.[os]-[arch].tar.gz.sha256 文件。例如:

curl -O https://go.dev/dl/go1.22.5.linux-amd64.tar.gz.sha256
sha256sum -c go1.22.5.linux-amd64.tar.gz.sha256
# 输出应为:go1.22.5.linux-amd64.tar.gz: OK

多版本共存方案

开发中常需切换 Go 版本(如兼容 legacy 项目)。推荐使用 gvm(Go Version Manager):

bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
source ~/.gvm/scripts/gvm
gvm install go1.19.13
gvm use go1.19.13 --default
go version  # 输出:go version go1.19.13 linux/amd64

中国大陆用户加速策略

因 CDN 节点限制,国内直连 go.dev 可能缓慢。可配置镜像源:

  • 替换下载 URL:https://golang.google.cn/dl/(Google 中国镜像,与官网完全同步)
  • 或设置环境变量启用代理缓存:
    export GOPROXY=https://goproxy.cn,direct

容器化环境预置

Dockerfile 中推荐使用官方 golang 镜像作为构建基础:

FROM golang:1.22.5-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -a -ldflags '-extldflags "-static"' -o myapp .

FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]

离线部署包制作

企业内网环境需离线分发时,可打包完整工具链:

# 在联网机器上执行
mkdir go-offline && cd go-offline
curl -O https://go.dev/dl/go1.22.5.linux-amd64.tar.gz
curl -O https://go.dev/dl/go1.22.5.linux-amd64.tar.gz.sha256
curl -O https://go.dev/dl/go1.22.5.linux-amd64.tar.gz.sig
tar -czf go1.22.5-offline.tgz go1.22.5.linux-amd64.tar.gz*

传输至目标服务器后解压并执行校验与安装脚本即可完成部署。

专治系统慢、卡、耗资源,让服务飞起来。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注