ollama编译安装@focal jammy Ubuntu @FreeBSD jail

 Ollama是一个用于在本地运行大型语言模型(LLM)的开源框架。它支持多种操作系统,但是唯独不支持FreeBSD,于是尝试在FreeBSD的jail里安装Ubuntu,Ubuntu里再安装ollama。

先上结论,好像focal jail无法编译成功,jammy jail还没做实验,jammy bhyve可以编译安装成功。

如果go的版本较低,需要升级go版本。

ollama最快的安装方法是直接执行:

curl -fsSL https://ollama.com/install.sh | sh

但是国内速度非常慢,可以选择编译安装 

如果jail需要sudo -S才能用sudo,那么需要修改install.sh文件,把里面的sudo改成sudo -S 

ollama编译安装

首先下载软件

git clone https://github.com/ollama/ollama

然后到ollama目录执行go generate:

go generate ./...

这段时间较长 ,因为要编译llama.cpp等包。最后generate完成

+ git checkout examples/llava/clip.cpp
Updated 0 paths from the index
+ for patch in ../patches/*.diff
++ grep '^+++ ' ../patches/09-pooling.diff
++ cut -f2 '-d '
++ cut -f2- -d/
+ for file in $(grep "^+++ " ${patch} | cut -f2 -d' ' | cut -f2- -d/)
+ cd ../llama.cpp
+ git checkout src/llama.cpp
Updated 0 paths from the index
++ cd ../build/linux/x86_64/cpu_avx2/..
++ echo cpu cpu_avx cpu_avx2
+ echo 'go generate completed.  LLM runners: cpu cpu_avx cpu_avx2'
go generate completed.  LLM runners: cpu cpu_avx cpu_avx2

然后build

go build .

如果go比较慢,可以加速:

#启用 Go Modules 功能
export GO111MODULE=on
#配置 GOPROXY 环境变量
export GOPROXY=https://goproxy.io

如果Ubuntu没有安装一些依赖包,那么可以apt安装

apt install cmake go

Ubuntu 版本里面自带的go版本较低,若build ollama的时候报错,需要升级go到新版本

升级go操作

下载go软件地址:All releases - The Go Programming Language 

从上面下载地址找到自己需要的平台版本,然后使用wget下载软件:

https://go.dev/dl/go1.22.5.linux-amd64.tar.gz

wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gz

 解压缩

tar -xzvf go1.22.5.linux-amd64.tar.gz

解压缩之后直接添加路径就能使用新版本了:

export PATH=/home/skywalk/download/go/bin:$PATH

路径设好,新版本go安装完了,这样就能愉快的使用go的新版本拉!

go加速网站:GOPROXY.IO - A Global Proxy for Go Modules

加速命令: 

# Set the GOPROXY environment variable
export GOPROXY=https://goproxy.io,direct
# Set environment variable allow bypassing the proxy for specified repos (optional)
export GOPRIVATE=git.mycompany.com,github.com/my/private

调试

build报错cannot load cmp: malformed module path "cmp": 

build的死后报错信息: 

go: finding github.com/leodido/go-urn v1.4.0
build github.com/ollama/ollama: cannot load cmp: malformed module path "cmp": missing dot in first path element

难道目录一定要github.com ? 改成github.com目录,还是报错

build github.com/ollama/ollama: cannot load cmp: malformed module path "cmp": missing dot in first path element

原来不是目录的事,我就说不能要求父目录的格式啊,况且以前也没碰到过要改目录名的情况。最终发现是go版本低的问题,改成go的1.23.x新版本,问题解决!

安装go新版本的方法见上面,也可以参考文章:Ubuntu linux安装新版本go-CSDN博客

jail里sudo 报错Name or service not known

root@ubfocal:~# sudo ls
sudo: unable to resolve host ubfocal.my.domain: Name or service not known

sudo倒是能执行,但是有报错,强迫症受不了,于是找到解决方法:
写host的文件,加入主机名和带域名的主机名

cat /etc/hosts
127.0.0.1	localhost
127.0.0.1 ubfocal
127.0.0.1 ubfocal.my.domain

jail里个人用户sudo报错sudo: a terminal is required to read the password; either use the -S option

这是普通Ubuntu装机用户永远也不会碰到的问题,只有在FreeBSD里的linux jail里才会碰到,众所周知FreeBSD的用户占比很小,再安装Jail,jail里再安装Ubuntu的,就更少了,所以这个问题非常罕见。

~$ sudo ls
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper

按照报错提示,使用sudo -S 后面跟要执行的命令,问题解决。如果是在install.sh这样的执行文件里用到了sudo指令,需要打文件里加上-S参数。
 

jail里个人用户git clone报错open /dev/null or dup failed: Permission denied

@ubfocal:~/github.com$ git clone --deptch 1 https://github.com/ollama/ollama
fatal: open /dev/null or dup failed: Permission denied
@ubfocal:~/github.com$ ls -l /dev/null
-rw-r--r-- 1 root root 0 Jul 13 07:59 /dev/null

解决方法,把/dev/null权限设为 666

sudo chmod 666 /dev/null

问题解决

用bhyve jammy Ubuntu环境go generate的时候说go版本低

发现bhyve jammy Ubuntu里的go版本1.18,使用apt不方便提高go版本,于是想了个投机取巧的办法:

修改go.mod文件,把 第三行go 1.22.0改成go 1.23  

可以蒙混过去,但是后面go build . 的时候还是报错了

go build .
server/images.go:5:2: package cmp is not in GOROOT (/usr/lib/go-1.18/src/cmp)
envconfig/config.go:6:2: package log/slog is not in GOROOT (/usr/lib/go-1.18/src/log/slog)
gpu/amd_linux.go:12:2: package slices is not in GOROOT (/usr/lib/go-1.18/src/slices)
 

这样证明还是无法投机取巧。只能升级go版本了。

 安装go新版本的方法见上面,也可以参考文章:Ubuntu linux安装新版本go-CSDN博客

安装 CentOS 上的 Ollama 可以分为以下几个步骤: 1. 下载 CentOS 的 ISO 镜像文件。 2. 创建一个可引导的安装介质,例如制作启动盘或者使用虚拟机。 3. 在启动介质上选择安装 CentOS,并按照向导进行操作。 4. 在安装 CentOS 后,使用 root 用户登录系统。 5. 安装 Ollama 所需的依赖库和工具,例如 Git、Python 等。 6. 下载 Ollama 源码并进行编译安装。 7. 配置 Ollama 的运行环境和参数。 下面是一个比较详细的安装步骤说明: 1. 下载 CentOS 的 ISO 镜像文件 可以在 CentOS 官方网站上下载最新版本的 ISO 镜像文件,链接如下:https://www.centos.org/download/ 选择合适的版本、镜像类型和下载方式进行下载。 2. 创建一个可引导的安装介质 使用制作启动盘或者使用虚拟机的方式创建一个可引导的安装介质,并将下载好的 CentOS ISO 镜像文件挂载到介质上。 3. 安装 CentOS 在启动介质上选择安装 CentOS,并按照向导进行操作。注意在安装时需要选择合适的分区和网络设置,建议在安装时选择开启 SSH 服务。 4. 使用 root 用户登录系统 安装完成后,使用 root 用户登录系统。 5. 安装 Ollama 所需的依赖库和工具 在 root 用户下执行以下命令,安装 Ollama 所需的依赖库和工具: ``` yum install git python3 python3-pip gcc-c++ make cmake openssl-devel -y ``` 6. 下载 Ollama 源码并进行编译安装 在 root 用户下执行以下命令,下载 Ollama 源码并进行编译安装: ``` git clone https://github.com/masquerade817/ollama.git cd ollama mkdir build && cd build cmake .. make -j4 make install ``` 7. 配置 Ollama 的运行环境和参数 在安装完成后,可以在 /etc/ollama/ 目录下找到配置文件,例如 ollama.conf。可以根据需要进行修改配置文件,例如修改监听端口、调整日志级别等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值