Mengedit file dalam Subsistem Windows untuk lingkungan pengembangan Linux

23

Windows Subsystem for Linux (WSL) berfungsi cukup baik untuk membuat sebagian besar alat Linux commandline tersedia dan bekerja pada Windows tanpa modifikasi. Namun, itu menjadi sedikit rumit untuk pengembangan, ketika orang menginginkannya

  • Bangun proyek menggunakan Linux toolchain yang tidak memiliki padanan Windows yang didukung dengan baik (Ruby, Node, dll)
  • Edit file menggunakan editor GUI berbasis Windows seperti kode Visual Studio.

Masalahnya adalah aplikasi Windows tidak dapat memodifikasi file di dalam sistem file virtual lxss . Secara langsung memodifikasi file-file ini diketahui menyebabkan segala macam masalah.

Oleh karena itu, tampaknya hanya ada dua pilihan suboptimal ketika menggunakan WSL untuk pengembangan:

  1. Simpan proyek di bawah lxss ( /home/foo). Toolchain normal berfungsi dengan baik. Namun, pengeditan terbatas pada Vim / Emacs berbasis terminal atau apa pun yang dapat dijalankan di bawah server X janky , yang kurang mulus daripada editor asli yang berjalan pada Windows.

  2. Simpan proyek di bawah sistem file Windows ( /mnt/c/Users/foo). Sekarang semua editor berbasis Windows dapat digunakan untuk pengembangan. Namun, toolchain berbasis Linux rapuh karena tidak dirancang untuk digunakan pada "drive jaringan", dan dapat menyebabkan masalah dengan menonton file atau database .

Apakah ada cara untuk mendapatkan yang terbaik dari kedua dunia di sini - yaitu, untuk dapat mengedit menggunakan aplikasi Windows asli, tetapi masih memiliki kerja toolchain Linux seperti biasanya pada drive lokal?

Andrew Mao
sumber

Jawaban:

4

Microsoft baru-baru ini menambahkan dukungan komprehensif untuk ini, dan seharusnya tersedia secara umum pada pembaruan April 2019 (19H1). Setelah siap, server 9P akan berjalan di latar belakang setiap kali distro Linux berjalan. Server 9P akan dapat menangani metadata sistem file Linux, dan Windows akan dapat memperlakukannya sebagai drive jaringan sehingga dapat mengaksesnya dengan aman. Anda dapat membacanya di https://blogs.msdn.microsoft.com/commandline/2019/02/15/whats-new-for-wsl-in-windows-10-version-1903/ .

Dengan fitur baru, Anda akan dapat dengan aman mengakses file sistem file Windows dan Linux dari Windows, selama Anda melewati server 9P. Ini akan ditangani secara asli dari dalam WSL. Misalnya, dari baris perintah WSL Anda dapat mengetik code /mnt/c/Users/username/src/windows-file.txtuntuk membuka file Windows di VS Code, atau mengetik code /home/username/src/linux-file.txtuntuk membuka file Linux dalam VS Code.

Jika Anda bukan bagian dari Program Windows Insider, Anda belum memiliki akses ke ini sehingga Anda masih harus menggunakan metode yang lebih lama, seperti wslpath.

wslpath akan mengkonversi antara jalur gaya Windows dan Linux sehingga Anda dapat dengan mudah membuka file Windows dari baris perintah WSL. Sesuai https://github.com/Microsoft/WSL/issues/3146#issuecomment-388118689 , itu akan menolak untuk mengubah jalur sistem file Linux (yaitu% AppData% \ lxss), karena tanpa 9P tidak aman untuk memodifikasi file-file ini dari Windows . Ini berarti Anda tidak dapat membuka /home/username/src/linux-file.txt, tetapi Anda dapat menggunakannya code "$(wslpath -aw /mnt/c/Users/username/src/windows-file.txt)".

Di masa lalu, ada sejumlah alat pihak ketiga untuk melakukan konversi yang sama tetapi wslpath melakukannya secara asli - pada kenyataannya, ls -l /bin/wslpathmenunjukkan bahwa itu hanya tautan ke / init.

