linux ollama 下载安装

linux ollama 下载安装

  • ollama 下载地址
  • ollama 手动安装
    • 解决找不到命令的问题
      • 升级[gcc](https://so.csdn.net/so/search?q=gcc&spm=1001.2101.3001.7020)
        • Centos7 停止维护之后 [升级gcc||找不到devtoolset-8-gcc* 问题解决方案](https://www.cnblogs.com/Jedi-Pz/p/18447117)(连接)
          • 修改 CentOS-SCLo-scl.repo
          • 修改 CentOS-SCLo-scl-rh.repo
          • 刷新缓存
      • make
      • 更新libstdc++.so.6.0.26
      • 更新[glibc](https://so.csdn.net/so/search?q=glibc&spm=1001.2101.3001.7020)
      • 参考连接
  • 启动 ollama
    • 配置 systemctl
    • 刷新systemctl文件
    • 启动 systemctl
  • 测试
    • 下载一个qwen2.5:3b模型
    • 发送一个聊天请求
    • 使用Golang调用 Ollama

ollama 下载地址

下载: https://ollama.com/download/linux
github; https://github.com/ollama/ollama

ollama 手动安装


curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
sudo tar -C /usr -xzf ollama-linux-amd64.tgz

执行完上边的命令, 安装基本就算完成了, 不过因为系统版本问题, 还会出现找不到命令的问题

解决找不到命令的问题

升级gcc

# 升级GCC(默认为4 升级为8)
yum install -y centos-release-scl bison
yum install -y devtoolset-8-gcc*
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++

ps 在执行 yum install -y devtoolset-8-gcc* 命令时可能会出现下图的报错, 这是因为 Centos7 停止维护之后 升级gcc||找不到devtoolset-8-gcc* 不用担心能解决

Centos7 停止维护之后 升级gcc||找不到devtoolset-8-gcc* 问题解决方案(连接)
修改 CentOS-SCLo-scl.repo
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/sclo/
# mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
修改 CentOS-SCLo-scl-rh.repo
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
# mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rh
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
刷新缓存
yum repolist
yum clean all
yum makecache

上边三步都执行完了以后再yum install -y devtoolset-8-gcc* 就没问题了

make

# 升级 make(默认为3 升级为4)
wget http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
tar -xzvf make-4.3.tar.gz && cd make-4.3/
./configure  --prefix=/usr/local/make
make && make install
cd /usr/bin/ && mv make make.bak
ln -sv /usr/local/make/bin/make /usr/bin/make

更新libstdc++.so.6.0.26

# 更新lib libstdc++.so.6.0.26wget https://cdn.frostbelt.cn/software/libstdc%2B%2B.so.6.0.26
# 替换系统中的/usr/lib64
cp libstdc++.so.6.0.26 /usr/lib64/
cd /usr/lib64/
ln -snf ./libstdc++.so.6.0.26 libstdc++.so.6

更新glibc

wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar xf glibc-2.28.tar.gz 
cd glibc-2.28/ && mkdir build  && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make && make install

参考连接

https://blog.csdn.net/my_errors/article/details/146333105

https://www.cnblogs.com/Jedi-Pz/p/18447117

启动 ollama

nohup ollama serve  &> output.log & 后台启动ollama 日志输出到 output.log 文件中
ollama create        #从模型文件创建模型
ollama show          #显示模型信息
ollama run           #运行模型
ollama pull          #从注册表中拉取模型
ollama push          #将模型推送到注册表
ollama list          #列出模型
ollama cp            #复制模型
ollama rm            #删除模型
ollama help          #获取有关任何命令的帮助信息

这几个命令打出来没问题了, 就可以配置 systemctl 进行管理

配置 systemctl

vim /etc/systemd/system/ollama.service[Unit]
Description=Ollama Service
After=network-online.target[Service]
ExecStart=/usr/bin/ollama serve
User=启动ollama 的用户名
Group=启动ollama 的用户 组
Restart=always
RestartSec=3
# 加上这两个环境变量是为了让ollama在外部可以正常访问
# 同时也要看防火墙和平台端口出入规则
Environment="OLLAMA_HOST=0.0.0.0:11424"
Environment="OLLAMA_ORIGINS=*"[Install]
WantedBy=default.target

刷新systemctl文件

systemctl daemon-reload
systemctl enable ollama

启动 systemctl

# 关闭后台启动的ollama
ps aux | grep ollama
kill 进程号
# 重新启动 ollama
systemctl start ollama

到这里基本上是安装完了, 不出意外的话, 可以调用接口进行对话了

测试

下载一个qwen2.5:3b模型

ollama run qwen2.5:3b
更多模型参考 https://ollama.com/library/qwen2.5:3b
我的服务器只有8G内存, 下载个小的, 太大了运行不用起来

发送一个聊天请求

# 
curl --location --request POST 'http://8.139.5.142:11434/api/chat' \
--header 'Content-Type: application/json' \
--data-raw '{"model":"qwen2.5:3b","messages":[{"role":"user","content":"您好"}],"stream":false
}'

使用Golang调用 Ollama

package mainimport ("bytes""encoding/json""fmt""net/http""os""time"
)type Request struct {Model    string    `json:"model"`Messages []Message `json:"messages"`Stream   bool      `json:"stream"`
}type Message struct {Role    string `json:"role"`Content string `json:"content"`
}type Response struct {Model              string    `json:"model"`CreatedAt          time.Time `json:"created_at"`Message            Message   `json:"message"`Done               bool      `json:"done"`TotalDuration      int64     `json:"total_duration"`LoadDuration       int       `json:"load_duration"`PromptEvalCount    int       `json:"prompt_eval_count"`PromptEvalDuration int       `json:"prompt_eval_duration"`EvalCount          int       `json:"eval_count"`EvalDuration       int64     `json:"eval_duration"`
}const defaultOllamaURL = "http://localhost:11434/api/chat"func main() {start := time.Now()msg := Message{Role:    "user",Content: "您好",}req := Request{Model:    "gemma3:1b",Stream:   false,Messages: []Message{msg},}resp, err := talkToOllama(defaultOllamaURL, req)if err != nil {fmt.Println(err)os.Exit(1)}fmt.Println(resp.Message.Content)fmt.Printf("Completed in %v", time.Since(start))
}func talkToOllama(url string, ollamaReq Request) (*Response, error) {js, err := json.Marshal(&ollamaReq)if err != nil {return nil, err}client := http.Client{}httpReq, err := http.NewRequest(http.MethodPost, url, bytes.NewReader(js))if err != nil {return nil, err}httpResp, err := client.Do(httpReq)if err != nil {return nil, err}defer httpResp.Body.Close()ollamaResp := Response{}err = json.NewDecoder(httpResp.Body).Decode(&ollamaResp)return &ollamaResp, err
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85349.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 渗透工具:【中国蚁剑】连接一句话MUA文件 远控虚拟机靶机

温馨提示: 本程序仅作为虚拟机测试环境使用,请勿用于任何不当用途。使用即表示您同意自行承担可能产生的所有责任。 一、场景复现 1、PhpMystudy软件启动网页模拟靶机 小皮面板(phpstudy) - 让天下没有难配的服务器环境! 2、开启apache 3、…

Datawhale 网络爬虫技术入门第2次笔记

正则表达式 正则表达式(Regular Expression),⼀种使⽤表达式的⽅式对字符串进⾏匹配的语法规则。 正则的语法:使⽤元字符进⾏排列组合来匹配字符串。 在线测试正则表达式:在线正则表达式测试OSCHINA.NET在线工具,os…

详解Redis的集群模式(主从复制、哨兵与Cluster)

一、主从复制 (Master-Slave Replication) 1. 基本概念 主从复制是Redis最简单的集群模式,由一个主节点(Master)和一个或多个从节点(Slave)组成。 2. 工作原理 数据同步:从节点启动时会向主节点发送SYNC命令,主节点执行BGSAVE生成RDB文件并…

如何使用 Airtest 对 Flutter 和 Unity 应用进行UI自动化测试

使用 Airtest 进行 Flutter/Unity UI 自动化测试终极指南 一、 核心原理:为什么 Airtest 能行? 要理解如何用,先要明白其原理。Airtest 采取了“两条腿走路”的策略,这正是它能通吃各种UI技术的关键。 第一条腿:基于…

河马剧场多部自制剧霸榜,短剧精品化战略持续推进

临近暑期,短剧市场热度逐渐攀升。近期,DataEye发布6月9日—6月15日微短剧热力榜显示河马剧场以8部作品占据TOP30近三分之一席位,前三名中更是占据2个席位,以题材多元化、用户覆盖广、数据爆发力强的特点引领行业风向。其中&#x…

幂级数 (0,R); R ;(R,+oo)

很好,我们现在来回答你问的这个问题: 🟠 幂级数在收敛半径 R R R 以外会发生什么? 我们考虑一个一般形式的幂级数: ∑ n 0 ∞ a n ( x − x 0 ) n \sum_{n0}^{\infty} a_n (x - x_0)^n n0∑∞​an​(x−x0​)n 它的…

C#学习13——正则表达式

一、正则表达式 是一种匹配输入文本的模式,是由特殊字符组成,用于匹配字符串中的字符组合。 二、正则表达式有哪些? 1.Regex 类(引入System.Text.RegularExpressions;) Regex 类用于表示一个正则表达式。 1&#…

【Redis】持久化机制:RDB / AOF 的应用与场景

文章目录 Redis 持久化一、RDB1.1 说明1.2 触发机制手动触发自动触发 1.3 流程说明1.4 文件处理1.5 优缺点 & 适用场景 二、AOF2.1 说明2.2 使用 AOF2.3 命令写入2.4 文件同步2.5 重写机制2.6 启动时数据恢复2.7 优缺点 & 适用场景 三、不使用 AOF / RDB 的情况3.1 场景…

Python 企业级开发与DevOps实践

https://www.python.org/static/community_logos/python-logo-master-v3-TM.png 大型项目结构与设计模式 项目结构规范 text 复制 下载 enterprise_app/ ├── docs/ # 项目文档 ├── tests/ # 测试代码 │ ├── unit/ …

E结构体基础.go

前言:结构体是一种用户自定义的数据类型,它可以将多个不同类型的数据整合在一起,形成一个有机的整体。这就好比在现实生活中,我们有各种各样的物品,它们各自有不同的属性和用途,而结构体就像是一个收纳箱&a…

Spring @Autowired 依赖注入全解析

Autowired 是 Spring 框架中实现依赖注入的核心注解,其自动装配过程可分为以下步骤,结合了类型匹配、名称解析和容器协作机制: 1. 组件扫描与 Bean 定义注册 扫描阶段:Spring 容器启动时,通过 ComponentScan 或 XML 配…

将git的普通目录用idea初始化为maven项目

在 IntelliJ IDEA 中将一个已存在的 Git 目录初始化为 Maven 项目,可以通过以下步骤完成。这些步骤假设你已经有一个包含代码的 Git 仓库,并希望将其转换为 Maven 项目结构,以便更好地管理依赖和构建。 步骤 1:打开或导入 Git 仓库…

Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建

一、key 属性的核心作用 在 Vue 中,key是一个特殊的属性,主要用于协助 Vue 的虚拟 DOM(Virtual DOM)算法高效地更新实际 DOM。它的核心作用可以概括为: 唯一标识节点:为每个节点提供一个唯一的身份标识优化 Diff 算法:帮助 Vue 准确判断两个节点是否为同一节点(如for循…

【音视频】PJSIP库——示例简介、C++类说明

1、简介 pjsip库的源码中有很多示例,是入门pjsip的第一手资料,下面将各个示例所演示的功能列举出来,以便下一步学习; 最后总结下C++接口主要类及成员函数说明。 2、示例介绍 2.1 音视频处理 aectest 音频回声消除测试工具,用于演示音频处理模块中的回声消除(AEC)功能…

网站用CDN可以防DDoS和CC攻击吗?

现在市面上常见有两种CDN,加速CDN与高防CDN,这两种的区别还是很大的。 加速CDN: 加速CDN基本上都是共享、无防节点,主要做的是加速,所以价格也会相对较低,大陆地区的CDN都需要备案域名接入使用。 高防CD…

【图片识别改名】批量识别图片中的文字对图片进行改名,识别文字对图片重新命名的操作步骤和注意事项

一、应用场景 快递单号识别与管理:在快递业务中,每天会产生大量的快递面单图片。通过咕嘎OCR批量识别面单上的快递单号等关键信息,并以此对图片进行重命名,方便工作人员快速查询和管理快递包裹的物流信息,提高快递处理…

先理解软件工程,再谈AI辅助研发

摘要: 近期行业内对“AI赋能软件工程”的讨论,大多聚焦于代码生成等局部提效,这是一种危险的短视。本文旨在纠正将“软件开发”等同于“编码”的普遍误解,深入探讨软件工程的系统性本质。我们将论证,若缺乏坚实的工程体…

Android软件适配遥控器需求-案例经验分享

不分大屏产品需要有遥控器功能,这里分享部分实战经验 文章目录 前言一、案例部分效果图二、项目基础架构三、焦点基础知识适配遥控器基础-焦点问题焦点管理明确焦点状态布局实现硬编码实现引入第三方自定义组件实现 焦点顺序作用 初始焦点 requestFocus 按键处理获取…

《HTTP权威指南》 第3章 HTTP报文

报文是如何流动的 HTTP报文是在HTTP程序之间发送的数据块。数据块以一些文本形式的元信息开头。 报文方向有:流入、流出、上游、下游。 流入和流出描述事务处理的方向,流入和流出是基于服务器的描述。 流入:客户端发往服务器的请求报文 流…

Kafka 集群架构与高可用方案设计(二)

Kafka 集群架构与高可用方案的优化策略 合理配置参数 在 Kafka 集群的配置中,参数的合理设置对于系统的高可用性和性能表现起着关键作用。例如,min.insync.replicas参数定义了 ISR(In-Sync Replicas,同步副本)集合中…