暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux/MacOS 上管理 SDK 的最正确方式

戏码台 2021-05-25
1052

FCCFCC接无法使


对开发者来说,就算是同一种语言,我们也可能会在电脑上装数个不同版本的环境,以应对一些历史包袱和复杂多变的客户环境。

所以长远来看,对待任何一门语言的SDK环境,我们都应找到一种方式,合理管理不同的SDK版本。这里我强烈建议你在处理自己电脑的开发环境时,有意识地对SDK版本进行管理,而不是直接上网搜了个最新版的安装包,莫名其妙地装,莫名其妙地用。

别担心,这并不难。各路大神已经把轮子给你造好了。

几乎对任何一门语言,只要你在网上搜索:

xxxLanguage  version manager

复制

稍加甄别就能得到自己想要的答案。当然,下面我也把常用的一些语言及环境的version manager
列了出来,供你享用。

* Java——[sdkman](https://sdkman.io)👍

* Java——[jabba](https://github.com/shyiko/jabba)

* Python——[Miniforge](https://github.com/conda-forge/miniforge)👍

* Python——[Anaconda](https://www.anaconda.com)

* Python——[pyenv](https://github.com/pyenv/pyenv)

* Node——[nvm](https://github.com/nvm-sh/nvm)

* Go——[gvm](https://github.com/moovweb/gvm)

* Ruby——[rvm](https://github.com/rvm/rvm)

* PHP——[phpbrew](https://github.com/phpbrew/phpbrew)


这些工具的使用大同小异,咱们前后端各选一个代表测试一下,下面先来演示node
的管理环境nvm

  1. 安装
    直接在终端里执行这句话即可

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

    复制
  2. 使用
    配置完毕后,打开一个新的终端,可以通过nvm ls-remote
    列出所有可用的node
    版本了,如果只想查看lts
    版本,可以通过追加参数实现,nvm ls-remote --lts
    。确认要安装的版本后,就可以通过nvm install v15.11.0
    的方式安装了。如果你安装了多个版本,需要在不同版本间切换,只需要简单的使用nvm use v15.11.0
    就可以进行版本切换了。

  3. 更多
    关于nvm
    的使用,还有很多功能有待你来发掘,具体可以执行nvm --help
    获得更多有用信息。顺便一提,用nvm
    ARM
    架构的Mac
    电脑上安装node
    的时候,是基于node
    的源码进行本地编译安装的,因而你将获得一个ARM
    版本的node
    ,这点对正在使用M1
    芯片Mac
    的小伙伴非常友好。

介绍完了前端,咱们再来看看后端,这里以Java
sdkman
进行演示。

  1. 安装
    也是非常简单,一句话的事。

    curl -s "https://get.sdkman.io" | bash

    复制
  2. 使用
    列出可用的Java(JDK)
    版本,执行sdk list java
    即可,然后通过执行sdk install java 15.0.2-zulu
    就可以安装你需要的JDK
    版本了。
    额外说一句,如果是ARM
    架构的Mac
    其实是支持x86
    ARM
    两种架构的JDK
    的,只是前者要经过MacOS
    Rosetta2
    的转译,大部分情况下我们为了追求性能想使用ARM
    版本的JDK
    ,此时你可以更改sdkman
    的配置文件,vim ~/.sdkman/etc/config
    ,找到sdkman_rosetta2_compatible
    那一行,如果设置成true
    ,就仅显示ARM
    版本的JDK
    了。
    如果你安装了多个版本的JDK
    ,一样可以通过sdk use java 8.0.275-amzn
    的方式进行切换。如果你想改变全局环境的默认JDK
    版本,则可以使用sdk default java 8.0.275-amzn
    进行设置。

  3. 其他
    sdkman
    除了支持JDK
    的版本管理外,还支持Java
    系的很多技术栈,比如:Gradle
    Maven
    Kotlin
    Groovy
    等。所以如果你有这方面需求的话,记得执行sdk --help
    探索更多有用功能哦。

  4. 八卦
    其实关于sdkman
    还有一段有意思的往事,曾经sdkman
    的名字是gvm
    ,专门用来管理一门自2003
    年就存在的Groovy
    语言,这门语言跟Java
    一样,也是运行在JVM
    (Java虚拟机)上的。
    但是后来程序界又迎来了另一个G
    姓语言——Go
    ,越来越多的小伙伴希望gvm
    这个名字能见文知意,用作Go
    的版本管理,而不是去管理一个小众的JVM
    语言。
    于是在2015年,之前维护gvm
    的小伙伴,宣布了gvm
    改名为sdkman
    ,从而把gvm
    的使用权交给了Go Version Manager



文章转载自戏码台,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论