Руководство о том, как создать настраиваемый и воспроизводимый дистрибутив WSL, которым можно поделиться с вашей командой разработчиков, чтобы сохранить одинаковые локальные настройки, чтобы мы все могли сократить «Это работает на моей машине…» моменты.

Введение

Работа в команде разработчиков программного обеспечения сопряжена со своими взлетами и падениями. Одним из больших недостатков для меня на начальном этапе были несоответствия в том, как каждый член команды настраивал свою машину разработки. Да, я знаю, что у всех разные вкусы и предпочтения… но некоторые несоответствия сводятся к тому, что просто не существует установленного способа делать что-то или люди пытаются что-то сделать, но это не сработало, поэтому они нашли свое собственное решение.

По моему собственному опыту, проблема заключается в том, что один член команды может использовать виртуальную машину для разработки, а другой использует WSL, Git Bash или CMD. Это приводит к множеству проблем, когда вы пытаетесь помочь друг другу с общими проблемами или объяснить, как что-то сделать, поскольку для каждой отдельной настройки требуются разные процедуры или разные инструменты, не говоря уже о несоответствиях с версиями инструментов.

Итак, вы высказали свою точку зрения, каково ваше решение?

Конечно, одного решения описанной выше проблемы не существует. Однако решение, которое я решил использовать, заключается в использовании WSL, но не обычным способом. Чтобы убедиться, что любой, кто использует установку, получит установку почти зеркального отображения, я создал набор сценариев и Dockerfile, которые делают несколько вещей.

  • Установите все необходимые инструменты… java, maven и т. д.
  • Создайте нового пользователя (на основе пользователя, запускающего скрипт)
  • Скопируйте по умолчанию файл .bashrc для согласования псевдонимов и функций.

Есть много других вещей, которые можно сделать здесь, например, настроить любую сеть, необходимую для вашей среды. Для моего собственного рабочего места это необходимо для подключения к Интернету через VPN, но я не упомянул его здесь, поскольку он может не передаваться другим вариантам использования.

Давайте начнем

Предпосылки

Перед установкой необходимо выполнить несколько требований:

  • Включить/установить WSL2 (может работать и с первой версией)
  • Докер Рабочий стол
  • Клонируйте/скачайте следующий репозиторий: https://github.com/n-murray/wsl-automated-setup

После того, как вы установили и заработали вышеперечисленное, вы можете приступить к установке.

Если вы предпочитаете не загружать репозиторий, вы можете воссоздать его самостоятельно.

К вашему сведению: в зависимости от вашей установки и конфигурации Git иногда может изменяться окончание строк файлов из формата Linux (LF) в формат Windows (CRLF), что может вызвать проблемы с установкой в ​​виде таких файлов, как «wsl.conf» и «.bashrc». ” в папке ресурсов должен быть LF, чтобы Linux правильно читал их.

Монтаж

Если вы заглянете внутрь репозитория, то заметите, что он содержит два командных файла и пару папок. Самая важная часть — это пакетные файлы, они оба будут действовать так, как следует из их названия: собирать дистрибутив WSL и удалять его.

Чтобы создать среду, вам просто нужно открыть папку в командной строке или окне PowerShell и запустить «build_environment.bat». Процесс может занять некоторое время в зависимости от вашего интернет-соединения, так как пакетный файл создает образ Docker, а также загружает и устанавливает все его требования, изложенные в файле Docker, содержащемся в папке ресурсов.

После завершения вы сможете проверить результаты, перечислив свои дистрибутивы WSL, выполнив приведенную ниже команду.

wsl --list

Это должно дать вам результат, аналогичный приведенному выше, с новым дистрибутивом, который называется «dev-env». Вы также заметите, что новый дистрибутив был установлен по умолчанию, поэтому теперь вы можете получить к нему доступ, просто запустив «wsl» в PowerShell или CMD.

Чтобы удалить этот дистрибутив, вы можете запустить «remove_environment.bat», это отменит регистрацию дистрибутива в WSL и удалит установочные файлы. Используя комбинацию двух пакетных файлов, вы можете легко удалить сломанную установку и переустановить новую копию. Это пригодится после изменения некоторых настроек, которых у вас быть не должно, и вы не помните, что это было.

Да, это почти все, что вам нужно сделать, чтобы все заработало…

Так что же только что произошло?

Позвольте мне дать общее объяснение того, что на самом деле делает «build_environment.bat», в этом нет ничего особенного.

Приведенные выше команды — это первые шаги по созданию собственного дистрибутива Linux.

Строка 1 создает Dockerfile в папке ресурсов и передает текущего пользователя в качестве аргумента для создания пользователя в образе Docker.

Строка 2 запускает образ, созданный выше, и называет контейнер «dev-env», имя не имеет значения и предназначено исключительно для его вызова в последующих командах.

Строка 3 экспортирует файловую систему контейнеров dev-env в виде tar-архива с именем dev-env.tar.gz.

Строки 4 и 5 просто очищают созданный контейнер и образ.

После создания файла tar следующим шагом будет импортировать его в WSL как новый дистрибутив. Это делается с помощью команд в приведенном выше фрагменте кода.

Строка 1 устанавливает версию WSL по умолчанию как 2, на случай, если она еще не была установлена.

Строка 2 выполняет фактический импорт дистрибутива из созданного ранее tar-файла. Он импортирует файл и называет новый дистрибутив «dev-env» (это может быть что угодно)

Строка 3 просто устанавливает новый дистрибутив в качестве дистрибутива WSL по умолчанию, это помогает автоматически интегрировать Docker Desktop с дистрибутивом.

Строка 6 снова просто очищает, удаляя файл tar, поскольку он больше не нужен, и его можно создать снова, если он нужен.

Подведение итогов

Используя приведенные выше сценарии, вы можете быстро создать новый дистрибутив WSL и так же быстро удалить его, а поскольку мы используем Dockerfile, вы можете добавить любые необходимые вам инструменты или удалить те, которые больше не нужны.

Конечная цель — иметь несколько файлов Dockerfile, которые можно использовать для быстрого создания нового дистрибутива для разных проектов с разными требованиями, это можно сделать несколькими способами. Создание новой ветки или ответвления репозитория, вероятно, является самым простым, но наличие нескольких файлов Dockerfile в папке ресурсов может работать, если выбрать дистрибутив для установки с аргументом, переданным в пакетный файл.

Я призываю всех, кто заинтересован, делать какие-либо предложения по репозиторию, поскольку я открыт для сотрудничества и создания разных веток для разных типов дистрибутивов.

И, наконец, не стесняйтесь оставлять любые комментарии к этой статье или описанному в ней процессу, поскольку я всегда ищу пути улучшения.