1.asdf安装多语言多版本的步骤(Ubuntu)

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指的是可执行命令,比如 phpcomposernodenpm 等,又或者是包管理器安装的全局依赖包生成的可执行命令,比如 laravelyarn 等。
//安装依赖
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.iniphp --ini
Composer工具安装目录~/.asdf/installs/php/<version>/.composercomposer 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/npmnpm --help
npm工具的.npmrc用户级配置文件~/.npmrcnpm --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

(0)
上一篇 2023年5月11日
下一篇 2023年6月1日

相关推荐

  • 1.4PHP语言的运算符(Operator)和非运算符(Non-Operator)

    1.一元运算符 运算符 名称 描述 +$a 取正 根据情况将 $a 转化为 int 或 float。 -$a 取反 $a 的负值。 ++$a 前递增 $a 的值加 1,然后返回 $a。 –$a 前递减 $a 的值减 1, 然后返…

    PHP语言教程 2023年6月4日
    0420
  • 1.7PHP语言的常量(Constant)

    1.常量声明 1.1define()函数声明方式 使用 define() 函数声明常量,值可以为任意表达式。 1.2const关键字声明方式 使用 const 关键字声明常量,值只可以为 标量类型(int, float, bool, string)表达式 或者 包含元素只为标量类型(int, flo…

    PHP语言教程 2023年6月7日
    0250
  • 2.5PHP类型之接口(Interface)

    1.接口声明 接口体中可以包含静态方法、实例方法、构造函数(不推荐)、析构函数(不推荐)、魔术方法、类常量。 接口中的所有方法只可以定义方法签名,不可以定义方法的具体实现。 接口可以继承,但不可以实例化。 注意:接口中的所有方法与抽象方法的语法不同,接口中的所有方法不可以添加 abstract 关键字。 注意:接口中的…

    PHP语言教程 2023年7月5日
    0230

发表回复

登录后才能评论