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

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

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

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

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

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

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

    目前社区已支持的 SDK:

    plugins

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

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

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

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

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

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

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

    3.vfox 最终管理的是$HOME/.version-fox/cache 目录下的文件, 另一种方法是直接把安装包丢进去就行了
    Incrus
        19
    Incrus  
       69 天前
    1 和 3 可能可行,回头试试。
    谢谢。
    wxyrrcj
        20
    wxyrrcj  
       69 天前
    C:\Users\Administrator>vfox ls
    All installed sdk versions
    ├─┬golang
    │ └──v1.22.0
    ├─┬java
    │ ├──v8
    │ └──v21
    ├─┬nodejs
    │ └──v18.19.1
    └──python
    wxyrrcj
        21
    wxyrrcj  
       69 天前
    其他几个安装成功了 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
       69 天前
    @wxyrrcj 你安装的不是最新的 0.2.3 吧, py 要求最新版本. 跟这个一个问题看着.https://github.com/version-fox/vfox/issues/49
    wxyrrcj
        23
    wxyrrcj  
       69 天前
    @hankli #22 是的 C:\Users\Administrator>vfox -v
    VersionFox version 0.2.2
    hankli
        24
    hankli  
    OP
       69 天前
    @wxyrrcj 升级最新, py 最低 0.2.3
    Dylaan
        25
    Dylaan  
       69 天前
    支持世界上最好的语言嘛
    hankli
        26
    hankli  
    OP
       69 天前
    @Dylaan 哈哈哈哈, 一个一个来!

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

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

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

    python --version
    Python 3.12.2

    pip --version
    'pip' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    l4ever
        55
    l4ever  
       69 天前   ?? 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  
       69 天前
    那么问题来了,已经安装的 sdk 怎么加入管理呢。
    zliea
        57
    zliea  
       69 天前
    gradle 和 openjdk 有规划么?
    dcdlove
        58
    dcdlove  
       69 天前
    nvm 就够了
    Corybyte
        59
    Corybyte  
       69 天前
    Linux 可以用吗
    hankli
        60
    hankli  
    OP
       69 天前
    @l4ever #54 #55
    1. 是最新版本吗? 我得复现一下, PATH 是去重的.
    2. windows 下直接用的 python 提供的 exe 安装器, 我得看一下 exe 安装器的配置, 可能漏掉了导致 pip 没有加上.
    hankli
        61
    hankli  
    OP
       69 天前
    @zliea #57 可以加上去, 有时间提个 issue 哈哈哈, 当作 good first issue 处理, 哈哈哈哈
    hankli
        62
    hankli  
    OP
       69 天前
    @Corybyte Linux macOS Windows 都可以啦
    l4ever
        63
    l4ever  
       69 天前
    @hankli
    vfox -v
    VersionFox version 0.2.3

    用 vfox 切换后, 在 vscode 内置的终端不生效? 重启 vsc 都不行.
    必须重启电脑才可以. cmd 里面又正常.
    非常奇怪.
    pyenv 不会出现这样的问题.
    hankli
        64
    hankli  
    OP
       69 天前
    @jinhan13789991 看我#18 楼的回复, 目前只能这样. 后面考虑一下管理已安装的 SDK
    hankli
        65
    hankli  
    OP
       69 天前
    @l4ever 辛苦提个 issue 吧, 哈哈哈哈, 我看一下!
    jspatrick
        66
    jspatrick  
       69 天前   ?? 1
    加油,感觉很有用
    hankli
        67
    hankli  
    OP
       68 天前
    @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  
       68 天前
    挺好的,有对团队协作的支持吗,比如某种项目配置文件啥的
    hankli
        69
    hankli  
    OP
       68 天前
    @auroraccc

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

    也就是说,只要项目里有这个文件, 配置 vfox 之后, 进入项目目录, vfox 就会自动生效了.
    halou12
        70
    halou12  
       68 天前   ?? 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  
       68 天前
    另外,我看文档里说,vfox 采用了直接操作环境变量的方式来管理版本,但是 IDEA 里,依然没有显示 .version-fox 下的 python 。这个只能手动选择吗
    hankli
        72
    hankli  
    OP
       68 天前
    @halou12 好的,感谢反馈.

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

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

    本机存在的 jdk 版本怎么识别的呢,还是说必须要用这个重新下载一遍
    hankli
        77
    hankli  
    OP
       68 天前
    @MonkeyJon 目前最好的方式, 就是重新下一遍, 这个也花不了多长时间. 记得把之前配置的环境变量清掉. 让 vfox 给你配.
    hankli
        78
    hankli  
    OP
       68 天前   ?? 1
    @zliea gradle 上了, 社区还是给力啊.哈哈哈哈
    Hopetree
        79
    Hopetree  
       68 天前   ?? 1
    start 了,看了一下项目很强,当做学习 go 命令行工具的一个项目
    Neonyuyang
        80
    Neonyuyang  
       68 天前
    https://ooo.0x0.ooo/2024/03/01/Oyp4yS.png
    卸载不了 是我命令写错了吗
    Neonyuyang
        81
    Neonyuyang  
       68 天前
    <https://ooo.0x0.ooo/2024/03/01/Oyp4yS.png>
    卸载不了 是我命令写错了吗
    hankli
        82
    hankli  
    OP
       68 天前
    @Neonyuyang 啥, 你这啥地址, 打不开
    LuckyLight
        83
    LuckyLight  
       68 天前
    配置文件能符合 XDG Base Directory Specification 就好了
    sjtulyj
        84
    sjtulyj  
       68 天前   ?? 1
    有点意思, 我以前都是写脚本自动切换的
    sjtulyj
        85
    sjtulyj  
       68 天前
    用这种工具, 公司不一定允许, 有时还是得用脚本控制
    Neonyuyang
        86
    Neonyuyang  
       68 天前
    @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  
       68 天前
    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
       68 天前
    @LuckyLight 确实不太懂这个, 可以参与进来哈哈哈. 我后面看看吧
    hankli
        90
    hankli  
    OP
       68 天前 via Android
    @MAGA2022 这确实不错,生态也更强大
    semyin
        91
    semyin  
       67 天前
    asdf 是什么
    hankli
        92
    hankli  
    OP
       67 天前
    @semyin 也是一个通用的版本管理工具, 不过仅适合 unix-like 环境.
    gnef
        93
    gnef  
       67 天前
    我个人 WIN 环境都是一键脚本搭建, 应该用不上这玩意. 不过 linux 倒可以试试. 另外有些高速插件源可以替换我之前的脚本地址, 还算不错.
    sankooc
        94
    sankooc  
       66 天前   ?? 1
    挺好下来试试
    junmoxiao
        95
    junmoxiao  
       45 天前
    坐等对 php 的支持。另外为啥 win 上只支持 3.5 以上呢?不支持 2.7 ?
    hankli
        96
    hankli  
    OP
       45 天前   ?? 1
    @junmoxiao 因为安装方式(exe 和 msi)不一样, 当时没时间支持(所以只支持 exe 安装)哈哈哈, 后面等插件系统完善了, 在针对具体插件进行完善
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   6211 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 01:54 · PVG 09:54 · LAX 18:54 · JFK 21:54
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com