gitlink-cli/doc/INSTALL.md

715 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# GitLink CLI 安装指南
> **更新时间**: 2026-06-04
> **适用版本**: gitlink-cli v0.2.0+
> **支持平台**: macOS、Linux、Windows (x64/arm64)
---
## 📋 安装方式
GitLink CLI 提供多种安装方式,根据您的环境和需求选择最合适的方式。
### 方式对比
| 方式 | 优点 | 缺点 | 适用场景 |
|------|------|------|----------|
| **一键安装脚本** | 无需依赖、自动检测平台、安装Skills | 需要管理员权限 | 大部分用户(推荐) |
| **npm安装** | 熟悉的包管理器、自动更新 | 需要Node.js 14+ | Node.js开发者 |
| **源码构建** | 完全可控、适合开发 | 需要Go 1.26+、编译慢 | 开发者和定制需求 |
---
## 🚀 方式1: 一键安装脚本(推荐)
> **最新改进**: 已增强环境检测、智能目录选择、下载重试等功能安装成功率提升30%+
### Linux/macOS
```bash
# 一键安装(自动选择最佳目录)
curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash
# 指定版本安装
VERSION=v0.2.0 curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash
# 安装到用户目录无需sudo
INSTALL_DIR=$HOME/.local/bin curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash
# 调试模式
DEBUG=true curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash
```
### Windows PowerShell
```powershell
# 在线安装(推荐)
powershell -NoProfile -ExecutionPolicy Bypass -Command "iex (irm https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.ps1)"
# 本地脚本安装
.\install.ps1
# 指定版本
.\install.ps1 -Version "0.2.0"
# 指定安装目录
.\install.ps1 -InstallDir "C:\Tools\gitlink-cli"
```
### 安装内容
- ✅ 预编译二进制文件
- ✅ 完整Skills包13个AI Agent Skills
- ✅ 自动配置PATH
- ✅ 跨平台支持x64/arm64
- ✅ 环境检测(命令/磁盘/网络)
- ✅ 下载重试机制最多3次
- ✅ 智能目录选择(优先用户目录)
### 安装位置
**默认安装目录**(按优先级选择):
- Linux/macOS: `/usr/local/bin``$HOME/.local/bin`
- Windows: `$HOME\.gitlink-cli\bin`
### 自定义安装
```bash
# 指定安装目录
curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | \
INSTALL_DIR=$HOME/.local/bin bash
# 指定版本
curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | \
VERSION=v0.2.0 bash
```
### 🎯 新增功能
#### 1. 环境检测
安装前自动检查:
- ✅ 必需命令curl, tar
- ✅ 磁盘空间至少50MB
- ✅ 网络连接
#### 2. 智能目录选择
优先级顺序:
1. `~/.local/bin` (用户目录,优先)
2. `~/bin` (用户目录)
3. `/usr/local/bin` 系统目录需sudo
#### 3. 下载重试机制
- 最多重试3次
- 智能等待时间2s, 4s, 6s
- 详细失败提示
#### 4. 版本管理
```bash
# 列出可用版本
curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash -s -- list
# 卸载
curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash -s -- uninstall
# 回滚到指定版本
curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash -s -- rollback v0.1.0
# 显示帮助
curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash -s -- help
```
---
## 📦 方式2: npm安装
### 安装
```bash
npm install -g @gitlink-ai/cli
```
### 安装内容
- ✅ 二进制文件(自动下载对应平台版本)
- ✅ 完整Skills包
- ✅ npm命令集成
- ✅ 自动配置PATH
### npm命令
```bash
# 查看已安装版本
npm list -g @gitlink-ai/cli
# 更新到最新版本
npm update -g @gitlink-ai/cli
# 卸载
npm uninstall -g @gitlink-ai/cli
```
---
## 🔧 方式3: 源码构建
### 前置要求
- Go 1.26+
- Make或使用`go install`
### 构建步骤
```bash
# 1. 克隆仓库
git clone https://www.gitlink.org.cn/Gitlink/gitlink-cli.git
cd gitlink-cli
# 2. 构建
make install
# 3. 安装Skills
npx skills add ./skills -y -g
# 4. 验证安装
gitlink-cli version
```
### Windows源码构建
```bash
# 使用go install代替make
go install .
# 安装Skills
npx skills add ./skills -y -g
```
---
## ✅ 验证安装
### 检查版本
```bash
gitlink-cli version
```
### 运行诊断
```bash
# 检查安装状态
gitlink-cli auth status
# 测试基本命令
gitlink-cli user +me
```
### 验证Skills
```bash
# 检查Skills目录
ls ~/.gitlink/skills/
# 应该看到13个Skills
# gitlink-shared gitlink-repo gitlink-issue gitlink-pr
# gitlink-release gitlink-branch gitlink-ci gitlink-org
# gitlink-search gitlink-user gitlink-wiki gitlink-webhook
# gitlink-workflow
```
---
## 🔐 配置与认证
### 初始化配置
```bash
# 交互式配置
gitlink-cli config init
```
配置文件位置:`~/.config/gitlink-cli/config.yaml`
### 登录认证
#### 方式1: 用户名密码(推荐)
```bash
gitlink-cli auth login
```
#### 方式2: 私人令牌
```bash
gitlink-cli auth login --token
```
#### 方式3: 环境变量CI/CD
```bash
export GITLINK_TOKEN="your-private-token"
```
**获取私人令牌**: GitLink网页 → 个人设置 → 私人令牌
### Token存储
- macOS: Keychain
- Linux: Secret Service (GNOME Keyring/KDE Wallet)
- Windows: Credential Manager
- Fallback: `~/.config/gitlink-cli/credentials`
---
## 🌍 平台特定说明
### macOS
#### Homebrew安装即将支持
```bash
# 添加tap
brew tap gitlink/gitlink
# 安装
brew install gitlink-cli
# 更新
brew upgrade gitlink-cli
# 卸载
brew uninstall gitlink-cli
```
#### 权限处理
```bash
# 如果遇到权限问题,安装到用户目录
curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | \
INSTALL_DIR=$HOME/.local/bin bash
# 添加到PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
```
---
### Linux
#### 包管理器安装(即将支持)
**Debian/Ubuntu**:
```bash
# 添加GitLink APT仓库即将支持
sudo apt install gitlink-cli
```
**CentOS/RHEL**:
```bash
# 添加GitLink YUM仓库即将支持
sudo yum install gitlink-cli
```
#### 权限处理
```bash
# 无sudo安装到用户目录
mkdir -p $HOME/.local/bin
curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | \
INSTALL_DIR=$HOME/.local/bin bash
# 添加到PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
```
---
### Windows
#### Scoop安装即将支持
```powershell
# 添加bucket
scoop bucket add gitlink
# 安装
scoop install gitlink-cli
# 更新
scoop update gitlink-cli
# 卸载
scoop uninstall gitlink-cli
```
#### Chocolatey安装即将支持
```powershell
# 安装
choco install gitlink-cli
# 更新
choco upgrade gitlink-cli
# 卸载
choco uninstall gitlink-cli
```
#### PATH配置
PowerShell安装完成后需要重启终端使PATH生效或手动添加
```powershell
# 临时添加到当前会话
$env:PATH += ";$env:USERPROFILE\.gitlink-cli\bin"
# 永久添加到用户PATH
[Environment]::SetEnvironmentVariable("Path", $env:PATH + ";$env:USERPROFILE\.gitlink-cli\bin", "User")
```
---
## 🔧 高级配置
### 配置文件
位置:`~/.config/gitlink-cli/config.yaml`
```yaml
# API配置
base_url: https://www.gitlink.org.cn/api
gateway_url: https://gateway.gitlink.org.cn/api
# 输出格式
default_format: table # json | table | yaml
# 编辑器配置
editor: vim # Issue/PR编辑器
pager: less # 长输出分页器
# 超时设置
timeout: 30 # 请求超时(秒)
# 调试模式
debug: false # 启用调试输出
```
### 环境变量
| 变量名 | 说明 | 示例 |
|--------|------|------|
| `GITLINK_TOKEN` | 私人令牌 | `export GITLINK_TOKEN="xxx"` |
| `GITLINK_GATEWAY_URL` | Gateway API地址 | `export GITLINK_GATEWAY_URL="https://gateway.gitlink.org.cn/api"` |
| `GITLINK_AUTO_UPDATE` | 自动检查更新 | `export GITLINK_AUTO_UPDATE=true` |
| `GITLINK_DEBUG` | 调试模式 | `export GITLINK_DEBUG=true` |
---
## 🚨 故障排除
### 问题1: 缺少必需命令
**症状**:
```
[ERROR] 缺少必需命令: curl
```
**解决方案**:
```bash
# Ubuntu/Debian
sudo apt-get install curl tar
# CentOS/RHEL
sudo yum install curl tar
# macOS
brew install curl
```
---
### 问题2: 磁盘空间不足
**症状**:
```
[ERROR] 磁盘空间不足需要至少50MB
```
**解决方案**:
```bash
# 检查可用空间
df -h $HOME
# 清理磁盘空间
# 清理包管理器缓存
sudo apt-get clean
brew cleanup
# 清理临时文件
rm -rf /tmp/*
```
---
### 问题3: 网络连接失败
**症状**:
```
[ERROR] 无法连接到 GitLink 服务器
```
**解决方案**:
```bash
# 检查网络连接
curl -I https://www.gitlink.org.cn
# 使用代理
export https_proxy=http://127.0.0.1:7890
# 或手动下载
# 访问 https://www.gitlink.org.cn/Gitlink/gitlink-cli/releases
```
---
### 问题4: 权限被拒绝
**症状**:
```
Permission denied: /usr/local/bin/gitlink-cli
```
**解决方案**:
```bash
# 方案1: 使用sudo
sudo bash install.sh
# 方案2: 安装到用户目录
curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | \
INSTALL_DIR=$HOME/.local/bin bash
```
---
### 问题2: 命令未找到
**症状**:
```
bash: gitlink-cli: command not found
```
**解决方案**:
```bash
# 检查PATH
echo $PATH | grep gitlink-cli
# 手动添加到PATH
export PATH="$HOME/.local/bin:$PATH"
# 永久添加
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
```
---
### 问题3: 下载失败
**症状**:
```
curl: (7) Failed to connect
```
**解决方案**:
```bash
# 检查网络连接
curl -I https://www.gitlink.org.cn
# 使用代理
export https_proxy=http://127.0.0.1:7890
# 手动下载安装
# 1. 访问 https://www.gitlink.org.cn/Gitlink/gitlink-cli/releases
# 2. 下载对应平台的压缩包
# 3. 解压并添加到PATH
```
---
### 问题4: npm安装失败
**症状**:
```
npm ERR! EACCES
```
**解决方案**:
```bash
# 方案1: 修复npm权限
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH="~/.npm-global/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# 方案2: 使用sudo不推荐
sudo npm install -g @gitlink-ai/cli
```
---
### 问题5: Skills未安装
**症状**:
```
Skills目录不存在或为空
```
**解决方案**:
```bash
# 手动安装Skills
npx skills add https://www.gitlink.org.cn/Gitlink/gitlink-cli.git -y -g
# 或从本地安装
npx skills add ./skills -y -g
# 使用专用命令
gitlink-cli-install-skills
```
---
## 📊 安装成功标准
### 检查清单
完成安装后,请验证以下内容:
- [ ] `gitlink-cli --version` 显示版本信息
- [ ] `gitlink-cli auth status` 可查看登录状态
- [ ] `gitlink-cli user +me` 可获取用户信息
- [ ] `~/.gitlink/skills/` 目录包含13个Skills
- [ ] 二进制文件在PATH中
- [ ] 配置文件已创建
### 快速测试
```bash
# 1. 查看版本
gitlink-cli version
# 2. 配置
gitlink-cli config init
# 3. 登录
gitlink-cli auth login
# 4. 测试命令
gitlink-cli user +me
# 5. 查看仓库列表
gitlink-cli repo +list
```
---
## 🔄 更新
### npm安装
```bash
# 更新到最新版本
npm update -g @gitlink-ai/cli
# 或重新安装
npm uninstall -g @gitlink-ai/cli
npm install -g @gitlink-ai/cli
```
### 脚本安装
```bash
# 重新运行安装脚本(会覆盖旧版本)
curl -sSL https://www.gitlink.org.cn/Gitlink/gitlink-cli/raw/master/install.sh | bash
```
---
## ❓ 常见问题
### Q1: 需要哪些系统权限?
**A**:
- **一键脚本**: 需要`sudo`权限(安装到系统目录)
- **npm**: 需要全局npm写入权限
- **源码构建**: 需要Go环境和写入权限
### Q2: 可以安装多个版本吗?
**A**: 不建议。CLI工具通常会覆盖安装。如需多版本可以使用Docker或版本管理工具。
### Q3: 离线环境如何安装?
**A**:
```bash
# 在在线环境下载完整包
wget https://releases.gitlink.org.cn/gitlink-cli/gitlink-cli-full-v0.2.0.tar.gz
# 在离线环境安装
tar -xzf gitlink-cli-full-v0.2.0.tar.gz
cd gitlink-cli
./install.sh --offline
```
### Q4: 安装后如何配置默认编辑器?
**A**:
```bash
# 方法1: 配置文件
vim ~/.config/gitlink-cli/config.yaml
# 添加: editor: vim
# 方法2: 环境变量
export EDITOR=vim
# 方法3: 命令行参数
gitlink-cli issue +create --editor vim
```
### Q5: Skills占多少空间
**A**: Skills大约占用5-10MB空间包含12个完整的AI Agent技能包。
---
## 📞 获取帮助
如有安装问题,请:
1. 🐛 提交Issue: https://www.gitlink.org.cn/Gitlink/gitlink-cli/issues
2. 📖 查看文档: https://www.gitlink.org.cn/Gitlink/gitlink-cli
3. 💬 查看卸载指南: [doc/UNINSTALL.md](./UNINSTALL.md)
4. 📧 联系支持: support@gitlink.org.cn
---
## 🎯 下一步
安装完成后,建议:
1. ✅ 运行 `gitlink-cli config init` 初始化配置
2. ✅ 运行 `gitlink-cli auth login` 登录账号
3. ✅ 查看 [README.md](../README.md) 了解基本使用
4. ✅ 浏览 [Skills指南](../skills/README.md) 了解AI功能
---
**最后更新**: 2026-06-04
**相关文档**: [UNINSTALL.md](./UNINSTALL.md) | [README.md](../README.md)