- Глава 8. Разработка Linux в WSL
- Управление источником
- Инсталляция Git
- Установка и настройка
- Совместное использование полномочий между Windows и WSL
- Терминал Windows
- Установка терминала Windows из Microsoft Store
- Установка и настройка при помощи Chocolatey
- Настройка WSL в терминале Windows
- Visual Studio Code (VSCode)
Глава 8. Разработка Linux в WSL
Windows это великая платформа и одна из наиболее популярных операционных систем в мире, но мы не можем отрицать истинное число построенных приложений и рабочих нагрузок, запускаемых в операционной системе Linux. Microsoft воспользовалась этой возможностью в своей подсистеме Windows для Linux, а также в прочих проектах с открытым исходным кодом, а также в других отраслях, в которые Microsoft вносит свой вклад. В данной главе мы узнаем о таких инструментариях, как VSCode и удалённые расширения WSL, которые делают возможным для разработчика беспрепятственно разрабатывать приложения на базе Linux из операционной системы Windows со всеми необходимыми инструментами и средой выполнения в реальном времени, при этом в комфортной среде Linux, запускаемой поверх подсистемы Windows для Linux, не беспокоясь о трансляции путей Windows — Linux, совместном использовании файлов или любых иных проблемах при переходах между операционными системами.
Управление источником
Прежде чем мы сможем установить среду разработки Linux в подсистеме Windows для Linux, вначале нам требуется настроить контроль источника или управление версиями для отслеживания изменений в исходном коде и управления ими. В наши дни наиболее популярным инструментом управления исходным кодом, применяемым разработчиками по всему миру является Git, поэтому давайте начнём с его установки.
Инсталляция Git
Большинство дистрибутивов WSL обладают предварительно установленным в них “Git”, однако если он отсутствует или не установлен по умолчанию, как в дистрибутиве kali-linux, тогда вы пожелаете в явном виде установить “Git” в своей подсистеме Windows для Linux выполнив следующие шаги:
- Запустите WSL из меню Пуск Windows. Для этого примера мы применяем Ubuntu 18.04.
- Для установки Git из репозитория Ubuntu в WSL наберите следующую команду, как это показано на Рисунке 8-1.
> sudo apt-get install git
Установка Git в WSL
Теперь давайте проверим значение версии нашего установленного пакета выполнив приводимую ниже команду и если вы видите сведения о версии подобно показанным на Рисунке 8-2, тогда всё нормально для продолжения.
Проверка версии Git
Установка и настройка
Прежде всего вам необходимо настроить некую идентичность в Git с тем, чтобы все выполняемые вами изменения в коде связывались тегом с вашим именем (Author’s Name) и могло бы отличаться от любого иного изменения кода, когда вы работаете над неким кодом репозитория в команде разработчиков:
> git config --global user.name "Prateek Singh" > git config --global user.email prateek@ridicurious.com
После того как настроены необходимые имя и электронная почта, вы можете перечислить все настройки git и проверить их при помощи команды git config —list , как это показано на Рисунке 8-3.
Установка глобальных настроек Git
Разрешение отличий конца строки в Windows и Linux
Поскольку мы работаем и в среде Windows, и в среде Linux, а изменяемые вами файлы или программы могут создаваться в Windows в то время как вы выполняете к ним доступ из WSL, могут возникать некоторые проблемы. По причине смешения этих сред и наличие отличия в установленном по умолчанию конце строки между Windows и Linux, вы можете обнаружить сообщение Git об изменении большого числа файлов.
Чтобы продемонстрировать это мы проверим некий файл main.py в Windows при помощи git commit . После выполнения этого больше нечего фиксировать, как мы можем определить из соответствующего результата команды git status . Теперь, когда мы открываем ту же самую папку, в которой наш файл Python был зафиксирован, причём в своей подсистеме Windows для Linux, и запускаем git status , он всё ещё покажет не зафиксированные файлы. Проверив отличия этого файла при помощи git diff , мы видим добавляемым в конец строки странный символ ^m , что отражено на Рисунке 8-4; это происходит по причине концов строк. Windows применяет для окончания строки возврат каретки и перевод строки ( \r\n или CR/LF , в то время как окончания строк Unix представляются всего лишь переводом строки ( \n или LF . Символ ^M представляет возврат каретки (“carriage return”) или CR , а потому нам требуется быть крайне внимательными при обмене файлами между WSL (Unix) и Windows чтобы убеждаться в правильности трансляции окончаний строк.
Отличие конца строки в Windows и Linux
Для решения проблемы окончаний строк примените приводимую ниже команду в Windows, которой вы можете установить глобальные настройки git для обеспечения соответствующих окончаний строк в файлах при проверки правильности в Windows и также преобразовывать их в Unix стиль при фиксации этих файлов:
> git config --global core.autocrlf true
После выполнения изменений глобальной конфигурации, демонстрируемой на Рисунке 8-5, наш специальный символ, вводимый по причине “возврата каретки” предстаёт исчезающим на стороне Linux, в то время как мы применяем тот же самый файл Windows. Этот файл всё ещё содержит символы CR/LF , но git понимает, что ему следует преобразовывать их только в символы конца строки LF .
Принудительная вставка CRLF конца строки в WSL
Совместное использование полномочий между Windows и WSL
Когда вы работаете и в Windows, и в Linux, вы также желаете выполнить синхронизацию своих полномочий; это означает, что все хранимые в Windows полномочия должны быть доступными для Git в вашей подсистеме Windows для Linux и наоборот.
Если код репозиториев клонируется через HTTPS и вы хотите сделать полномочия неизменными и в Windows, и в WSL, тогда вам требуется выполнить следующие шаги для настройки помощника полномочий Windows:
- В Windows откройте консоль PowerShell и наберите приводимую ниже команду, завершая ввод нажатием на Enter:
PS > git config --global cretential.helper wincred
> git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-redential-wincred.exe"
Совместное применение полномочий git при помощи Диспетчера полномочий Windows
Когда мы пользуемся wincred в качестве credential.helper , git применяет Диспетчер полномочий Windows для хранения ваших полномочий и, при помощи данной конфигурации, он доступен как из Windows, так и из WSL.
Терминал Windows
Терминал Windows является проектом Microsoft с открытым исходным кодом, который имеет целью предоставление богатых свойств редактирования текста, поддержки вкладок, фона и стилей шрифтов. Более того, новый терминал обеспечивает привязку клавиш, а также широкие возможности настройки и установки, ибо настройки доступны в виде файла JSON с названием settings.json .
Основная цель данного проекта состоит в предоставлении расширенной практики разработчикам Windows и он очень хорошо работает с подсистемой Windows для Linux, позволяя разработчикам настраивать параметры командной строки для запуска индивидуального сеанса. Прежде чем мы перескочим к настройке WSL, давайте по- быстрому вначале ознакомимся как установить Терминал Windows и для этого имеются два способа.
Установка терминала Windows из Microsoft Store
Для установки Терминала Windows из Microsoft Store выполните приводимые ниже шаги:
- Пройдите в меню Пуск в нижнем левом углу экрана Windows 10 и отыщите “Microsoft Store”, после чего запустите его, как это показано на Рисунке 8-7.
Запуск Microsoft Store
Поиск Терминала Windows в Microsoft Store
Установка Терминала Windows из Microsoft Store
Установка и настройка при помощи Chocolatey
Наш второй метод пользуется инструментарием “Chocolatey”, который выступает в роли установщика из командной строки приложений Windows. Chocolatey применяет формат упаковки NuGet для паковки программного обеспечения и приложений, превращая установку в Windows в чрезвычайно простую.
Для установки Chocolatey в Windows 10 и последующей установки Терминала Windows воспользуйтесь следующим:
- Запустите консоль PowerShell с полномочиями администратора.
- Чтобы проверить что политики установки в PowerShel не помешают нашей установке выполните такую команду:
PS > Set-ExecutionPolicy Bypass -Scope Process -Force
PS > $URL = 'https://chocolatey.org/install.ps1' PS > $Script = (New-Object System.Net.WebClient).DownloadString($URL) PS > Invoke-Expression -Command $String
Выгрузка программного обеспечения Chocolatey
PS > choco install microsoft-windows-terminal
Установка Терминала Windows при помощи Chocolatey
Настройка WSL в терминале Windows
Теперь, когда мы установили Терминал Windows, давайте проследуем далее и настроим его на доступность в дистрибутиве Linux для WSL. По умолчанию, все установленные дистрибутивы Linux автоматически заполняют собой меню в значке символе вниз Терминала Windows, как это показано на Рисунке 8-12.
Рисунок 8-12
Запуск WSL из Терминала Windows
Имеются динамические профили, создаваемые во время исполнения и они добавляются в файл settings.json . Каждый динамический профиль уникально идентифицируется создаваемым системой GUID и свойством источника: Windows.Terminal.Wsl , Windows.Terminal.Azure или Windows.Terminal.PowershellCore ,чем-то подобным приводимым ниже в образце:
< "guid": "", "hidden": false, "name": "Ubuntu-18.04", "source": "Windows.Terminal.Wsl" >
Мы также можем настроить этот файл settings.json для запуска индивидуально задаваемого аргумента в командной строке WSL, например, тот который запускает в WSL Ubuntu 18.04, от имени пользователя “root”, что демонстрирует нам Рисунок 8-13. Настройки Терминала Windows сохраняются в файле settings.json , который можно найти в %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json .
< "guid": "", "hidden": false, "name": "Ubuntu-18.04", "commandline": "wsl.exe -u root -d ubuntu-18.04" >
К этим настройкам также можно получить доступ из ниспадающего меню Терминала Windows вслед за знаком плюс ( + ) для “New Tab” ➤ Settings. Или просто нажав Ctrl+ для запуска файла settings.json в текстовом редакторе.
Рисунок 8-13
Добавление командной строки WSL в настройках запуска Терминала Windows
Рисунок 8-14 показывает, что вы также можете установить каталог запуска для своего дистрибутива Linux и соответствующую иконку сеанса предоставляя пути, как это приводится в следующем примере:
< "guid": "", "hidden": false, "name": "Ubuntu-18.04", "commandline": "wsl.exe -d ubuntu-18.04", "startingDirectory" : "D:\\Workspace\\", "icon" : "D:\\icon.jpg" >
В своём предыдущем примере мы экранировали обратные слеши в пути к файлу Windows, так как обратный слеш применяется в Linux для пометки специального символа.
Рисунок 8-14
Добавление иконок и запуск каталога для WSL в Терминале Windows
Существуют доступными великое множество прочих конфигураций и настроек и их можно найти в документации на GitHub там, где доступен исходный код Терминала Windows.
Visual Studio Code (VSCode)
Visual Studio Code это облегчённый, кроссплатформенный редактор кода, который может запускаться в Windows, macOS, and Linux. VSCode поддерживает широкое разнообразие языков программирования, таких как Python, C#, C++, PHP и Java и является расширяемым через те расширения, которые можно устанавливать для расширения имеющихся в этом редакторе кода возможностей.
Самый первый шаг состоит в выгрузке и установке Visual Studio Code с его URL. это займёт всего пару минут, поскольку по своей природе он облегчён. После установки Visual Studio Code нам требуется установить расширение “Remote – WSL”.
Расширение “Remote – WSL” позовляет разработчикам применять подсистему Windows для Linux в качестве среды разработки для Visual Studio Code. Это означает, что файлы WSL доступны для их изменения и вы можете отлаживать свои приложения Linux из Windows. Это расширение также заботится о большом числе трансляций путей и проблем совместимости между Windows и Linux. VSCode устанавливает сервер VSCode внутри подсистемы Windows для Linux, через запущенные в Windows инструментарий и инфраструктуру которой можно производить выполнение в WSL, а также настраивается канал взаимодействия который способен получать команды из Windows, а затем выполнять их в WSL и возвращать полученный результат обратно в Windows.
Рисунок 8-15 демонстрирует как взаимодействуют Windows и WSL при помощи Visual Studio Code.
Рисунок 8-15
Удалённый сервер Visual Studio Code в подсистеме Windows для Linux