-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall_ollama.sh
More file actions
executable file
·198 lines (173 loc) · 6.51 KB
/
install_ollama.sh
File metadata and controls
executable file
·198 lines (173 loc) · 6.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#!/usr/bin/env bash
set -euo pipefail
echo "🤖 安装 Ollama AI 引擎..."
echo "============================================================"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
PURPLE='\033[0;35m'
NC='\033[0m' # No Color
# 检查是否以 root 权限运行
if [[ $EUID -eq 0 ]]; then
echo -e "${RED}❌ 错误:请不要使用 root 权限运行此脚本${NC}"
echo -e "${YELLOW}💡 请使用普通用户权限运行${NC}"
exit 1
fi
# 检查 clashmeta 是否运行
echo -e "${BLUE}🔍 检查 clashmeta 代理状态...${NC}"
if ! pgrep -f "clashmeta" > /dev/null; then
echo -e "${RED}❌ 错误:clashmeta 代理未运行${NC}"
echo -e "${YELLOW}💡 请先运行:sudo bash install_clash.sh${NC}"
exit 1
fi
# 检查代理端口
if ! netstat -tlnp 2>/dev/null | grep -q ":7890"; then
echo -e "${RED}❌ 错误:代理端口 7890 未监听${NC}"
echo -e "${YELLOW}💡 请检查 clashmeta 配置${NC}"
exit 1
fi
echo -e "${GREEN}✅ clashmeta 代理运行正常${NC}"
# 设置代理环境变量
echo -e "${BLUE}🔧 设置代理环境变量...${NC}"
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
export ALL_PROXY=socks5://127.0.0.1:7890
echo -e "${GREEN}✅ 代理环境变量设置完成${NC}"
echo -e "${CYAN}📡 使用代理: http://127.0.0.1:7890${NC}"
# 检查 Ollama 是否已安装
if command -v ollama >/dev/null 2>&1; then
echo -e "${YELLOW}⚠️ Ollama 已安装,版本信息:${NC}"
ollama --version
echo -e "${YELLOW}💡 如需重新安装,请先卸载现有版本${NC}"
read -p "是否继续安装?(y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo -e "${BLUE}⏭️ 跳过安装${NC}"
exit 0
fi
fi
# 安装 Ollama
echo -e "${BLUE}📦 开始安装 Ollama...${NC}"
echo -e "${CYAN}📥 下载安装脚本: https://ollama.com/install.sh${NC}"
# 使用代理下载并安装
if curl -fsSL --proxy http://127.0.0.1:7890 https://ollama.com/install.sh | sh; then
echo -e "${GREEN}✅ Ollama 安装成功${NC}"
else
echo -e "${RED}❌ Ollama 安装失败${NC}"
echo -e "${YELLOW}💡 请检查网络连接和代理设置${NC}"
exit 1
fi
# 验证安装
echo -e "${BLUE}🔍 验证 Ollama 安装...${NC}"
# 清除命令缓存,确保使用新安装的ollama
echo -e "${CYAN}🔄 清除命令缓存...${NC}"
hash -r
# 重新加载PATH环境变量
echo -e "${CYAN}🔄 重新加载环境变量...${NC}"
export PATH="/usr/local/bin:$PATH"
if command -v ollama >/dev/null 2>&1; then
echo -e "${GREEN}✅ Ollama 命令可用${NC}"
ollama --version
else
echo -e "${YELLOW}⚠️ 尝试使用完整路径验证...${NC}"
if [ -f "/usr/local/bin/ollama" ]; then
echo -e "${GREEN}✅ Ollama 已安装到 /usr/local/bin/ollama${NC}"
/usr/local/bin/ollama --version
echo -e "${YELLOW}💡 如果命令不可用,请运行: hash -r${NC}"
else
echo -e "${RED}❌ Ollama 安装验证失败${NC}"
exit 1
fi
fi
# 启动 Ollama 服务
echo -e "${BLUE}🚀 启动 Ollama 服务...${NC}"
if ! pgrep -f "ollama serve" > /dev/null; then
echo -e "${CYAN}📡 启动 Ollama 服务进程...${NC}"
nohup ollama serve > /tmp/ollama.log 2>&1 &
sleep 3
if pgrep -f "ollama serve" > /dev/null; then
echo -e "${GREEN}✅ Ollama 服务启动成功${NC}"
else
echo -e "${YELLOW}⚠️ Ollama 服务启动可能失败,请检查日志${NC}"
fi
else
echo -e "${GREEN}✅ Ollama 服务已在运行${NC}"
fi
# 等待服务完全启动
echo -e "${BLUE}⏳ 等待 Ollama 服务完全启动...${NC}"
sleep 5
# 检查服务状态
if curl -s --proxy http://127.0.0.1:7890 http://localhost:11434/api/tags > /dev/null 2>&1; then
echo -e "${GREEN}✅ Ollama 服务响应正常${NC}"
else
echo -e "${YELLOW}⚠️ Ollama 服务可能未完全启动,继续尝试...${NC}"
fi
# 显示已安装的模型
echo -e "${BLUE}📋 已安装的模型列表:${NC}"
if ollama list; then
echo -e "${GREEN}✅ 模型列表获取成功${NC}"
else
echo -e "${YELLOW}⚠️ 无法获取模型列表${NC}"
fi
# 创建启动脚本
echo -e "${BLUE}📝 创建 Ollama 启动脚本...${NC}"
cat > ~/start_ollama.sh << 'EOF'
#!/usr/bin/env bash
echo "🚀 启动 Ollama 服务..."
if ! pgrep -f "ollama serve" > /dev/null; then
nohup ollama serve > /tmp/ollama.log 2>&1 &
echo "✅ Ollama 服务已启动"
else
echo "⚠️ Ollama 服务已在运行"
fi
EOF
chmod +x ~/start_ollama.sh
echo -e "${GREEN}✅ 启动脚本创建完成: ~/start_ollama.sh${NC}"
# 创建停止脚本
echo -e "${BLUE}📝 创建 Ollama 停止脚本...${NC}"
cat > ~/stop_ollama.sh << 'EOF'
#!/usr/bin/env bash
echo "🛑 停止 Ollama 服务..."
if pkill -f "ollama serve"; then
echo "✅ Ollama 服务已停止"
else
echo "⚠️ Ollama 服务未运行或已停止"
fi
EOF
chmod +x ~/stop_ollama.sh
echo -e "${GREEN}✅ 停止脚本创建完成: ~/stop_ollama.sh${NC}"
# 安装完成
echo ""
echo -e "${GREEN}🎉 Ollama 安装完成!${NC}"
echo "============================================================"
echo -e "${BLUE}📋 安装内容:${NC}"
echo -e "${YELLOW} ✅ Ollama AI 引擎${NC}"
echo -e "${YELLOW} ✅ 启动脚本: ~/start_ollama.sh${NC}"
echo -e "${YELLOW} ✅ 停止脚本: ~/stop_ollama.sh${NC}"
echo ""
echo -e "${BLUE}🌐 服务信息:${NC}"
echo -e "${YELLOW} 📡 服务端口: 11434${NC}"
echo -e "${YELLOW} 🔗 API 地址: http://localhost:11434${NC}"
echo -e "${YELLOW} 📚 模型管理: ollama list${NC}"
echo -e "${YELLOW} 🚀 启动服务: ~/start_ollama.sh${NC}"
echo -e "${YELLOW} 🛑 停止服务: ~/stop_ollama.sh${NC}"
echo ""
echo -e "${BLUE}💡 下一步操作:${NC}"
echo -e "${YELLOW} 1. 下载AI模型: bash download_models.sh${NC}"
echo -e "${YELLOW} 2. 启动服务: ~/start_ollama.sh${NC}"
echo -e "${YELLOW} 3. 查看模型: ollama list${NC}"
echo -e "${YELLOW} 4. 使用模型: ollama run <model_name> '你的问题'${NC}"
echo ""
echo -e "${GREEN}🎯 安装完成!现在可以使用 Ollama 进行 AI 对话了${NC}"
echo ""
echo -e "${BLUE}🔧 故障排除:${NC}"
echo -e "${YELLOW} 如果遇到 'ollama: command not found' 错误,请运行:${NC}"
echo -e "${YELLOW} hash -r${NC}"
echo -e "${YELLOW} 或者使用完整路径: /usr/local/bin/ollama${NC}"
echo "============================================================"