macOS asdf 工具版本管理器

一、区别于Homebrew

"asdf"和"Homebrew"都是用于管理软件包的工具,但它们的主要区别在于适用范围和管理的内容:

1.适用范围:

  • asdf:是一个通用的版本管理工具,可以用来管理多种不同的软件工具和语言的版本,例如编程语言(如Node.js、Python、Ruby)、数据库(如PostgreSQL、MySQL)、编辑器(如Vim、Emacs)等。
  • Homebrew:是针对 macOS操作系统的软件包管理器,主要用于安装和管理 macOS上的开源软件包,包括命令行工具、开发工具、应用程序等。

2.管理的内容:

  • asdf:主要用于管理不同软件工具和语言的版本,可以通过插件扩展来支持不同类型的软件包。每个软件包都有自己的插件,因此它们的版本管理是相互独立的。
  • Homebrew:专注于管理 macOS
    系统上的开源软件包,可以安装和更新命令行工具、库文件等,但不包括编程语言、数据库等其他类型的软件包。

总的来说,如果你需要管理多种不同类型的软件包,包括编程语言、数据库等,那么 asdf 可能更适合你。如果你只需要在 macOS 上安装和管理开源软件包,那么 Homebrew 可能更适合你。

二、如何安装使用asdf 工具版本管理器

可参照:asdf官网

1. 安装依赖

OS|PackageCommand
linux |Aptitudeapt install curl git
linux |DNFdnf install curl git
linux|Pacmanpacman -S curl git
linux |Zypperzypper install curl git
macOS | Homebrewbrew install coreutils curl git
macOS |Spackspack install coreutils curl git

2. 下载 asdf

Official Download

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0

Community Supported Download Methods
We highly recommend using the official git method.

Method Command
Homebrew brew install asdf
Pacman git clone https://aur.archlinux.org/asdf-vm.git && cd asdf-vm && makepkg -si or use your preferred AUR helper

MethodCommand
Homebrewbrew install asdf
Pacmangit clone https://aur.archlinux.org/asdf-vm.git && cd asdf-vm && makepkg -si or use your preferred AUR helper

3.macOS 环境变量

注意:正确的路径是 /opt/homebrew/opt/asdf/libexec/asdf.sh。你可以在 .bash_profile 或者 .zshrc 文件中添加以下行来初始化 asdf:

安装了brew install coreutils curl git 执行了asdf list-all nodejs,报错了:zsh: command not found: asdf

  • 你可以尝试打开 .bash_profile 文件,看看是否存在。你可以使用以下命令来打开它:
 open ~/.bash_profile
  • 或者使用命令行编辑器打开:
 nano ~/.bash_profile
vim ~/.bash_profile
  • 将这个配置写入:
. /opt/homebrew/opt/asdf/libexec/asdf.sh
  • 运行
    在 macOS 上,更改了 .bash_profile 文件后,你可以通过执行以下命令来使更改生效:
source ~/.bash_profile
  • 或者简写为:
. ~/.bash_profile

这将重新加载你的配置文件,使新的更改生效。

  • 如果.zshrc 文件中配置了 source ~/.bash_profile,以上生效后则安装完成。
  • 运行 asdf --version 命令来查看 asdf 的版本信息,如果输出了版本号,则说明 asdf 已经生效。

4.指定的 nodejs 版本运行环境

要在特定的 Node.js 版本下运行项目,可以使用 asdf 管理器来管理 Node.js 版本。首先,确保已经安装了 asdf。然后,按照以下步骤进行操作:

  • 安装 Node.js 插件:
asdf plugin add nodejs
  • 安装所需的 Node.js 版本:
asdf install nodejs <version>
  • 替换 为你想要安装的 Node.js 版本号。 设置全局 Node.js 版本:
asdf global nodejs <version>

这将把指定的 Node.js 版本设置为全局版本,使其对所有项目生效。
在你的项目目录下创建一个 .tool-versions 文件,指定项目所需的 Node.js 版本:

nodejs <version>

替换 为你的项目所需的 Node.js 版本号。

  • 如何确保项目中使用特定的 Node.js 版本
    要确保项目中使用特定的 Node.js 版本,您可以使用 asdf 的 local 命令来设置项目的本地 Node.js 版本。以下是设置项目本地 Node.js 版本的步骤:
  • 在项目目录中打开终端。 运行以下命令来设置项目的本地 Node.js 版本:
asdf local nodejs <version>
  • 请将 替换为您希望项目使用的特定 Node.js 版本。例如:
asdf local nodejs 16.18.1

这将在项目的根目录中创建一个名为 .tool-versions 的文件,并将指定的 Node.js 版本写入其中。这个文件会告诉 asdf 在该项目中使用哪个 Node.js 版本。

确保您的终端会话中 asdf 的版本管理功能已启用,并且已正确配置以在项目目录中查找 .tool-versions 文件。

总结就是:

// 切换:设置全局运行的node版本
asdf global nodejs <version>

