V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hankli
V2EX  ›  程序员

一个工具管理所有运行时版本!

  •  5
     
  •   hankli ·
    aooohan · 266 天前 · 11645 次点击
    这是一个创建于 266 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这两天特意补了一下文档.

    文档: https://vfox.lhan.me/zh-hans/

    仓库: https://github.com/version-fox/vfox

    目前社区已支持的 SDK:

    plugins

    主要是可以在 Windows(非 WSL)下, 体验到和 asdf 一样的效果. 当然比它要棒哈哈哈哈.

    第 1 条附言  ·  266 天前
    第 2 条附言  ·  265 天前
    世界上最好的语言已经作为 good first issue 啦, 有兴趣的朋友可以尝试一下!

    https://github.com/version-fox/vfox/issues/55

    一定会支持! ;)
    第 3 条附言  ·  265 天前
    受宠若惊, 没想到上榜了, 感谢大家支持!!!!
    96 条回复    2024-03-24 19:14:12 +08:00
    hankli
        1
    hankli  
    OP
       266 天前
    自己当一楼
    githmb
        2
    githmb  
       266 天前   ❤️ 1
    牛逼,已 star
    stimw
        3
    stimw  
       266 天前 via Android
    stimw
        4
    stimw  
       266 天前 via Android   ❤️ 1
    @stimw 啊我看到了 支持 Windows
    hankli
        5
    hankli  
    OP
       266 天前
    @stimw yes! asdf 这个形式我很喜欢, 但是不支持 Windows 就有点鸡肋了. 哈哈哈哈
    hankli
        6
    hankli  
    OP
       266 天前
    crazyweeds
        7
    crazyweeds  
       266 天前
    如果有 GUI 的话,感觉还行。如果没有,那么我手动来其实感觉也可以。虽然我知道这个工具可能可以帮我自己下载之类的。
    hankli
        8
    hankli  
    OP
       266 天前
    @crazyweeds https://github.com/version-fox/vfox/issues/8 一开始是有 GUI 打算的, 但是精力有限, 先做好核心和插件生态 吧
    twofox
        9
    twofox  
       266 天前   ❤️ 1
    可以,start 一下,晚点试一下
    w292614191
        10
    w292614191  
       266 天前   ❤️ 5
    我还以为是右下角右键菜单 > jdk > 1.8,11,17,选择然后切换呢。

    敲命令没啥意思
    hankli
        11
    hankli  
    OP
       266 天前
    @w292614191 你这个想法💡很好啊卧槽!, 这个适合放到 GUI 上实现, 目前没有. 这只是个核心.
    charlie21
        12
    charlie21  
       266 天前 via Android
    sdkman
    smallboy19991231
        13
    smallboy19991231  
       266 天前 via iPhone
    这个好像很厉害的样子,如果有 gui 版本就舒服了
    hankli
        14
    hankli  
    OP
       266 天前
    @charlie21 sdkman unix-like 下也不错, 但是 Windows 下需要 WSL. 另外数据源是 sdkman 自己维护的, 而 vfox 插件都是直接解析的官网. 0 成本. 哈哈哈
    HaiboZ
        15
    HaiboZ  
       266 天前   ❤️ 1
    看了网站介绍就觉得想法很不错,下载试了一下,真的好用👍👍👍,以后切换版本太爽了,再也不用翻文件夹了
    NeroKamin
        16
    NeroKamin  
       266 天前 via iPhone   ❤️ 1
    有点意思,已 star
    Incrus
        17
    Incrus  
       266 天前
    内网没法在线下载不同版本,可以有离线安装包的这种方式安装,然后用 vfox 来切换版本吗?
    windows 主要是 node
    hankli
        18
    hankli  
    OP
       266 天前   ❤️ 1
    @Incrus 不知道我有没有正确理解你的问题, 三种方式吧.

    1.如果内网有 mirror 的话, 可以直接把 nodejs 插件理的地址换成内网地址.

    2.因为 vfox 完全依赖插件来获取数据源的, 没办法直接通过命令导入安装包, 但是可以实现一个插件, 插件里面指定离线安装包的位置, 供 vfox 管理

    3.vfox 最终管理的是$HOME/.version-fox/cache 目录下的文件, 另一种方法是直接把安装包丢进去就行了
    Incrus
        19
    Incrus  
       266 天前
    1 和 3 可能可行,回头试试。
    谢谢。
    wxyrrcj
        20
    wxyrrcj  
       266 天前
    C:\Users\Administrator>vfox ls
    All installed sdk versions
    ├─┬golang
    │ └──v1.22.0
    ├─┬java
    │ ├──v8
    │ └──v21
    ├─┬nodejs
    │ └──v18.19.1
    └──python
    wxyrrcj
        21
    wxyrrcj  
       266 天前
    其他几个安装成功了 py 这个是哪里的问题呢
    C:\Users\Administrator>vfox install [email protected]
    plugin [PreInstall] method error: <string>:141: attempt to call a non-function object
    stack traceback:
    <string>:141: in function 'checkIsReleaseVersion'
    <string>:50: in main chunk
    [G]: ?

    C:\Users\Administrator>
    hankli
        22
    hankli  
    OP
       266 天前
    @wxyrrcj 你安装的不是最新的 0.2.3 吧, py 要求最新版本. 跟这个一个问题看着.https://github.com/version-fox/vfox/issues/49
    wxyrrcj
        23
    wxyrrcj  
       266 天前
    @hankli #22 是的 C:\Users\Administrator>vfox -v
    VersionFox version 0.2.2
    hankli
        24
    hankli  
    OP
       266 天前
    @wxyrrcj 升级最新, py 最低 0.2.3
    Dylaan
        25
    Dylaan  
       266 天前
    支持世界上最好的语言嘛
    hankli
        26
    hankli  
    OP
       266 天前
    @Dylaan 哈哈哈哈, 一个一个来!

    https://github.com/version-fox/vfox/issues/55

    看了一下, 对接起来 easy! 等着!
    w292614191
        27
    w292614191  
       266 天前
    @hankli #11 哈哈哈哈,快肝吧
    youknowiam
        28
    youknowiam  
       266 天前   ❤️ 1
    gentoo 的 eselect ?
    hankli
        29
    hankli  
    OP
       266 天前
    @youknowiam 头一次听说这个. 刚看了一下 wiki , 发现好像! 研究研究哈哈哈
    hankli
        30
    hankli  
    OP
       266 天前
    @youknowiam 我艹, 这就是我一开始的想法, 让插件提供能力. 但是当时觉得插件提供的命令如果不规范一下, 用户用起来还得看一下这个模块怎么用, 所以把命令提前了! 变成了 vfox [command] [plugin] 哈哈哈哈
    RockShake
        31
    RockShake  
       266 天前   ❤️ 1
    👍 新环境果断上这个方案,现在的工作环境已经用了不同的工具管理版本,折腾起来太费事,先不动了
    vishun
        32
    vishun  
       266 天前   ❤️ 1
    合 nvm 的区别是这个可以管理更多的工具吗?只针对 npm 来说,功能和 nvm 一样?
    unco020511
        33
    unco020511  
       266 天前
    要是能有 GUI 就好了
    hankli
        34
    hankli  
    OP
       266 天前
    @vishun 对, 可以管理更多的工具. 另外,nvm 有的功能这个都有, 但是 nvm-win 好像不能支持 shell 会话内有效哈哈哈, 这个还是挺常用的. 自动切换项目版本这个我忘了 nvm 支持不支持了.
    hankli
        35
    hankli  
    OP
       266 天前
    @unco020511 好几个提的了... 只能先等着了, 哈哈哈. 后面看时间安排吧.
    FightPig
        36
    FightPig  
       266 天前
    不错
    suqiuluck
        37
    suqiuluck  
       266 天前   ❤️ 1
    已 star
    Radiation
        38
    Radiation  
       266 天前
    看到好多人都想要 gui 啊,再额外开机启动个 gui 不觉得很麻烦吗?感觉 gui 的话可以弄成可选项,类似 clash 这种,有核心有 gui ,这样大家都有的选。
    hankli
        39
    hankli  
    OP
       266 天前
    @Radiation 萝卜青菜各有所爱啦哈哈哈哈, 是的,可以按照 clash 走, 不强制.
    QlanQ
        40
    QlanQ  
       266 天前
    想了半天,我只有 node 一个需要多版本管理,就还是 用 fnm 了
    hankli
        41
    hankli  
    OP
       266 天前
    @QlanQ 哈哈哈哈, 适合自己的就是最好的!
    kukat
        42
    kukat  
       266 天前
    从 asdf 换到 rtx ,rtx 又改名 mise 。。。不想换了
    wangritian
        43
    wangritian  
       266 天前
    很棒,蹲一个界面版
    yidinghe
        44
    yidinghe  
       266 天前   ❤️ 1
    plugin 的管理和 sdk 的管理容易弄混,建议参考 docker container 和 docker image 这样的子命令设计来区分开。

    我先是 add 了 java/adoptium-jdk ,然后尝试安装 v21 ,因为下载慢就中途退出了,然后尝试 remove 命令去掉这个 plugin ,得到错误信息 "java/adoptium-jdk not installed"。

    那么我想换另一个源,执行 "vfox add java/azul-jdk" 时,也得到错误信息 "plugin java already exists",现在是进退不能了。
    CLMan
        45
    CLMan  
       266 天前   ❤️ 1
    反馈下:下载因为网络问题阻塞,Ctrl+C 后,安装未成功显示成功。

    我已经通过删除 cache 解决,但程序能做优化更好。
    xfcy
        46
    xfcy  
       266 天前   ❤️ 1
    很牛,比 scoop reset 方便多了,已 star ,明天上班试试
    hankli
        47
    hankli  
    OP
       266 天前 via Android
    @yidinghe 先手动删除 cache 文件夹,和#45 楼说的一样,明天我看一下,哈哈哈哈
    Nnq
        48
    Nnq  
       266 天前
    star 那个图我还以为是动态图 结果是个截屏
    phithon
        50
    phithon  
       265 天前   ❤️ 1
    很有想象力,感觉可以支持一下。
    IdJoel
        51
    IdJoel  
       265 天前
    为啥没有 PHP 😓
    hafuhafu
        52
    hafuhafu  
       265 天前   ❤️ 1
    挺好用的
    do9core
        53
    do9core  
       265 天前
    看着不错,Windows 能否支持下用 Scoop 或者 Chocolatey 进行 setup
    l4ever
        54
    l4ever  
       265 天前
    够呛,
    vfox use [email protected] -g

    python --version
    Python 3.12.2

    pip --version
    'pip' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    l4ever
        55
    l4ever  
       265 天前   ❤️ 1
    bug:
    1. 每次使用 vfox use [email protected] -g, 都会在%PATH%创建一条记录. 会导致很多重复记录???
    2. 每次没有 pip, 因为%PATH%缺少 C:\Users\xx\.version-fox\cache\python\v-3.12.2\python-3.12.2\Scripts
    jinhan13789991
        56
    jinhan13789991  
       265 天前
    那么问题来了,已经安装的 sdk 怎么加入管理呢。
    zliea
        57
    zliea  
       265 天前
    gradle 和 openjdk 有规划么?
    dcdlove
        58
    dcdlove  
       265 天前
    nvm 就够了
    Corybyte
        59
    Corybyte  
       265 天前
    Linux 可以用吗
    hankli
        60
    hankli  
    OP
       265 天前
    @l4ever #54 #55
    1. 是最新版本吗? 我得复现一下, PATH 是去重的.
    2. windows 下直接用的 python 提供的 exe 安装器, 我得看一下 exe 安装器的配置, 可能漏掉了导致 pip 没有加上.
    hankli
        61
    hankli  
    OP
       265 天前
    @zliea #57 可以加上去, 有时间提个 issue 哈哈哈, 当作 good first issue 处理, 哈哈哈哈
    hankli
        62
    hankli  
    OP
       265 天前
    @Corybyte Linux macOS Windows 都可以啦
    l4ever
        63
    l4ever  
       265 天前
    @hankli
    vfox -v
    VersionFox version 0.2.3

    用 vfox 切换后, 在 vscode 内置的终端不生效? 重启 vsc 都不行.
    必须重启电脑才可以. cmd 里面又正常.
    非常奇怪.
    pyenv 不会出现这样的问题.
    hankli
        64
    hankli  
    OP
       265 天前
    @jinhan13789991 看我#18 楼的回复, 目前只能这样. 后面考虑一下管理已安装的 SDK
    hankli
        65
    hankli  
    OP
       265 天前
    @l4ever 辛苦提个 issue 吧, 哈哈哈哈, 我看一下!
    jspatrick
        66
    jspatrick  
       265 天前   ❤️ 1
    加油,感觉很有用
    hankli
        67
    hankli  
    OP
       265 天前
    @yidinghe
    @CLMan

    #44 45

    > plugin 的管理和 sdk 的管理容易弄混,建议参考 docker container 和 docker image 这样的子命令设计来区分开。

    因为我保持简单, vfox 理念就是 SDK 即插件, 插件即 SDK. 所以就没做区分.

    > 我先是 add 了 java/adoptium-jdk ,然后尝试安装 v21 ,因为下载慢就中途退出了,然后尝试 remove 命令去掉这个 > plugin ,得到错误信息 "java/adoptium-jdk not installed"。

    java/adoptium-jdk 只是插件名, 它里面标注了 sdk 名是 java, 所以要删除需要执行 vfox remove java 删除.

    这也就是为啥出现 `执行 "vfox add java/azul-jdk" 时,也得到错误信息 "plugin java already exists"`原因.

    删除之前, 你们可以通过`vfox ls`查看具体安装的 sdk.


    我需要把这个问题在文档上标注一下. 感谢使用和反馈! 🙏
    auroraccc
        68
    auroraccc  
       265 天前
    挺好的,有对团队协作的支持吗,比如某种项目配置文件啥的
    hankli
        69
    hankli  
    OP
       265 天前
    @auroraccc

    有的, vfox use -p 会在当前项目在创建一个.tool-versions 文件

    也就是说,只要项目里有这个文件, 配置 vfox 之后, 进入项目目录, vfox 就会自动生效了.
    halou12
        70
    halou12  
       265 天前   ❤️ 1
    用了一下,有几个 bug
    1. .tool-versions 文件是在.version-fox 下的。但是执行 vfox current ,结果都是 N/A
    3. 如果把.tool-versions 移动到~/目录下,vfox current 正常了,但是每次执行 where python ,.version-fox 下的 python path 都会多一条
    2. vscode 终端里,查看 echo $PATH, 所以的 path 会重复 2 遍
    halou12
        71
    halou12  
       265 天前
    另外,我看文档里说,vfox 采用了直接操作环境变量的方式来管理版本,但是 IDEA 里,依然没有显示 .version-fox 下的 python 。这个只能手动选择吗
    hankli
        72
    hankli  
    OP
       265 天前
    @halou12 好的,感谢反馈.

    https://github.com/version-fox/vfox/issues/61

    后面两条下版本修复
    hankli
        73
    hankli  
    OP
       265 天前
    @halou12 这个好像跟 IDEA 有关, pyenv 的好像也是别不了... 我用 vfox 安装了一个 nodejs, idea 就可以是别....哈哈哈哈
    ifzm
        74
    ifzm  
       265 天前   ❤️ 1
    star ,目前大多数管理工具都不支持原生 win ,加油 👋
    Jaeger
        75
    Jaeger  
       265 天前   ❤️ 1
    非常棒的工具,all in one
    MonkeyJon
        76
    MonkeyJon  
       265 天前
    monkeyjon@a-mini ~ % vfox ls
    All installed sdk versions
    └──java

    本机存在的 jdk 版本怎么识别的呢,还是说必须要用这个重新下载一遍
    hankli
        77
    hankli  
    OP
       265 天前
    @MonkeyJon 目前最好的方式, 就是重新下一遍, 这个也花不了多长时间. 记得把之前配置的环境变量清掉. 让 vfox 给你配.
    hankli
        78
    hankli  
    OP
       265 天前   ❤️ 1
    @zliea gradle 上了, 社区还是给力啊.哈哈哈哈
    Hopetree
        79
    Hopetree  
       265 天前   ❤️ 1
    start 了,看了一下项目很强,当做学习 go 命令行工具的一个项目
    Neonyuyang
        80
    Neonyuyang  
       265 天前
    https://ooo.0x0.ooo/2024/03/01/Oyp4yS.png
    卸载不了 是我命令写错了吗
    Neonyuyang
        81
    Neonyuyang  
       265 天前
    <https://ooo.0x0.ooo/2024/03/01/Oyp4yS.png>
    卸载不了 是我命令写错了吗
    hankli
        82
    hankli  
    OP
       265 天前
    @Neonyuyang 啥, 你这啥地址, 打不开
    LuckyLight
        83
    LuckyLight  
       265 天前   ❤️ 1
    配置文件能符合 XDG Base Directory Specification 就好了
    sjtulyj
        84
    sjtulyj  
       265 天前   ❤️ 1
    有点意思, 我以前都是写脚本自动切换的
    sjtulyj
        85
    sjtulyj  
       265 天前
    用这种工具, 公司不一定允许, 有时还是得用脚本控制
    Neonyuyang
        86
    Neonyuyang  
       265 天前
    @hankli
    ```
    PS C:\Program Files\vfox> vfox un java/adoptium-jdk v21
    sdk version is invalid
    PS C:\Program Files\vfox> vfox list
    All installed sdk versions
    └─┬java
    ├──v21
    └──v17

    PS C:\Program Files\vfox> vfox uninstall java v21
    sdk version is invalid
    PS C:\Program Files\vfox>
    ```
    MAGA2022
        87
    MAGA2022  
       265 天前
    asdf 用了很多年了
    ➜ ~ asdf current
    bun 1.0.1 /Users/chen/.tool-versions
    java adoptopenjdk-8.0.352+8 /Users/chen/.tool-versions
    nodejs 14.19.0 /Users/chen/.tool-versions
    python 3.9.13 /Users/chen/.tool-versions
    ruby 3.0.2 /Users/chen/.tool-versions
    hankli
        88
    hankli  
    OP
       265 天前
    @LuckyLight 确实不太懂这个, 可以参与进来哈哈哈. 我后面看看吧
    hankli
        90
    hankli  
    OP
       265 天前 via Android
    @MAGA2022 这确实不错,生态也更强大
    semyin
        91
    semyin  
       264 天前
    asdf 是什么
    hankli
        92
    hankli  
    OP
       264 天前
    @semyin 也是一个通用的版本管理工具, 不过仅适合 unix-like 环境.
    gnef
        93
    gnef  
       263 天前
    我个人 WIN 环境都是一键脚本搭建, 应该用不上这玩意. 不过 linux 倒可以试试. 另外有些高速插件源可以替换我之前的脚本地址, 还算不错.
    sankooc
        94
    sankooc  
       262 天前   ❤️ 1
    挺好下来试试
    junmoxiao
        95
    junmoxiao  
       242 天前
    坐等对 php 的支持。另外为啥 win 上只支持 3.5 以上呢?不支持 2.7 ?
    hankli
        96
    hankli  
    OP
       242 天前   ❤️ 1
    @junmoxiao 因为安装方式(exe 和 msi)不一样, 当时没时间支持(所以只支持 exe 安装)哈哈哈, 后面等插件系统完善了, 在针对具体插件进行完善
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1618 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 16:54 · PVG 00:54 · LAX 08:54 · JFK 11:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.