Mac系统,如何设置OLLAMA_HOST环境变量?
发布于 作者:苏南大叔 来源:程序如此灵动~

这大模型相关技术的学习,实在是太耗费硬件资源了!所以,苏南大叔把这些相关软件分散的安装在了多个电脑上面。本文描述在mac
电脑上面安装ollama
,并设置环境变量的问题,实在是有些打破认知。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10@22h2
,mac@13.7.6
。没想到一个简简单单的设置环境变量,在mac
系统上竟有这么多麻烦的事情。
ollama
ollama
在windows
系统下的基本安装,及安装deepseek
大模型的方案,参考文章:
在mac
系统下,下载到ollama
的安装包后,也需要有个安装的过程。安装完成后,得到了:
ollama
命令行,位置:/usr/local/bin/ollama
。- 托盘区的小图标
ollama.app
,和windows
下的情况差不多。 - 在系统=>通用=>启动项里面,自动启动的
ollama.app
。plist
名称是:application.com.electron.ollama.17407221.17407227
。
那么,下一步设置OLLAMA_HOST
环境变量,开启非本机的访问权限。故事从此展开。
由于mac
系统就一个分区,并且软链接功能强大,所以,设置OLLAMA_MODELS
变量似乎没有必要。所以,这里仅仅设置OLLAMA_HOST
。
分支一:命令行的环境变量
大家对于mac
环境变量的概念,就起源于命令行的配置文件。而mac
系统的命令行,经历了从bash
到zsh
的转变。
bash
的配置文件:~/.bash_profile
和~/.profile
。【已弃用】zsh
的配置文件:~/.zshrc
。
为了兼容以前的配置,
- 会在
zsh
的配置文件中,执行source ~/.profile
。 - 按照既往经验,只需要修改文件
~/.zshrc
,增加下面的代码即可。
export OLLAMA_HOST="0.0.0.0:11434"
然而,托盘区退出,再次启动ollama.app
之后,OLLAMA_HOST
没有生效!但是打开命令行界面(zsh
或者item2
)后,执行ollama serve
命令,生效了!
分支二:软件界面的环境变量
在mac
系统中,这些点击图标打开的软件的环境变量,是不读取~/.zshrc
等等配置文件的,它们有着其它的环境变量逻辑。
其实在.pist
文件中直接执行bash
或者zsh
,它们也是默认不读取配置文件的。
通过下面的命令进行设置:
launchctl setenv OLLAMA_HOST 0.0.0.0:11434
可以通过下面的命令检查是否设置成功:
launchctl getenv OLLAMA_HOST
执行后,再通过图标打开ollama.app
就可以生效了。
然而,故事还没有完。这个设置环境变量的命令,重启电脑就失效了!或者说注销当前用户后,这个环境变量就失效了。当然,鉴于苹果电脑有不关机的传统,这个launchctl setenv
方案也算是可以解决问题。
plist
完美解决方案
为了追求更加完美的解决方案,可以考虑通过.plist
编辑开机启动项。当然了,事情发展到这里,解决方案就非常多了,待后续补充。这里就先说一个苏南大叔认为最完美的解决方案。
新增com.sunan.test.plist
(名称随意,但是名字字母排序会影响启动顺序)文件,位置/Users/sunan/Library/LaunchAgents/
(意味着用户登陆之后才会被执行):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.sunan.test</string>
<key>EnvironmentVariables</key>
<dict>
<key>OLLAMA_HOST</key>
<string>0.0.0.0:11434</string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/ollama</string>
<string>serve</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
然后执行命令:
launchctl load ~/Library/LaunchAgents/com.sunan.test.plist
不能执行多次load
,会报错input or output error
。所以适当的时候,可以执行:
launchctl unload ~/Library/LaunchAgents/com.sunan.test.plist
同时,也可以看到,苏南大叔在这里写的.plist
脚本,可能会被系统标记为了“不明开发者”,同时会在执行的时候在右上角进行重点提示。这种方案下,重启系统后,依然也是生效的。
这个plist
所表述的方式,类似下面这条常见的node
项目的语句:
OLLAMA_HOST=0.0.0.0:11434 && /usr/local/bin/ollama serve
所以,这是第三种传递环境变量的方式:在可执行文件命令行之前,增加环境变量传递。
结语
当然了,本文的实践过程中,对通过.plist
文件控制水果电脑的开机启动项的方式,有了更深的认知。后续再新开文章,对本文的第三种情况,展开讨论。