现在,您可以在项目目录中使用 node -v 和 npm -v 等命令来验证项目中使用的 Node.js 和 npm 版本是否与您设置的本地版本相匹配。

5.只想在当前项目中指定特定的 Node.js 版本

如果您只想在当前项目中指定特定的 Node.js 版本,而不影响全局环境,可以使用 asdf local 命令来设置项目的本地 Node.js 版本。这样做的好处是,只有在当前项目中才会使用指定的 Node.js 版本,而全局环境的 Node.js 版本不会受到影响。

以下是设置项目本地 Node.js 版本的步骤

在项目目录中打开终端。
运行以下命令来设置项目的本地 Node.js 版本

asdf local nodejs <version>

请将 <version> 替换为您希望项目使用的特定 Node.js 版本。例如:

asdf local nodejs 16.18.1

这将在项目的根目录中创建一个名为 .tool-versions 的文件,并将指定的 Node.js 版本写入其中。这个文件会告诉 asdf 在该项目中使用哪个 Node.js 版本。

确保您的终端会话中 asdf 的版本管理功能已启用,并且已正确配置以在项目目录中查找 .tool-versions 文件。

现在,您可以在项目目录中使用 node -v 和 npm -v 等命令来验证项目中使用的 Node.js 和 npm 版本是否与您设置的本地版本相匹配。

通过这些步骤可以确保当前项目中使用特定的 Node.js 版本,而不影响全局环境

6.关于项目使用node版本问题

关于项目使用node版本问题,目前项目根目录下增加了.tool-versions来指定当前项目使用node版本,约定统一
.tool-versions文件来源于 asdf 工具版本管理器,感兴趣可以阅读官网
优势:
1、可指定全局版本和某个文件下node版本
2、不同版本全局的隔离
3、如果开发者本地没有使用asdf,.tool-versions不影响项目任何内容,可当作提示使用,如果使用了asdf工具,本地没有当前所需node版本会提示安装,如果有会自动将当前文件作用域下的node切换为.tool-versions 指定的版本

5.如下是安装中的一些问题,供参考
homebrew下载,脚本无法下载,使用pkg下载https://github.com/Homebrew/brew/releases/tag/4.2.19
m3芯片下载地址在 /opt/homebrew/bin/,在.zprofile中配置eval “$(/opt/homebrew/bin/brew shellenv)”
运行source ~/.zprofile
安装asdf:brew install coreutils curl git 官网 https://asdf-vm.com/zh-hans/guide/getting-started.html
因为使用zsh,可以参考 ZSH & Homebrew 配置
安装nodejs 前安装brew install gpg gawk
安装nodejs 插件 asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
使用asdf list-all nodejs 查看所有可安装版本,安装 asdf install nodejs [version]
安装pnpm 插件 asdf plugin-add pnpm
版本安装同nodejs
可通过 asdf global [name] [version] 设置全局版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/6413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结构体介绍(1)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 结构体&#xff08;1&#xff09; 前言一、struct介绍结构体声明结构体创建和初始化struct 的特殊声明结构体自引用 二、结构体内存对齐2.1.对齐规则 总结 前言 结构体 属于…

复习结构体

1.怎样使用结构体变量2.关于 . 和-> 的用法 pst -> age 会被计算机内部转化为&#xff08;*pst).age&#xff0c;这就是 ->的含义&#xff0c;是一种硬性规定 像 float 类型和 double 类型 &#xff0c;由于编码原因&#xff0c;一般都不能被精确存储 像 数字66.6在C…

【快速入门Linux】10_Linux命令—Vi编辑器

文章目录 一、vi 简介1.1 vi1.2 vim1.3查询软连接命令&#xff08;知道&#xff09; 二、打开和新建文件&#xff08;重点&#xff09;2.1 打开文件并且定位行2.2 异常处理 三、vi三种工作模式&#xff08;重点&#xff09;3.1 末行模式-命令 四、常用命令4.0 命令线路图4.1 移…

cache数据库基础操作

Cache数据库(也称为Cach或InterSystems Cach)是一种后关系型数据库,由美国Intersystems公司开发。它提供了高性能、可扩展性和灵活性,特别适合需要处理大量数据和高并发访问的应用场景。以下是一些Cache数据库的基础操作: 安装与设置: 访问Intersystems官方网站或相关资…

WordPress自建站如何备份和恢复数据

WordPress自建站备份和恢复数据的方法如下&#xff1a; 1. 备份数据&#xff1a; – 登录cPanel面板。 – 在域功能区&#xff0c;点击打开WordPress Toolkit。 – 找到需要备份的网站&#xff0c;点击备份/恢复选项。 – 在备份与恢复页面中&#xff0c;点击备份。 – 备…

HTML_CSS学习:CSSLearning

