TOOCS.asdf
TOOCS / Ansible角色: TOOCS.asdf
- 安装
asdf
- 对于
zsh
用户,设置~/.zlogin
以提供即用的体验 - 使用
asdf
安装您选择的语言(支持有限,请参见 安装语言)
TOOCS?
TOOCS - 一次性点击设置工具是一些设计用于一键设置系统的工具/ansible角色。它们是一种简单、可靠的工具设置方式。您可以直接使用它们,或者查看其代码,作为逐步操作的教程。
正如名字所示,它们是有观点的:虽然它们保证可以一键设置给定工具,但并不保证其实现方式的一致性,新版本可能会引入不兼容的更改。
阅读代码,并确保您理解发生了什么!
目录
要求
该角色仅支持MacOSX和Ubuntu/Debian。
安装后 - Shell配置
Zsh用户
在使用 zsh
的用户上使用此TOOCS时,TOOCS将自动配置 ~/.zlogin
文件。无需进一步操作。
如果您没有使用框架,例如 oh-my-zsh
,或者在启动shell时收到“command not found: compinit”之类的错误消息,那么在TOOCS在 ~/.zlogin
文件中添加的行之前添加以下行:
autoload -Uz compinit && compinit
非Zsh用户
对于非zsh
用户,需要一些手动设置。根据您的操作系统和shell,运行以下命令:
Ubuntu上的Bash(及其他Linux发行版)
echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc
macOS上的Bash
echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bash_profile echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bash_profile
Fish
echo 'source ~/.asdf/asdf.fish' >> ~/.config/fish/config.fish mkdir -p ~/.config/fish/completions; and cp ~/.asdf/completions/asdf.fish ~/.config/fish/completions
重启您的shell以使路径更改生效。(打开一个新的终端标签通常就可以。)
如果您的shims没有被检测到,问题很可能是由于上述的 asdf.bash 或 asdf.fish 没有在您的 ~/.bash_profile
、~/.zshrc
或 ~/.config/fish/config.fish
的最后进行加载。它需要在您设置 $PATH
之后进行加载。
来源: 官方 'asdf' 设置
安装语言
在安装 asdf
后,此TOOCS可以自动安装您选择的不同版本的语言。它将处理每种语言的前置依赖项的安装,并安装不同版本,通常优先从源代码编译,而不是下载预编译的二进制文件。
变量 languages_to_install
是一个包含所有要安装语言及其特定版本的列表。
要安装语言,请在
languages_to_install
列表中添加条目条目必须具有以下格式:
- LANG: - x.x.x - y.y.y
其中
LANG
是语言名称,x.x.x / y.y.y
是版本号。languages_to_install
列表是有序的:languages_to_install: - erlang: - 21.1.14 - 20.3.8.9 - elixir: - 1.7.4
在此示例中,在安装
elixir
之前将首先安装两个版本的erlang
。这很方便,因为elixir
需要先编译erlang
。每种语言的_要安装的版本列表_也是有序的。
- 列表中的第一个版本将被设置为
global
- 对于支持多个同时
global
的语言,列表中的所有版本将按顺序设置为全局(例如:python)
languages_to_install: - erlang: - 21.1.14 - 20.3.8.9 - python: # 支持多个 `global` - 3.7.0 - 2.6.6 - 2.7.15
在此示例中,运行TOOCS后,shell 将配置如下:
erl
命令(erlang
)将指向版本21.1.14
python
命令将指向版本3.7.0
python
支持多个global
,以下命令也将可用:python3.7
/pip3.7
python2.7
/pip2.7
python2.6
/pip2.6
python3
/pip3
=> 最新的python3
版本:python3.7
/pip3.7
python2
/pip2
=> 最新的python2
版本:python2.7
/pip2.7
- 列表中的第一个版本将被设置为
支持的语言
- Python
- 支持多个
global
版本 - 在Debian stretch(和Ubuntu bionic)上,只有 python 版本
>= 2.7.13
和>= 3.5.3
可以自动安装。早期版本可以手动安装,但目前需要一个解决方法。请参见: Pyenv - 常见构建问题 - OpenSSL
- 支持多个
- Erlang
- 编译时带有文档,但没有
jinterface
- 编译时带有文档,但没有
- Elixir
- 需要
erlang
- 明确从源代码编译
- **/!\ 确保当前版本的
erlang
被要安装的elixir
版本支持 /!\**- 例如:
elixir v1.6.6
与erlang 21
不兼容!要编译elixir v1.6.6
,必须使用erlang 20
。
- 例如:
- 需要
角色变量
asdf_version
- 要安装的
asdf
版本 - 默认:
v0.6.2
- 要安装的
skip_shell_setup
- 如果为
True
,则仅安装asdf
而不设置 shell - 默认:
False
- 如果为
languages_to_install
- 使用
asdf
安装的语言及版本列表。参见 安装语言 - 默认:
[]
- 使用
示例剧本
- hosts: sandbox
tasks:
- include_role:
name: TOOCS.asdf
# 或者
- hosts: sandbox
tasks:
- include_role:
name: TOOCS.asdf
vars:
asdf_version: v0.6.1
skip_shell_setup: True
# 或者
- hosts: sandbox
tasks:
- include_role:
name: TOOCS.asdf
vars:
languages_to_install:
- python:
- 3.7.0
- 2.7.15
- 2.6.6
- erlang:
- 20.3.8.9
- 21.1.4
- elixir:
- 1.7.4
- 1.6.6
许可证
MIT
作者信息
在Twitter上关注我: @ThisIsFlorianK
了解更多关于我的工作的内容: Florian Kempenich - 个人网站