提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
由于在Linux服务上使用官方提供的命令 curl -fsSL https://ollama.com/install.sh | sh
会存在网络问题,无法下载,所以手动安装ollama很有必要
一、Github 下载Ollama离线文件
https://github.com/ollama/ollama/releases 从这个地址下载Ollama离线安装文件。并保存在服务器位置。例如保存位置为 /home/Ollama.tgz
二、修改sh文件
下载https://ollama.com/install.sh
提供的sh文件,修改其中的部分内容即可,一共需要修改两个位置。1是原有的下载命令,2是指定文件位置。原理是用本地的离线文件代替下载过程。
1. 注释掉原有下载命令
这是原有的shell脚本,大概在第60-70行左右,对比下面两段内容。1.不需要最外层的if-else判断,删掉else部分的内容以及if判断条件。2. curl 部分注释掉。3. tar解压命令换成步骤一中的文件保存的位置。在这个例子中是/home/Ollama.tgz
, 依据实际情况来改
if curl -I --silent --fail --location "https://ollama.com/download/ollama-linux-${ARCH}.tgz${VER_PARAM}" >/dev/null ; then
status "Downloading Linux ${ARCH} bundle"
curl --fail --show-error --location --progress-bar \
"https://ollama.com/download/ollama-linux-${ARCH}.tgz${VER_PARAM}" | \
$SUDO tar -xzf - -C "$OLLAMA_INSTALL_DIR"
BUNDLE=1
if [ "$OLLAMA_INSTALL_DIR/bin/ollama" != "$BINDIR/ollama" ] ; then
status "Making ollama accessible in the PATH in $BINDIR"
$SUDO ln -sf "$OLLAMA_INSTALL_DIR/ollama" "$BINDIR/ollama"
fi
else
status "Downloading Linux ${ARCH} CLI"
curl --fail --show-error --location --progress-bar -o "$TEMP_DIR/ollama"\
"https://ollama.com/download/ollama-linux-${ARCH}${VER_PARAM}"
$SUDO install -o0 -g0 -m755 $TEMP_DIR/ollama $OLLAMA_INSTALL_DIR/ollama
BUNDLE=0
if [ "$OLLAMA_INSTALL_DIR/ollama" != "$BINDIR/ollama" ] ; then
status "Making ollama accessible in the PATH in $BINDIR"
$SUDO ln -sf "$OLLAMA_INSTALL_DIR/ollama" "$BINDIR/ollama"
fi
fi
替换为下面这段内容
74 status "Downloading Linux ${ARCH} bundle"
75 # curl --fail --show-error --location --progress-bar \
76 # "https://ollama.com/download/ollama-linux-${ARCH}.tgz${VER_PARAM}" | \
77 $SUDO tar -xzf ./ollama-linux-amd64.tgz -C "$OLLAMA_INSTALL_DIR"
78 BUNDLE=1
79 if [ "$OLLAMA_INSTALL_DIR/bin/ollama" != "$BINDIR/ollama" ] ; then
80 status "Making ollama accessible in the PATH in $BINDIR"
81 $SUDO ln -sf "$OLLAMA_INSTALL_DIR/ollama" "$BINDIR/ollama"
82 fi
2.完整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;</