
# 环境准备
#### 获取驱动包
下载[表1]中的驱动包和驱动包校验包。
 表1驱动包下载列表 
| 版本        | 下载地址                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|
| V2.0-10.x | [驱动包](https://dbs-download.obs.cn-north-1.myhuaweicloud.com/DBS-GaussDB-driver/1782715650051/DBS-GaussDB-driver_507.0_20260629130806.133858239.tar.gz) [驱动包校验包](https://dbs-download.obs.cn-north-1.myhuaweicloud.com/DBS-GaussDB-driver/1782715650051/DBS-GaussDB-driver_507.0_20260629130806.133858239.tar.gz.sha256) |
   
为了防止软件包在传递过程或存储期间被恶意篡改，下载软件包时需下载对应的校验包对软件包进行校验，校验方法如下：
- Linux操作系统软件包完整性校验：
  1. 上传软件包和软件包校验包到虚拟机的同一目录下。
  
  2. 执行如下命令，校验软件包完整性。
     ```
     F=$(echo DBS-GaussDB-driver*.tar.gz);echo "$(awk '{print $1}' "$F.sha256")  $F" | sha256sum -c -
     ```
     如果回显OK，则校验通过。例如：
     ```
     DBS-GaussDB-driver_507.0_20260629130806.133858239.tar.gz: OK
     ```
     
   

- Windows操作系统软件包完整性校验：
  1. 使用快捷键"Win+R"打开"运行"窗口。 在"打开"栏，输入"cmd"，按"Enter"回车，打开命令行页面。
  
  2. 执行以下命令，获取驱动包的Hash值。
     certutil -hashfile *{* *驱动包本地目录* *}* \\*{驱动包名}* sha256
     - {*驱动包本地目录*}：请根据实际下载目录进行替换。例如：C:\\Users
     
     - {*驱动包*名}：请根据实际下载的驱动包名进行替换。例如：DBS-GaussDB-driver_507.0_20260629130806.133858239.tar.gz
     
     
     示例：certutil -hashfile *C:\\Users\\DBS-GaussDB-driver_507.0_20260629130806.133858239.tar.gz sha256*
     
  
  3. 将[2]获取到的Hash值和[表1]中获取到的驱动包校验包的Hash值进行比较。
     - 若一致则通过校验。
     
     - 若不一致，请重新下载驱动包，重复[1]\~[3]进行校验。
      
   
 
#### 获取Go驱动包
1. 解压获取到的驱动包。驱动包的文件层级关系参考以下结构：DBS-GaussDB-driver_\*/数据库部署形态/驱动类型/操作系统架构/发布包/驱动包
2. 选择数据库部署形态。 
   驱动包不区分部署形态，可选择Centralized/Distributed任意一种数据库部署形态对应的驱动包。
   
   
3. 选择驱动类型。 
   选择go_driver.tar.gz，并解压。
   
   
4. 选择操作系统架构。 
   1. 非密态功能不依赖系统架构，可选择任意一种操作系统架构。
   
   2. 密态功能需要严格选择对应系统架构的目录，可使用以下命令查看客户端系统架构。
      ```
      uname -a
      ```
      
   
   
   
   
5. 选择go发布包。
6. 解压go发布包，则可获取Go驱动源码包：openGauss-connector-go-pq。
 
#### 配置环境变量
- GO111MODULE：用户使用在线导入的方式安装Go驱动时需要设置GO111MODULE为on。
  ```
  export GO111MODULE=on
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  如果不希望进行go mod工程的改造，需将GO111MODULE设置为off，并手动下载依赖包。依赖包与驱动根目录和业务代码保持同级。
  
- GOPROXY：用户使用在线导入时需配置包含Go驱动包的路径\[path-to-goproxy\]。
  ```
  export GOPROXY=[path-to-goproxy]
  ```
  
- GOPATH：Go驱动依赖包存放路径\[path-to-gopath\]。
  ```
  export GOPATH=[path-to-gopath]
  ```
  
- Go版本要求在1.13或以上，可以执行以下命令查看Go环境变量GOVERSION的配置值。
  ```
  go env
  ```
  
- 用户根据场景需要，配置其他的Go环境变量。
 
#### 下载依赖包
1. Go Modules开启时（即GO111MODULE为on），可进入Go驱动代码根路径，执行以下命令下载驱动代码所需相关依赖。
   
   ```
   go mod tidy
   ```
   
   
2. 完成[步骤2]后，在go.mod文件中添加以下一行，替换驱动包依赖模块路径。
   
   ```
   replace [Go驱动模块名] => [Go驱动包本地路径]
   ```
   ![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
   - \[Go驱动模块名\]，根据实际使用Go驱动模块名修改。
   
   - \[Go驱动包本地路径\]，根据实际Go驱动本地路径修改。
    
   以代码xxx.go中引用Go驱动为例：
   ```
   // xxx.go
   package main
   import (
      _ "openGauss-connector-go-pq"
   )
   ```
   go.mod文件添加以下内容：
   ```
   replace openGauss-connector-go-pq => [path-to-driver]/openGauss-connector-go-pq
   ```
   ![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
   - 示例xxx.go中"openGauss-connector-go-pq"为驱动模块名，用户可根据自身需求修改。
   
   - go.mod中*\[path-to-driver\]* /openGauss-connector-go-pq为本地Go驱动包路径， 该行将xxx.go中引用的Go驱动模块名openGauss-connector-go-pq指向本地Go驱动*\[path-to-driver\]*/openGauss-connector-go-pq。
    
   
   
![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
- 通过go mod tidy下载相关依赖时可能会下载某个依赖的低版本，如果依赖的低版本存在漏洞，可以通过更改go.mod文件中对应依赖的版本号，更新依赖到漏洞修复后的版本来规避风险。
- 使用go 1.13版本或以上即可，runtime运行库需要更新至1.18版本或以上。
 
