我们相信:世界是美好的,你是我也是。 来玩一下解压小游戏吧!

这大模型相关技术的学习,实在是太耗费硬件资源了!所以,苏南大叔把这些相关软件分散的安装在了多个电脑上面。本文描述在mac电脑上面安装ollama,并设置环境变量的问题,实在是有些打破认知。

苏南大叔:Mac系统,如何设置OLLAMA_HOST环境变量? - mac-ollama-host-hero
Mac系统,如何设置OLLAMA_HOST环境变量?(图1-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10@22h2mac@13.7.6。没想到一个简简单单的设置环境变量,在mac系统上竟有这么多麻烦的事情。

ollama

ollamawindows系统下的基本安装,及安装deepseek大模型的方案,参考文章:

mac系统下,下载到ollama的安装包后,也需要有个安装的过程。安装完成后,得到了:

  • ollama命令行,位置:/usr/local/bin/ollama
  • 托盘区的小图标ollama.app,和windows下的情况差不多。
  • 在系统=>通用=>启动项里面,自动启动的ollama.appplist名称是:application.com.electron.ollama.17407221.17407227

那么,下一步设置OLLAMA_HOST环境变量,开启非本机的访问权限。故事从此展开。

由于mac系统就一个分区,并且软链接功能强大,所以,设置OLLAMA_MODELS变量似乎没有必要。所以,这里仅仅设置OLLAMA_HOST

分支一:命令行的环境变量

大家对于mac环境变量的概念,就起源于命令行的配置文件。而mac系统的命令行,经历了从bashzsh的转变。

  • 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文件控制水果电脑的开机启动项的方式,有了更深的认知。后续再新开文章,对本文的第三种情况,展开讨论。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   mac    ollama