tiup update self升级逻辑问题

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】v7.1.5
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
新用户,新装的tiup,执行tiup tiup list就相当于安装了tiup tiup,然后升级self 就不好用了
默认就变成了升级tiup tiup而不再升级tiup

官方是把tiup本身也变成了一个组件,但这样容易误导人,还麻烦了~ 建议禁用

你这个tiup本身就是1.16的吧


我试着mirror set 可以升级

你这显示tiup有两个版本


v1.16.0-nightly-5
v1.16.0
你都装了?

1 个赞
  • 在tiup server 里 tiup 和 playground、tidb 一样都是作为 coponent 存储没有特殊处理

  • 老版本 tiup 按字符串匹配,禁止 tiup install tiup 等 操作,并且 tiup update --self 是更新 ~/.tiup/bin/tiup

  • 新版本 tiup (也没那么新,感觉改了快一年了)因为用户有升级 tiup 到指定版本需求,加上当时的一些其他需求。所以最终实现方式是放开2提到的限制并增加 tiup link xxx 命令来将 component 的软链接添加到 $PATH. 就是保留源方式下保留了另一种安装升级方式(~/.tiup/bin/tiup → ~/.tiup/components/tiup/vx.x.x/tiup)

  • 回到这个用户问题,其实是因为 tiup update --self, tiup update xxx 和 tiup xxx 都复用了一个安装 component 的函数,在第一种场景下跳过检测是否已安装就可以了

fix tiup cannot update itself when tiup comonent exist by kaaaaaaang · Pull Request #2443 · pingcap/