Shane Lawrence
sumber
@alex wsltools dapat mengubah jalur Linux ke Windows yang setara. Dengan cara ini, Anda dapat membuka program Windows dari baris perintah Linux, dan memerintahkannya untuk membuka file di sistem file Windows.
Shane Lawrence
Jangan berpikir begitu. blogs.msdn.microsoft.com/commandline/2016/11/17/… . Bisakah Anda memberikan referensi bahwa itu aman untuk dilakukan?
Alex
@alex, terima kasih telah membahas ini. Ini adalah poin yang baik untuk diklarifikasi. Tautan yang Anda bagikan (yang juga ada dalam pertanyaan OP) memberi tahu Anda untuk tidak membuka file di sistem file Linux dari Windows (yaitu jangan menggunakan aplikasi Windows untuk mengubah hal-hal di bawah% AppData% \ lxss). Jawaban saya dan komentar saya sebelumnya keduanya menjelaskan cara membuka file Windows di dalam program Windows dari baris perintah WSL (mis. Buka "C: \ Users \ Username \ src \ example.txt" dari jalur WSL-nya / mnt / c / Users / Nama pengguna / src / example.txt "). Ada juga metode baru yang keluar. Saya telah memperbarui jawaban saya untuk menunjukkan perbedaan dan metode baru.
Shane Lawrence
Shane, apa gunanya menggunakan WSL jika Anda akan mengedit file windows dengan windows binaries? Kenapa tidak menggunakan windows saja?
Alex
Berita baik: WSL sekarang dapat mengedit file linux tanpa masalah dengan Win10 1903: devblogs.microsoft.com/commandline/… "Di masa lalu, membuat dan mengubah file Linux dari Windows mengakibatkan kehilangan file atau merusak data. Membuat ini menjadi mungkin fitur yang sangat diminta dan telah lama dinantikan. Dengan bangga kami mengumumkan Anda sekarang dapat dengan mudah mengakses semua file di distro Linux Anda dari Windows. "
KERR
1

Saya yakin orang yang lebih pintar dari saya telah melihat pertanyaan ini. Tapi saya akan menjawabnya. Jujur saya percaya jawabannya saat ini tidak. Ada cara yang lebih baik untuk mendapatkan yang terbaik dari kedua dunia, selain yang telah Anda sebutkan (Yang saya tahu).

Saya yakin itu bukan jawaban yang diinginkan siapa pun, tetapi saya pikir itu jawaban yang benar. Saya tahu ini adalah sesuatu yang Microsoft coba untuk membuat lebih halus, tetapi belum ada di sana.

trueCamelType
sumber
Dan itu masih belum.
hugo der hungrige
0

Pada paruh pertama tahun 2018, Microsoft merilis beberapa perbaikan untuk WSL yang membahas beberapa masalah ini:

Tak satu pun dari ini sepenuhnya membahas masalah dalam pertanyaan asli saya, tetapi mereka dapat meningkatkan kegunaan dalam kasus-kasus tertentu tertentu.

Andrew Mao
sumber
Terima kasih! Tetap perbarui. Saya bahkan akan baik-baik saja jika membiarkan saya "aman" menggunakan editor GUI favorit saya untuk file tertentu, saya bisa hidup tanpa integrasi build-tools yang tepat (dapat dilakukan dari konsol). Bahkan sementara "rsync-ing" file ke copy windows lokal akan baik-baik saja selama itu dilakukan secara transparan. Saya mendekati titik yang mengganggu di sana terlalu sulit untuk mengedit dan melacak semua file dari CLI (setidaknya untuk saya), dan saya benar-benar hanya ingin "melakukan semua hal di windows," kirim / salin "kode ke WSL , jalankan alat di sana
Dan M.
0

Jika Anda ingin menjalankan perintah linux dan edit dengan editor windows. Anda dapat menyimpan kode sumber Anda (yang ingin Anda edit dan uji), di suatu tempat di sistem file Anda (seperti c: \ source \) Dan akses itu di konsol linux melalui / mnt / c / source. Semoga ini membantu.

Eli
sumber
0

Sekarang Visual Studio Code mendukung (Seperti yang saya gunakan). "Ekstensi WSL" yang memungkinkan Anda melakukan file / folder CRUD (Buat, baca, perbarui, hapus) dari lokasi Linux. Meskipun saya masih berjuang untuk mendapatkan setup yang sama untuk atom, yang merupakan pilihan saya untuk editor pengembangan aplikasi Rails di platform Linux.

pengguna132929
sumber