asdf
TOOCS / Роль Ansible: TOOCS.asdf
- Устанавливает
asdf
- Для пользователей
zsh
настраивает~/.zlogin
для удобного использования - Использует
asdf
для установки выбранных вами языков (ограниченная поддержка, смотрите Установка языков)
TOOCS?
TOOCS - это набор инструментов / ролей ansible, созданный для настройки системы одним кликом. Это простой и надежный способ установить нужный инструмент. Вы можете использовать их как есть, или изучить их код как пошаговое руководство.
Как следует из названия, они имеют определенную точку зрения: хотя они гарантируют установку нужного инструмента одним кликом, они не гарантируют согласованности в том, как это достигается, новые версии могут ввести разрушающие изменения. Изучите код и убедитесь, что понимаете, что происходит!
Содержание
Требования
Эта роль работает только на MacOSX и Ubuntu/Debian.
Пост установка - Настройка оболочки
Пользователи Zsh
При использовании этого TOOCS для пользователя с оболочкой zsh
, TOOCS автоматически настроит файл ~/.zlogin
. Дальнейших действий не требуется.
Если вы не используете фреймворк, как oh-my-zsh
, или если при запуске оболочки вы получаете сообщение об ошибке 'command not found: compinit', добавьте эту строку перед строками, добавленными TOOCS, в вашем файле ~/.zlogin
:
autoload -Uz compinit && compinit
Пользователи не Zsh
Для пользователей, не использующих zsh
, потребуется некоторая ручная настройка. В зависимости от вашей ОС и оболочки выполните следующее:
Bash на Ubuntu (и других дистрибутивах Linux)
echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc
Bash на macOS
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; и скопируйте ~/.asdf/completions/asdf.fish ~/.config/fish/completions
Перезапустите вашу оболочку, чтобы изменения PATH вступили в силу. (Открытие новой вкладки терминала обычно решает эту проблему.)
Также, если у вас возникают проблемы с определением установленных шимо́в, это, скорее всего, из-за того, что вышеуказанные 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
В этом примере обе версии
erlang
будут установлены перед установкойelixir
. Это удобно, поскольку для компиляции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, оболочка будет настроена следующим образом:
- Команда
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
, не настраивая оболочку - По умолчанию:
False
- Если
languages_to_install
- Список языков и версий, которые нужно установить с помощью
asdf
. Смотрите Установка языков - По умолчанию:
[]
- Список языков и версий, которые нужно установить с помощью
Пример playbook
- 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
Узнайте больше о моей работе: Флориан Кемпиних - Личный сайт
ansible-galaxy install TOOCS/asdf