一、优先级 相关代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>优先级</title> <!-- <style>--> <!-- h1{--> <!-- color: #1f33…

cartographer问题处理

问题1 : CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: GMOCK_LIBRARY (ADVANCED)linked by target "time_conversion_test&quo…

自动装箱VS自定拆箱

引言&#xff1a; 在Java中&#xff0c;自动装箱&#xff08;Autoboxing&#xff09;和自动拆箱&#xff08;Autounboxing&#xff09;是Java 5引入的一项特性&#xff0c;用于在基本数据类型和它们的包装类&#xff08;wrapper classes&#xff09;之间进行自动转换。这允许程…

vue中$nextTick用法

$nextTick 是 Vue.js 提供的一个方法&#xff0c;它用于延迟执行一段代码&#xff0c;直到 Vue 完成当前的 DOM 更新。这在处理 DOM 操作或依赖 DOM 状态的代码时特别有用&#xff0c;因为 Vue 是异步执行 DOM 更新的。 用法&#xff1a; javascript this.$nextTick(callbac…

多态及相关

多态及相关 多态的概念多态实现的两个条件及特殊情况虚函数虚函数重写的例外C11 override 和 final 重载、覆盖(重写)、隐藏(重定义)的对比题目1抽象类接口继承和实现继承 题目2&#xff08;很重要&#xff09;多态的原理虚函数表为什么Derive中的func4()在监视窗口里没有显示出…

利用大模型提升个性化推荐的异构知识融合方法

在推荐系统中&#xff0c;分析和挖掘用户行为是至关重要的&#xff0c;尤其是在美团外卖这样的平台上&#xff0c;用户行为表现出多样性&#xff0c;包括不同的行为主体&#xff08;如商家和产品&#xff09;、内容&#xff08;如曝光、点击和订单&#xff09;和场景&#xff0…

陪诊师了解

介绍 最近两年兴起的一个职业&#xff1a;陪诊师 一句话介绍&#xff1a;陪诊师是陪护、协作病人看病的一个职业。 以下是B站视频一位陪诊师的讲述。 External Player - 哔哩哔哩嵌入式外链播放器 前景 处于起步阶段&#xff0c;过去是一些高收入阶层的人才会享受得起的一…

Javascript基础(三)

Javascript基础&#xff08;一&#xff09; Javascript基础&#xff08;二&#xff09; 引用数据类型 在之前的文章中&#xff0c;我们提及了与基本数据类型并列的引用数据类型&#xff0c;当时提到引用数据类型大致分为三类&#xff1a;数组Array&#xff0c;函数Function&a…

GPT-ArcGIS数据处理、空间分析、可视化及多案例综合应用

在数字化和智能化的浪潮中&#xff0c;GIS&#xff08;地理信息系统&#xff09;和GPT&#xff08;生成式预训练模型&#xff09;的结合正日益成为推动科研、城市规划、环境监测等领域发展的关键技术。GIS以其强大的空间数据处理、先进的空间分析工具、灵活的地图制作与可视化能…

SQL-Server数据库--视图

1.创建视图 create view as 子查询 子查询可以是任意发杂的select语句&#xff0c;但通常不允许含有order by和distinct短语 --使用T-SQL语句创建新视图view_score, 要求只显示学生的学号、姓名、课号、课程名称及成绩。 create view view_score as select from tb_stude…

JavaEE初阶-多线程易忘点总结

文章目录 1.PCBPID文件描述符表内存指针状态上下文优先级记账信息tgid 2.线程与进程的区别3.sleep和interrupt方法的关系变量终止线程interrupt方法终止线程 4.线程状态5.出现线程不安全的原因线程在系统中是随即调度&#xff0c;抢占式执行的。多个线程修改同一个变量线程针对…

《MySQL对数据库中表的结构的操作》

文章目录 一、建表二、查看表结构所有能查看到数据库&#xff0c;表的操作痕迹的本质都是服务器保存下来了这些操作记录。 三、修改表1.改表名字2.添加表记录3.添加表的更多字段4.修改表的字段5. 删除表的字段 总结 以下的数据库表的操作全是基于user_db这个数据库操作的&#…

如何加入亚马逊云科技AWS特邀技领云合作博主

这一年来&#xff0c;小李哥帮助过上千名小伙伴学习AWS和考取认证&#xff0c;这次非常荣幸能和丸子爸比大哥、程序员学习日常成为第一批亚马逊AWS云领袖计划的特邀合作博主&#xff01;感谢AWS培训与认证各位老师的支持&#xff0c;未来小李哥会继续坚持社区分享&#xff0c;带…

AC自动机

AC自动机 AC自动机有一个很出色的功能&#xff1a;实现多模式匹配。 多模式匹配&#xff1a;模式串有多个&#xff0c;主串只有一个&#xff0c;要进行多次模式串匹配。如果用KMP就要一个一个模式串进行匹配&#xff0c;效率低。AC自动机就可以做到&#xff0c;只要经过一些预…

Codeforces Round 943 (Div. 3) G1. Division + LCP (easy version) 二分+KMP

Division LCP (easy version) 题目描述 This is the easy version of the problem. In this version l r lr lr . You are given a string s s s . For a fixed k k k , consider a division of s s s into exactly k k k continuous substrings w 1 , … , w k w_1…