mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-05-23 00:52:50 +00:00
fix(ollama): handle macOS tgz flat layout
macOS releases are a flat tgz (bare ollama binary + libggml dylibs + mlx_metal dirs at the archive root), unlike Linux (bin/ollama + lib/ollama/ hierarchy). Detect macOS via uname -s, set pkg_src_cmd/pkg_dst_cmd to the root-level binary, and move the full archive root into ~/.local/opt/ollama-vX.Y.Z/ in one pass.
This commit is contained in:
@@ -2,62 +2,79 @@
|
||||
# shellcheck disable=SC2034
|
||||
|
||||
__init_ollama() {
|
||||
set -e
|
||||
set -u
|
||||
set -e
|
||||
set -u
|
||||
|
||||
##################
|
||||
# Install ollama #
|
||||
##################
|
||||
##################
|
||||
# Install ollama #
|
||||
##################
|
||||
|
||||
# Every package should define these 6 variables
|
||||
pkg_cmd_name="ollama"
|
||||
# Every package should define these 6 variables
|
||||
pkg_cmd_name="ollama"
|
||||
|
||||
pkg_dst_cmd="${HOME}/.local/opt/ollama/bin/ollama"
|
||||
pkg_dst_dir="${HOME}/.local/opt/ollama"
|
||||
pkg_dst="${pkg_dst_dir}"
|
||||
pkg_dst_dir="${HOME}/.local/opt/ollama"
|
||||
pkg_dst="${pkg_dst_dir}"
|
||||
|
||||
pkg_src_cmd="${HOME}/.local/opt/ollama-v${WEBI_VERSION}/bin/ollama"
|
||||
pkg_src_dir="${HOME}/.local/opt/ollama-v${WEBI_VERSION}"
|
||||
pkg_src="${pkg_src_dir}"
|
||||
pkg_src_dir="${HOME}/.local/opt/ollama-v${WEBI_VERSION}"
|
||||
pkg_src="${pkg_src_dir}"
|
||||
|
||||
# pkg_install must be defined by every package
|
||||
pkg_install() {
|
||||
# ~/.local/opt/
|
||||
mkdir -p "$(dirname "${pkg_src_dir}")"
|
||||
# linux default: bin/ollama + lib/ollama/ hierarchy
|
||||
pkg_dst_cmd="${HOME}/.local/opt/ollama/bin/ollama"
|
||||
pkg_src_cmd="${HOME}/.local/opt/ollama-v${WEBI_VERSION}/bin/ollama"
|
||||
|
||||
if test -d ./ollama-*/; then
|
||||
# the de facto way (in case it's supported in the future)
|
||||
# mv ./ollama-*/ ~/.local/opt/ollama-v3.27.0/
|
||||
mv ./ollama-*/ "${pkg_src}"
|
||||
elif test -d ./bin; then
|
||||
# how linux is presently done
|
||||
mkdir -p "${pkg_src_dir}"
|
||||
mv ./bin "${pkg_src_dir}"
|
||||
if test -f ./lib; then
|
||||
mv ./lib "${pkg_src_dir}"
|
||||
fi
|
||||
else
|
||||
# how macOS is presently done
|
||||
mkdir -p "$(dirname "${pkg_src_cmd}")"
|
||||
mv ./ollama-* "${pkg_src_cmd}"
|
||||
fi
|
||||
my_os=$(uname -s)
|
||||
if test "Darwin" = "${my_os}"; then
|
||||
pkg_dst_cmd="${HOME}/.local/opt/ollama/ollama"
|
||||
pkg_src_cmd="${HOME}/.local/opt/ollama-v${WEBI_VERSION}/ollama"
|
||||
fi
|
||||
|
||||
# remove previous location
|
||||
if test -f ~/.local/bin/ollama; then
|
||||
rm ~/.local/bin/ollama
|
||||
fi
|
||||
}
|
||||
# pkg_install must be defined by every package
|
||||
pkg_install() {
|
||||
if test -f ./ollama; then
|
||||
# macOS tgz: flat — bare binary + dylibs/mlx backends in root
|
||||
mkdir -p "${pkg_src_dir}"
|
||||
mv ./* "${pkg_src_dir}/"
|
||||
chmod a+x "${pkg_src_cmd}"
|
||||
elif test -d ./bin; then
|
||||
# linux tar.zst: bin/ollama + lib/ollama/
|
||||
mkdir -p "${pkg_src_dir}"
|
||||
mv ./bin "${pkg_src_dir}/bin"
|
||||
if test -d ./lib; then
|
||||
mv ./lib "${pkg_src_dir}/lib"
|
||||
fi
|
||||
elif test -d ./Ollama.app; then
|
||||
# macOS zip: install app bundle to /Applications
|
||||
mv -f ./Ollama.app /Applications/Ollama.app
|
||||
elif test -f ./ollama-*; then
|
||||
# older bare binary format
|
||||
mkdir -p "$(dirname "${pkg_src_cmd}")"
|
||||
mv ./ollama-* "${pkg_src_cmd}"
|
||||
chmod a+x "${pkg_src_cmd}"
|
||||
else
|
||||
echo "error: unrecognized ollama archive format" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_get_current_version() {
|
||||
# 'ollama --version' has output in this format:
|
||||
# ollama version is 0.3.10
|
||||
# This trims it down to just the version number:
|
||||
# 0.3.10
|
||||
ollama --version 2> /dev/null |
|
||||
head -n 1 |
|
||||
cut -d' ' -f4 |
|
||||
sed 's:^v::'
|
||||
}
|
||||
pkg_link() {
|
||||
if test -d /Applications/Ollama.app; then
|
||||
mkdir -p "${HOME}/.local/bin"
|
||||
ln -sf /Applications/Ollama.app/Contents/Resources/ollama "${HOME}/.local/bin/ollama"
|
||||
return 0
|
||||
fi
|
||||
webi_link
|
||||
}
|
||||
|
||||
pkg_get_current_version() {
|
||||
# 'ollama --version' has output in this format:
|
||||
# ollama version is 0.3.10
|
||||
# This trims it down to just the version number:
|
||||
# 0.3.10
|
||||
ollama --version 2> /dev/null |
|
||||
head -n 1 |
|
||||
cut -d' ' -f4 |
|
||||
sed 's:^v::'
|
||||
}
|
||||
}
|
||||
|
||||
__init_ollama
|
||||
|
||||
Reference in New Issue
Block a user