kylin v10 sp1 (2403) amd64 firefox-esr v115.9.0esr+build2-0kylin0.20.04.1~mtkylin2 的 preinst 第61行代码缺陷

kylin v10 sp1 (2403) amd64 firefox-esr v115.9.0esr+build2-0kylin0.20.04.1~mtkylin2 的 preinst 第61行代码缺陷

2025.2.13


准备解压 …/firefox-esr_115.9.0esr+build2-0kylin0.20.04.1~mtkylin2_amd64.deb .

/var/lib/dpkg/tmp.ci/preinst: 61: [: Illegal number: v10
正在解压 firefox-esr (115.9.0esr+build2-0kylin0.20.04.1~mtkylin2) 并覆盖 (78.6.0
esr+build1-0kylin7) …

查看 preinst 源码,第61行

gedit /var/lib/dpkg/info/firefox-esr.preinst &

第59-61行,内容如下:

major=`lsb_release -r | awk '{print $2}' | cut -d '.' -f 1`
version=`lsb_release -r | awk '{print $2}'`
if [ "$major" -lt 10 ] && [ "$version" != "9.10" ]; then
    disable_profile
else

分析:
kylin v10 里,用 lsb_release -r 命令,输出的版本号是 v10, 不是纯数字。所以在 比大小时,会报错。(如果是 openkylin 系统,则是应该无此异常)

修补方案(仅供参考.仅适用 kylin 的 v10 版本):

major=`lsb_release -r | awk '{print $2}' | cut -d '.' -f 1`

改成

major=`lsb_release -rs | sed '/v/s///'`

说明:

  • lsb_release 的 -s 参数,代表输出格式为 short 简要模式。
  • 管道后面的 sed 指令,表示 如果找到字母 v, 则直接删除 字母 v (即把原始版本数据 v10,转化为 纯数字 10)