如何在 Ubuntu 下无障碍安装 Ollama:通过手动下载和修改脚本解决网络问题的完整指南
在这篇博客中,我将带你一步步在 Ubuntu 系统中安装 Ollama,并特别讲解如何通过手动下载必要文件并修改安装脚本,解决在使用官方安装脚本时可能遇到的网络问题。这样,即使你在受限的网络环境中,也能顺利完成 Ollama 的安装。
前提条件
在开始安装 Ollama 之前,请确保你具备以下条件:
- 操作系统:Ubuntu 20.04 或更高版本
- 用户权限:需要具备
sudo
权限 - 网络连接:稳定的互联网连接或能够通过其他设备下载文件的条件
此外,建议更新系统包以确保依赖环境是最新的:
sudo apt update && sudo apt upgrade -y
打开官网最简单的一键安装方式
curl -fsSL https://ollama.com/install.sh | sh
如果你的网络环境ok的话,这个是最方便的安装方式,全自动化脚本,一键搞定。
然鹅,网络常常并不会如人意。这就需要一些魔法。我折腾了很多方式,发现了如下的最好的途径,不敢藏私,赶紧分享出来。
一、手动下载安装文件
由于直接使用官网推荐的安装脚本可能在某些网络环境下无法顺利完成,我们可以通过手动下载所需文件,然后上传至服务器进行安装。
1. 下载必要文件
在一台可以访问互联网的机器上,先下载以下两个文件:
-
安装脚本
install.sh
:curl -O https://ollama.com/install.sh
-
Ollama 安装包
ollama-linux-amd64.tgz
:前往 Ollama 官方下载页面,找到适合你的系统架构的安装包(这里以
amd64
为例),然后下载。
2. 上传文件至 Ubuntu 服务器
将下载的 install.sh
和 ollama-linux-amd64.tgz
文件上传到你需要安装 Ollama 的 Ubuntu 服务器上。可以使用 scp
命令或其他文件传输工具,如下所示:
scp install.sh ollama-linux-amd64.tgz username@your-server-ip:/path/to/destination
替换 username
和 your-server-ip
以及目标路径 /path/to/destination
为实际情况。
3. 修改安装脚本
上传文件到服务器后,需要对 install.sh
脚本进行一些修改,以确保它可以使用你手动下载的安装包。
1. 编辑 install.sh
脚本
使用你喜欢的文本编辑器(如 vim
或 nano
)打开 install.sh
文件:
vim install.sh
2. 修改脚本以使用本地安装包
找到脚本中负责下载和解压 ollama-linux-amd64.tgz
的部分,添加以下代码来使用本地文件:
# 添加这行代码,用于输出使用本地文件的状态信息
status "Using local file ollama-linux-amd64.tgz"
# 使用本地下载的 ollama-linux-amd64.tgz 文件
$SUDO tar -xzf "ollama-linux-amd64.tgz" -C "$OLLAMA_INSTALL_DIR"
为了避免大家修改错地方,我直接上传我的GPU服务器版本的安装脚本文件。
我也将我的完整的sh文件代码贴上:
#!/bin/sh
# This script installs Ollama on Linux.
# It detects the current operating system architecture and installs the appropriate version of Ollama.
set -eu
status() {
echo ">>> $*" >&2; }
error() {
echo "ERROR $*"; exit 1; }
warning() {
echo "WARNING: $*"; }
TEMP_DIR=$(mktemp -d)
cleanup() {
rm -rf $TEMP_DIR; }
trap cleanup EXIT
available() {
command -v $1 >/dev/null; }
require() {
local MISSING=''
for TOOL in $*; do
if ! available $TOOL; then
MISSING="$MISSING $TOOL"
fi
done
echo $MISSING
}
[ "$(uname -s)" = "Linux" ] || error 'This script is intended to run on Linux only.'
ARCH=$(uname -m)
case "$ARCH" in
x86_64) ARCH="amd64" ;;
aarch64|arm64) ARCH="arm64" ;;
*) error "Unsupported architecture: $ARCH" ;;
esac
IS_WSL2=false
KERN=$(uname -r)
case "$KERN" in
*icrosoft*WSL2 | *icrosoft*wsl2) IS_WSL2=true;;
*icrosoft) error "Microsoft WSL1 is not currently supported. Please upgrade to WSL2 with 'wsl --set-version <distro> 2'" ;;
*) ;;
esac
VER_PARAM="${OLLAMA_VERSION:+?version=$OLLAMA_VERSION}"
SUDO=
if [ "$(id -u)" -ne 0 ]; then
# Running as root, no need for sudo
if ! available sudo; then
error "This script requires superuser permissions. Please re-run as root."
fi