type
status
date
slug
summary
tags
category
icon
password
因为自己经常需要通过SSH对家里的网络进行调试,包括主路由的配置、旁路由(旁路网关)的配置、OpenClash、Adguard home、MosDNS等等,频繁的需要用到一个舒服的编辑器对
json
、yaml
以及xml
等配置文件或结构化数据文件进行修改。我在本地环境中使用较多的是NeoVim,之前也分享过LazyVim的文章。而在OpenWRT的系统软件仓库中,目前还没有这个软件的ipk,所以今天就将我自己在OpenWRT上进行编译安装NeoVim的过程以及遇到的坑整理出来。📝 Neovim安装配置
开始之前
为避免编译安装过程中产生不可控的问题,我在这篇教程中用一个全新虚拟机环境。固件来源于ImmortalWrt Firmware,Generic
x86/64
架构,版本号为23.05.3
,内核版本为5.15.162
,没有额外添加任何预安装软件包,与默认提供的软件包一致,可用空间尽量大,这次操作我的实际使用空间大概在1.2G左右,但是在安装完成之后可以进行移除。 同时,建议在开始下面的操作之前,如果你是已经在使用的OpenWRT系统,建议做好备份,如果是虚拟机系统,建议添加检查点或备份点。
编译安装流程开始
以下内容是在OpenWRT内编译安装Neovim的全部流程。如果不想看流程,可以直接看总结。
首先通过opkg进行软件仓库源更新。
返回结果为
Signature check passed.
且没有报错继续下一步由于我们需要通过git方式克隆neovim在github上的仓库,所以需要这两个软件包,其中
git-http
用于在SSL情况下使用git,非SSL模式Github不支持克隆拉取仓库。期间,包括依赖在内,总共安装的软件包括:
git, git-http, zlib, libcurl4, libnghttp2-14
通过
git clone
进行neovim的仓库拉取,并尝试执行make
返回错误结果
原因是我们没有make的软件包,通过opkg进行安装,并再次尝试
make
返回错误结果:
提示不存在
cmake
。Openwrt并不提供cmake的安装文件,但是我们可以通过python-pip
的方式进行曲线安装,目前主流的Python版本为Python3。之后再进行
make
时提示:意思时没有找到c编译器,我们可以安装
gcc
解决这次编译了很长时间,直到在安装
luajit
时进行报错:我们直接用
opkg
安装然后继续尝试执行
make
,这次报错变了:提示我们没有ld命令没有
ldl
这个参数的选项。 通过查看openwrt的文档可以发现,这些库中的函数实际上已经直接包含在musl libc
中。然而,由于某些工具尝试显式链接这些库,你可能会遇到“No Such file or directory
”的错误。为了解决这个问题,只需为它们创建存根库即可。使用Vi建立一个
sh
文件vi run.sh
,并在文件中输入以下内容:然后继续尝试
make CMAKE_BUILD_TYPE=RelWithDebInfo
,这次报错内容变更为:提示为没有
install
命令,这个的解决方法为:报错内容变更为:
提示找不到
Gettext
。Gettext
目前没有安装包的一类的快捷安装方法,我们需要通过编译进行安装然后继续尝试执行neovim的编译,返回错误
我们通过创建存根库绕过:
到这里,基本上编译已经完成,我们可以进行安装
🤗 总结归纳
OPKG安装依赖
PIP安装依赖CMAKE
编译安装Gettext
创建存根库
拉取Neovim库并编译安装
完成后
nvim
二进制文件位于/usr/local/bin
内直接下载Neovim二进制文件
如果你不想自己进行编译,恰巧你也是
X86_64
架构的OpenWRT,那么也可以直接下载我编译好的二进制文件进行使用。📎 参考文章
有关OpenWRT安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~