⌨️在OpenWRT上使用Neovim

2024-8-26|2025-1-1
Yawatasensei
Yawatasensei
type
status
date
slug
summary
tags
category
icon
password
🖥️
因为自己经常需要通过SSH对家里的网络进行调试,包括主路由的配置、旁路由(旁路网关)的配置、OpenClash、Adguard home、MosDNS等等,频繁的需要用到一个舒服的编辑器对jsonyaml以及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命令,这个的解决方法为:
报错内容变更为:
提示找不到GettextGettext目前没有安装包的一类的快捷安装方法,我们需要通过编译进行安装
然后继续尝试执行neovim的编译,返回错误
我们通过创建存根库绕过:
到这里,基本上编译已经完成,我们可以进行安装
二进制的执行文件在/usr/local/bin下,我们可以直接移动到/usr/bin或者软连接过去。之后如果想安装astronvim或者lazyvim可以直接进行执行相关安装命令。

🤗 总结归纳

OPKG安装依赖

PIP安装依赖CMAKE

编译安装Gettext

创建存根库

拉取Neovim库并编译安装

完成后nvim二进制文件位于/usr/local/bin

直接下载Neovim二进制文件

如果你不想自己进行编译,恰巧你也是X86_64架构的OpenWRT,那么也可以直接下载我编译好的二进制文件进行使用。

📎 参考文章

 
💡
有关OpenWRT安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
借助Cloudflare为网站开启HTTP/3OpenClash + Mosdns + ADG如何防止DNS泄露?
Loading...