1.安装asdf
asdf术语 | 描述 |
asdf | 指的是 asdf core。 |
asdf插件 | 指的是在 asdf-plugins 仓库注册的插件,比如 asdf-php、asdf-nodejs 等。在本文中以 <lang-plugin> 标示。 |
asdf工具 | 指的是在安装 asdf 插件时同时 git-clone 到对应插件目录下的语言安装工具,比如 node-build 等。 |
asdf包 | 指的是通过语言安装工具(比如 node-build 等)安装的语言,比如 PHP语言、Node.js语言 等。在本文中以 <lang> 标示。 |
asdf包版本 | 指的是语言的版本。在本文中以 <version> 标示。 |
executable | 指的是可执行命令,比如 php 、composer 、node 、npm 等,又或者是包管理器安装的全局依赖包生成的可执行命令,比如 laravel 、yarn 等。 |
//安装依赖
sudo apt update
sudo apt install curl git
//下载asdf
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.13.1
//升级asdf
asdf update
//配置asdf
echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc
echo '. "$HOME/.asdf/completions/asdf.bash"' >> ~/.bashrc
//重新打开终端或执行以下同等命令。
exec $SHELL
//查看asdf版本
asdf --version
2.安装asdf插件
2.1安装asdf-php插件
//安装依赖
sudo apt update
sudo apt-get install autoconf bison build-essential curl gettext git libgd-dev libcurl4-openssl-dev libedit-dev libicu-dev libjpeg-dev libmysqlclient-dev libonig-dev libpng-dev libpq-dev libreadline-dev libsqlite3-dev libssl-dev libxml2-dev libzip-dev openssl pkg-config re2c zlib1g-dev
//安装asdf-php插件
asdf plugin-add php https://github.com/asdf-community/asdf-php.git
//升级asdf-php插件
asdf plugin list --refs
asdf plugin update php
2.2安装asdf-nodejs插件
//安装依赖
sudo apt update
sudo apt-get install dirmngr gpg curl gawk
//安装asdf-nodejs插件,会同时git-clone node-build仓库默认分支的最新稳定版本到~/.asdf/plugins/nodejs/.node-build目录下。
asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
//升级asdf-nodejs插件
asdf plugin list --refs
asdf plugin update nodejs
3.安装语言
3.1安装PHP语言
//查看远程服务器可供安装的PHP语言的以版本筛选条件开头的所有版本。
asdf list all php 8
//安装PHP(源码编译)
//Composer会随着PHP一起全局安装,无需额外单独安装。
asdf install php 8.2.10
//如需安装不带PEAR的PHP,可以运行以下代码。
PHP_WITHOUT_PEAR=yes asdf install php <version>
//配置PHP语言全局所使用的版本为8.2.10版本。
asdf global php 8.2.10
//配置https://packagist.org/的镜像(配置保存在~/.asdf/installs/php/8.2.10/.composer/config.json文件中,升级PHP后必须重新配置)。
//阿里云镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
//腾讯云镜像
composer config -g repos.packagist composer https://mirrors.tencent.com/composer/
//华为云镜像
composer config -g repo.packagist composer https://repo.huaweicloud.com/repository/php/
//查看配置
composer config --global --list
//删除配置的https://packagist.org/的镜像。
composer config -g --unset repos.packagist
//查看版本
php -v
composer --version
//如需安装PHP扩展,见如下示例(升级PHP后必须重新安装)。
pecl install redis
pecl install imagick
//添加PHP扩展到php.ini
echo "extension=redis.so
extension=imagick.so" > $(asdf where php)/conf.d/php.ini
//查看PHP扩展是否已作为PHP模块成功加载
php -m
//如果Composer安装全局依赖包,则需要重新生成shims(升级PHP后必须重新安装)。
//安装Laravel Installer
composer global require laravel/installer
//重新生成shims
asdf reshim php 8.2.10
//查看版本
laravel --version
3.2安装Node.js语言
//查看远程服务器可供安装的Node.js语言的以版本筛选条件开头的所有版本。
asdf list all nodejs 20
//配置https://nodejs.org/dist/的镜像(升级Node.js后无需重新配置)。
//阿里云镜像
echo 'export NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/' >> ~/.bashrc
//腾讯云镜像
echo 'export NODEJS_ORG_MIRROR=https://mirrors.cloud.tencent.com/nodejs-release/' >> ~/.bashrc
//中国科学技术大学镜像
echo 'export NODEJS_ORG_MIRROR=https://mirrors.ustc.edu.cn/node/' >> ~/.bashrc
//重新打开终端或执行以下同等命令。
exec $SHELL
//安装Node.js(非源码编译)
asdf install nodejs 20.6.1
//配置Node.js语言全局所使用的版本为20.6.1版本。
asdf global nodejs 20.6.1
//配置https://www.npmjs.com/的镜像(配置保存在~/.npmrc文件中,升级Node.js后无需重新配置)。
//阿里云镜像
npm config set registry=https://registry.npmmirror.com
//腾讯云镜像
npm config set registry=https://mirrors.cloud.tencent.com/npm/
//华为云镜像
npm config set registry=https://mirrors.huaweicloud.com/repository/npm/
//升级npm
npm install -g npm
//查看版本
node -v
npm -v
//如果npm安装全局依赖包,则需要重新生成shims。(升级Node.js后必须重新安装)。
//安装Yarn
npm install -g yarn
//重新生成shims
asdf reshim nodejs 20.6.1
//查看版本
yarn --version
//一般无需配置,当Linux操作系统同时存在Python2和Python3等类似跨大版本时才需配置。
//npm配置
npm config set python=/usr/bin/python3
//Yarn配置
yarn config set python "/usr/bin/python3"
//检查当前配置
npm config list
yarn config
4..tool-versions
文件
.tool-version文件 | 描述 |
$HOME/.tool-versions 文件 | 配置指定语言全局所使用的版本。 |
$PWD/.tool-versions 文件 | 配置指定语言当前工作目录所使用的版本。 |
ASDF_${LANG}_VERSION 环境变量 | 配置指定语言当前 shell 会话所使用的版本。 |
5.目录结构
asdf | 目录 |
asdf | ~/.asdf |
asdf插件 | ~/.asdf/plugins/ |
语言 | ~/.asdf/installs/ |
shims | ~/.asdf/shims/ |
PHP | 目录 | 查询命令 |
PHP版本安装目录 | ~/.asdf/installs/php/<version> | asdf where php |
php.ini配置文件 | ~/.asdf/installs/php/<version>/conf.d/php.ini | php --ini |
Composer工具安装目录 | ~/.asdf/installs/php/<version>/.composer | composer config --global home |
Composer工具的config.json全局配置文件 | ~/.asdf/installs/php/<version>/.composer/config.json | 可根据Composer工具安装目录推导得知。 |
全局依赖包安装目录 | ~/.asdf/installs/php/<version>/.composer/vendor/ | 可根据Composer工具安装目录推导得知。 |
composer.json全局依赖包配置文件 | ~/.asdf/installs/php/<version>/.composer/composer.json | 可根据Composer工具安装目录推导得知。 |
Node.js | 目录 | 查询命令 |
Node.js版本安装目录 | ~/.asdf/installs/nodejs/<version> | asdf where nodejs |
npm工具安装目录 | ~/.asdf/installs/nodejs/20.4.0/lib/node_modules/npm | npm --help |
npm工具的.npmrc用户级配置文件 | ~/.npmrc | npm --help |
全局依赖包安装目录 | ~/.asdf/installs/nodejs/<version>/lib/node_modules/npm/node_modules/ | 可根据npm程序目录推导得知。 |
package.json全局依赖包配置文件 | ~/.asdf/installs/nodejs/<version>/lib/node_modules/npm/package.json | 可根据npm程序目录推导得知。 |
6.asdf命令
asdf命令 | 描述 |
asdf --help | asdf | 查看 asdf 帮助。 |
asdf --version | 查看 asdf 版本。 |
asdf update | 升级 asdf 自身版本到最新稳定版本。 |
asdf update --head | 升级 asdf 自身版本到 master 分支的最新commit。 |
asdf reshim <lang> <version> | 在包管理器安装了全局依赖包(比如npm -g install yarn )后,为指定语言的指定版本重新创建shims,作用是为 executable(比如 yarn 可执行命令)生成shim。 |
asdf shim-versions <command> | 查看提供指定命令的语言以及版本。 |
asdf exec <command> [args...] | 执行当前语言版本在 ~/.asdf/shims 中对应的命令。 |
asdf info | 查看操作系统、shell、asdf调试信息。 |
asdf插件命令 | 描述 |
asdf plugin list all | 查看在 asdf-plugins 仓库注册的所有插件(包含 git-url)。 |
asdf plugin list | 查看已安装的所有插件。 |
asdf plugin list --urls | 查看已安装的所有插件(包含 git-url)。 |
asdf plugin list --refs | 查看已安装的所有插件(包含 git-ref)。 |
asdf plugin add <lang-plugin> <git-url> | 安装指定插件。 |
asdf plugin update --all | 升级所有插件到默认分支的最新commit。 |
asdf plugin update <lang-plugin> | 升级指定插件到默认分支的最新commit。 |
asdf plugin update <lang-plugin> <git-ref> | 升级指定插件到指定commit。 |
asdf plugin remove <lang-plugin> | 删除指定插件的对应的语言版本。 |
asdf语言命令 | 描述 |
asdf list all <lang> | 查看远程服务器可供安装的指定语言的所有版本。 |
asdf list all <lang> <version> | 查看远程服务器可供安装的指定语言的以版本筛选条件开头的所有版本。 |
asdf list | 查看已安装的所有语言的所有版本,会用星号 * 标示出当前所用的版本。 |
asdf list <lang> | 查看已安装的指定语言的所有版本,会用星号 * 标示出当前所用的版本。 |
asdf list <lang> <version> | 查看已安装的指定语言的以版本筛选条件开头的所有版本,会用星号 * 标示出当前所用的版本。 |
asdf latest --all | 查看已安装的所有语言在远程服务器上的最新稳定版本,并标示本地是否已安装。 |
asdf latest <lang> | 查看已安装的指定语言在远程服务器上的最新稳定版本。 |
asdf latest <lang> <version> | 查看已安装的指定语言在远程服务器上的以版本筛选条件开头的最新稳定版本。 |
asdf where <lang> | 查看指定语言的当前版本的安装路径。 |
asdf where <lang> <version> | 查看指定语言的指定版本的安装路径。 |
asdf install <lang> latest | 安装指定语言的最新稳定版本。 |
asdf install <lang> <version> | 安装指定语言的指定版本。 |
assf install <lang> latest:<version> | 安装指定语言的以版本筛选条件开头的最新稳定版本。 |
asdf install | 安装在 .tool-versions 文件中的所有语言的版本。 |
asdf install <lang> | 安装在 .tool-versions 文件中的指定语言的版本。 |
asdf uninstall <lang> <version> | 删除指定语言的指定版本。 |
asdf current | 查看所有语言当前的版本设置(包含版本路径)。 |
asdf current <name> | 查看指定语言当前的版本设置(包含版本路径)。 |
asdf global <lang> latest | 配置指定语言全局所使用的版本为 latest 版本,会配置 $HOME/.tool-versions 文件。覆盖规则:shell版本>当前工作目录版本>全局版本。 |
asdf global <lang> <version> | 配置指定语言全局所使用的版本为指定版本,会配置 $HOME/.tool-versions 文件。覆盖规则:shell版本>当前工作目录版本>全局版本。 |
asdf global <lang> latest:<version> | 配置指定语言全局所使用的版本为以版本筛选条件开头的 latest 版本,会配置 $HOME/.tool-versions 文件。覆盖规则:shell版本>当前工作目录版本>全局版本。 |
asdf global <lang> system | 将指定语言全局所使用的版本切换到 system 版本。 |
asdf local <lang> latest | 配置指定语言当前工作目录所使用的版本为 latest 版本,会配置 $PWD/.tool-versions 文件。覆盖规则:shell版本>当前工作目录版本>全局版本。 |
asdf local <lang> <version> | 配置指定语言当前工作目录所使用的版本为指定版本,会配置 $PWD/.tool-versions 文件。覆盖规则:shell版本>当前工作目录版本>全局版本。 |
asdf local <lang> latest:<version> | 配置指定语言当前工作目录所使用的版本为以版本筛选条件开头的 latest 版本,会配置 $PWD/.tool-versions 文件。覆盖规则:shell版本>当前工作目录版本>全局版本。 |
asdf local <lang> system | 将指定语言当前工作目录所使用的版本切换到 system 版本。 |
asdf shell <lang> <version> | 配置指定语言当前 shell 会话所使用的版本为指定版本,会配置 ASDF_${LANG}_VERSION 环境变量。覆盖规则:shell版本>当前工作目录版本>全局版本。 |
asdf shell <lang> system | 将指定语言当前 shell 会话所使用的版本切换到 system 版本。 |
asdf which <executable> | 查看一个 executable(比如 yarn 可执行命令)的路径。 |
type -a <lang> | 查看指定语言的 $PATH 环境变量配置(注意顺序)。 |
7.asdf nodejs命令
asdf nodejs命令 | 描述 |
asdf nodejs update nodebuild | 手动升级 node-build 工具。 |
asdf nodejs nodebuild命令 | 描述 |
asdf nodejs nodebuild --help | 查看 node-build 工具帮助。 |
asdf nodejs nodebuild --version | 查看 node-build 工具版本。 |
asdf nodejs nodebuild --definitions | 查看远程服务器可供安装的 Node.js 版本定义。 |
asdf nodejs nodebuild --keep | 安装 Node.js 后保留下载下来的压缩包。 |
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/javascript/javascriptenv/28475.html