16

Подсистема Windows для Linux (WSL) прекрасно работает для обеспечения доступности большинства инструментов командной строки для Linux и работы в Windows без изменений. Тем не менее, это становится немного сложнее для развития, когда кто-то хочет

  • Создайте проект, используя набор инструментов Linux , который не имеет хорошо поддерживаемого эквивалента Windows (Ruby, Node и т.д.)
  • Редактируйте файлы с помощью редактора графического интерфейса пользователя Windows, такого как код Visual Studio.

Проблема в том, что приложения Windows не могут изменять файлы внутри виртуальной файловой системы lxss. Известно, что прямое изменение этих файлов вызывает всевозможные проблемы.

Поэтому, кажется, есть только два неоптимальных варианта использования WSL для разработки:

  1. Сохраните проект под lxss (/home/foo). Обычный набор инструментов работает правильно. Тем не менее, редактирование ограничено либо Vim/Emacs на основе терминала, либо тем, что может быть запущено на опасном X-сервере, что менее плавно, чем в собственных редакторах, работающих в Windows.

  2. Сохраните проект в файловой системе Windows (/mnt/c/Users/foo). Теперь любой Windows-редактор можно использовать для разработки. Однако набор инструментов на основе Linux хрупок, поскольку он не предназначен для использования на "сетевом диске" и может вызвать проблемы с просмотром файлов или базами данных.

Есть ли способ получить лучшее из обоих миров - то есть, чтобы иметь возможность редактировать с помощью собственного приложения Windows, но при этом иметь инструментальную цепочку Linux, как это обычно бывает на локальном диске?

3 ответа3

3

Вы можете открывать программы Windows из WSL, но вам нужно конвертировать пути к файлам, если вы хотите открывать файлы Windows с помощью программ Windows из WSL. wsltools сделает это за вас.

Если вы откроете vscode из WSL, он будет ждать его закрытия, чтобы вы знали, когда это будет сделано с любыми файлами, которые он редактировал. Проблемы с базой данных, о которых вы упомянули, в основном связаны с тем, что inotify не отвечает на события, которые вызывают его в Linux. К сожалению, это еще не реализовано в WSL, поэтому у приложения Linux нет хорошего способа узнать, когда какой-то другой процесс Windows закрывает файл.

0

Я уверен, что более умные люди, чем я, смотрели на этот вопрос. Но я отвечу на это. Я искренне верю, что ответ в настоящее время нет. Есть лучший способ получить лучшее из обоих миров, кроме тех, которые вы упомянули (о которых я знаю).

Я уверен, что это не тот ответ, который кто-то хочет, но я думаю, что это правильный ответ. Я знаю, что это то, что Microsoft пытается сделать более гладкой, но это еще не сделано.

0

В первой половине 2018 года Microsoft выпустила некоторые улучшения WSL, которые решают некоторые из этих проблем:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .