Skip to content

Instantly share code, notes, and snippets.

@aratak
Created December 26, 2016 11:52
Show Gist options
  • Save aratak/a9c7fa8a353162be0646db5a7598a491 to your computer and use it in GitHub Desktop.
Save aratak/a9c7fa8a353162be0646db5a7598a491 to your computer and use it in GitHub Desktop.

Разворачиваем окружение для ruby-разработчиков на Windows 10 + Linux Subsystem.

Установка Windows Subsystem for Linux (WSL)

  1. Устанавливаем Windows 10. Необходима сборка (build) 14942 и выше (узнать можно, выполнив команду winver). Если установлена более старая сборка:
    • Settings > Update & Security > Windows Insider Program (подключаемся к программе, нужен аккаунт Microsoft).
    • Попросит перезагрузиться ( у меня пару раз просил, только потом раздуплился ), после чего появится переключатель Choose your insider level - выбираем Fast.
    • Идём в Settings > Update & Security > Windows Updates > Check for update. Смотрим, нашёл ли он обновление до новой сборки (этот шаг у меня занял сутки. Microsoft раздуплился только на следующий день и выдал мне обновление).
    • После того, как будет установлена нужная сборка, можно отключить Windows Insider Program, либо поставить переключалку с Fast на Slow, дабы что-нибудь внезапно не сломалось.
  2. Включаем режим разработчика: Settings > Update & Security > For developers > Developer mode. Он необходим для включения подсистемы Linux.
  3. В этом же окне, в поиске набираем Windows features, идём в Turn Windows features on or off.
  4. Выбираем Windows Subsystem for Linux > Ok.
  5. Запускаем команду: bash. Система задаст несколько вопросов:
  • хотим ли мы установить т.н. "Ubuntu on Windows" - соглашаемся (в Microsoft говорят, что в последних сборках устанавливается чистенькая Ubuntu 16.04)
  • имя пользователя UNIX (не должно совпадать с пользователем Windows)
  • пароль (дважды)
  1. Установка Windows Subsystem for Linux завершена.

Настройка окружения

Если оболочка bash запускается от пользователя root, сразу делаем sudo -iu USERNAME, где USERNAME - имя пользователя UNIX, которое было задано при установке (по тексту будет использоваться USERNAME - deploy). Все инструкции далее выполняются от имени созданного пользователя (не root).

  1. Запускаемbash и обновляемся:
sudo apt-get update
sudo apt-get upgrade
  1. Если при переключении пользователя (или других командах) выдается сообщение unable to resolve host, выполняем команду:
sudo sed -i "2 i 127.0.0.1 $(hostname)" /etc/hosts
  1. Устанавливаем необходимые пакеты.
sudo apt-get install vim git curl wget libsqlite3-dev zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev libqt4-dev pkg-config postgresql-client libpq5 libpq-dev python ansible python-software-properties

Во время установки процесс может прерваться и попросить выполнить sudo apt-get install -f - это нормально, смело выполняем данную команду. 4. Устанавливаем ruby ( rbenv ):

cd ~ 
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
  1. Закрываем оболочку bash и запускаем её заново. Не забываем сменить пользователя.
  2. Устанавливаем ruby, например: rbenv install 2.3.1
  3. При необходимости устанавливаем NVM + Node
  4. Postgresql устанавливаем на Windows.
  5. Redis можно установить как sudo apt-get install redis-server redis-tools под WSL, запуск: sudo service redis-server start, работает стабильно.
  6. Также необходимо добавить следующие строки в файл ~/.bashrc:
if [ -z "$(pgrep ssh-agent)" ]; then
    rm -rf /tmp/ssh-*
    eval $(ssh-agent -s) > /dev/null
else
    export SSH_AGENT_PID=$(pgrep ssh-agent)
    export SSH_AUTH_SOCK=$(find /tmp/ssh-* -name agent.*)
fi

if [ "$(ssh-add -l)" == "The agent has no identities." ]; then
    ssh-add
fi

Важно

В указанной версии (14942) починили баг, из-за которого не работает spring ( работает только со --skip-spring ). Поэтому лучше обновиться, после чего начинать спокойно работать :-)

Прочее

Диски Windows доступны из WSL: /mnt/<drive>/, например /mnt/c/ - диск С:. Т.е. для работы можно выделить каталог Windows (для удобного доступа из IDE).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment