梅林固件离线安装提示“检测到非法关键词”的解决方法
本文针对旧版梅林改版软件中心离线安装包时的“安装包名含非法关键词”提示,涉及 /koolshare/scripts/ks_tar_install.sh 中的 detect_package 调用。历史方法要求 arm380/X7.x 固件的软件中心为 1.4.8 或以上;这不是对所有新版软件中心的兼容承诺。
先核对固件、软件中心和插件的版本及安装包来源。若当前版本已改变脚本路径或检测逻辑,应使用该维护者的安装说明;文件不存在时,不要为了套用本文而新建同名脚本。解除关键词检测也不能解决插件架构不匹配或安装包本身的问题。
检查脚本并备份
在局域网内开启路由器 SSH,登录后检查目标文件和相关行:
sh
install_script='/koolshare/scripts/ks_tar_install.sh'
ls -l "$install_script"
grep -n 'detect_package' "$install_script"阅读匹配行附近的代码,区分函数定义、注释与真正执行的调用。下方示例只修改“独占一行、没有参数的 detect_package 调用”。若调用带有参数、条件或其他语句,不适用此替换。
确认目标正确后备份,保留终端中显示的完整备份路径:
sh
install_backup="${install_script}.bak.$(date +%Y%m%d-%H%M%S)"
cp -p "$install_script" "$install_backup"
printf '%s\n' "$install_backup"只有复制成功、备份文件可读后才继续。如果后面重新登录 SSH,应重新设置 install_script,并把 install_backup 指向这次已经存在的备份,不要用新时间戳替代旧路径。
预览修改,再替换文件
先生成候选文件,不直接原地修改:
sh
install_candidate="${install_backup}.candidate"
sed 's/^\([[:space:]]*\)detect_package[[:space:]]*$/\1# detect_package/' \
"$install_script" > "$install_candidate"
grep -n 'detect_package' "$install_candidate"
diff -u "$install_backup" "$install_candidate"diff 返回 1 表示文件有差异,应检查差异是否仅为预期调用前加了 #。若没有差异、出现读取错误,或改动超出预期,停止处理。不要扩大正则去注释所有包含同名字符串的行。
先对候选文件做 shell 语法检查;只有该命令成功退出后,才复制回原路径:
sh
sh -n "$install_candidate"sh
cp "$install_candidate" "$install_script"
grep -n 'detect_package' "$install_script"重新执行一次离线安装并阅读完整日志,确认是否已越过关键词检测,以及插件安装本身是否成功。没有再次出现关键词提示,不等于插件已经正确安装或运行。
恢复与后续升级
若需要恢复,先确认备份属于当前这个软件中心版本,再复制回来:
sh
cp -p "$install_backup" "$install_script"
sh -n "$install_script"软件中心升级可能替换脚本。升级后重新检查实际文件,不把旧脚本备份覆盖到新版本上,也不自动重放历史替换命令。
旧文还记录过梅林 386 改版升级后插件状态显示双叉、通过兼容版本离线覆盖安装恢复的情况。若遇到相同现象,应先按当前插件维护者的说明核对版本和日志,再决定是否覆盖安装;双叉状态不能单独证明是关键词检测造成的。