linkease / istore

一个 Openwrt 标准的软件中心,纯脚本实现,只依赖Openwrt标准组件。支持其它固件开发者集成到自己的固件里面。更方便入门用户搜索安装插件。The iStore is a app store for OpenWRT
MIT License
1.51k stars 332 forks source link

【已解决】在istore商店中,安装插件时,提示/bin/is-opkg: line 77: arithmetic syntax error #147

Open IySANCamille opened 2 weeks ago

IySANCamille commented 2 weeks ago

======================================================================================== 首先叠个甲,我没有任何linux过往经验都是现查现学,但有一些python基础,也就是略微略微能看得懂,剩下全是通过问AI解决的。。。

提示/bin/is-opkg的第77行有错,具体是啥错问AI 然后就是SSH用vim /bin/is-opkg去看一下,如下 image

看也看不出来啥,把这段复制出来问了一下AI,总的来说这段就是用来判断一下你还有多少空间装你选的那个插件 AI答说可能会有一些语法错误或者变量没赋值会导致这种错误,所以就深入问了一下每一段代码的含义

主要问题在这一段代码,这是获取可用空间的代码 image

然后AI自己写了一些自认为修正了的代码 image AI也给了用echo打印每一段看看问题在哪的改法 image

然后就发现,echo "Free space in KB: $free_kb"这段代码并不能正确打印出来可用空间,而且下面转换出来的MB单位的也是0 反推这些发现,因为源代码我理解是写成了一个整体,导致根本就没有值,所以会报一个那种没赋值的错误

然后就是再深入检查为啥没有值返回,用AI提供的办法,在openwrt的ssh终端下尝试 image

我尝试df -h /的结果是正常的,返回了正确的结果,openwrt安在了哪,占用多少,可用多少,百分比这些 image

但是把AI改写的,与源代码第77行相同效果的代码复制进来就发现根本返回不了任何东西,这里没图。。。 然后再拆分这段代码,并用AI提供的另一种方法一点一点组合提取的代码 image

最终自己稍微改了改提取的值,发现一个问题就是,/dev/mapper/pve-vm--101--disk--0我的这段太长了,导致后面占用空间可用空间那些信息跑到所谓的第三行去了,而awk 'NR==2 {print $4}'里的2和4指的第二行第4列,所以第二行只有第一个这个路径,根本没有后面那些信息。所以最终把源代码这里的2和4改成3和3,reboot的一下,插件就不报错顺利下载了

====================================================================================== 记录一下发现的这个问题,希望能帮到各位 另外如果有其他可能得问题,希望大佬提出,我也不懂,只是这么改完了感觉能用

IySANCamille commented 2 weeks ago

我是把商店原先的0.1.25更新到0.1.26出现的这个问题,0.1.25为什么没有而0.1.26有我懒得再研究怎么单独装0.1.25了,我刚开始研究nas这些东西,耗费很长时间了,总之我也不知道为啥0.1.26会有这个问题

jjm2473 commented 2 weeks ago

直接在你的软路由终端执行df -k / | awk 'NR==2 {print $4}'看看输出什么

jjm2473 commented 2 weeks ago

直接执行df -k /看看输出什么,如果报错,那就再执行df --help看看支持哪些参数。还有提供下固件信息,是否openwrt或者istoreos

jjm2473 commented 2 weeks ago

这AI也是傻,明明代码中使用的命令是df -k /,它却让你用df -h /来测试,这能测出来才怪了。

IySANCamille commented 3 days ago

这AI也是傻,明明代码中使用的命令是df -k /,它却让你用df -h /来测试,这能测出来才怪了。

哈哈哈哈哈哈,我第一次用,也没啥基础,试过df -k / | awk 'NR==2 {print $4}'了,没有任何返回,就是因为前面名字太长跑到第三排去了,我也不知道为啥改了一下就好了