描述#
家内网的媒体服务器已经部署好了流媒体,但目前只能在内网进行访问,如果出门在外也能看家里的动漫就好了,所以准备给 openwrt 公开到外网去。
采用的方案自然是动态 ddns,因为电信宽带有动态公网 IP。
当我准备去开启 ddns 功能的时候发现软件包被禁用了,启动项也无法重启 ddns。
虽然不确定是不是固件版本的问题,但重装软件包可能可以解决,抱着试一试的心态打开软件包准备安装的时候,不出意外的话这种时候就出意外了
* pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.104-1-c3ae984cf3530f6fa5bf8738be620d7b) for kmod-crypto-aead
* pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.104-1-c3ae984cf3530f6fa5bf8738be620d7b) for kmod-crypto-manager
* pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.104-1-c3ae984cf3530f6fa5bf8738be620d7b) for kmod-crypto-ecb
* pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.104-1-c3ae984cf3530f6fa5bf8738be620d7b) for kmod-mppe
由于内核版本问题,无法安装 ddns 插件
原因#
openwrt 中每个大小版本均有对应的 md5 值,即指纹,例如’c3ae984cf3530f6fa5bf8738be620d7b‘这样一串字符。报错是因为个人编译的版本的指纹是经过修改的,通常论坛或者其他途径下载来的大佬编译的” 高大全 “版均经过修改,导致与官方软件包的指纹不匹配,进而产生无法安装软件包的问题
解决办法#
通过 ssh 的方式连接 openwrt
cd /usr/lib/opkg/ && cp status status.bak
vi status
:%s/c3ae984cf3530f6fa5bf8738be620d7b/e469f5589b4c7b368924a6e4f8f7407f/g
替换 status 文件中的指纹,例如我的 openwrt 指纹是c3ae984cf3530f6fa5bf8738be620d7b
用官方版本e469f5589b4c7b368924a6e4f8f7407f
进行替换
Tip
在 vi 编辑器中%s
是替换文字的指令,用冒号呼出编辑器的控制台进行执行
如果这样也没能解决😱。。。那还是重新换一个固件进行安装吧