Linux geliştirme ortamı için bir Windows Alt Sistemindeki dosyaları düzenleme


23

Linux için Windows Alt Sistemi (WSL), komut satırı Linux araçlarının çoğunu kullanılabilir hale getirmek ve değişiklik yapmadan Windows üzerinde çalışmak için oldukça iyi çalışır. Bununla birlikte, geliştirme için biraz zorlaşır.

  • İyi desteklenen bir Windows eşdeğerine (Ruby, Düğüm, vb.) Sahip olmayan bir Linux araç zinciri kullanarak bir proje oluşturun
  • Visual Studio kodu gibi Windows tabanlı bir GUI düzenleyicisi kullanarak dosyaları düzenleyin .

Sorun, Windows uygulamalarının sanal lxss dosya sistemindeki dosyaları değiştirememesidir . Bu dosyaları doğrudan değiştirmenin her türlü soruna neden olduğu bilinmektedir.

Bu nedenle, geliştirme için WSL kullanma söz konusu olduğunda sadece iki yetersiz seçenek var gibi görünüyor:

  1. Projeyi lxss ( /home/foo) altında saklayın . Normal alet zinciri düzgün çalışıyor. Bununla birlikte, düzenleme, terminal tabanlı Vim / Emacs veya Windows'ta çalışan yerel editörlerden daha az pürüzsüz olan janky X sunucusu altında çalıştırılabilen her şeyle sınırlıdır .

  2. Projeyi Windows dosya sistemi ( /mnt/c/Users/foo) altında depolayın . Artık herhangi bir Windows tabanlı editör geliştirme için kullanılabilir. Ancak, Linux tabanlı araç zinciri bir "ağ sürücüsünde" kullanılmak üzere tasarlanmadığından kırılgandır ve dosya izleme veya veritabanlarında sorunlara neden olabilir .

Burada her iki dünyanın en iyisini elde etmenin herhangi bir yolu var mı - yerel bir Windows uygulaması kullanarak düzenleme yapabilmek, ancak yine de Linux araç zincirinin normalde yerel bir sürücüde olduğu gibi çalışmasını sağlamak mı?

Yanıtlar:


4

Microsoft yakın zamanda bunun için kapsamlı bir destek ekledi ve genellikle Nisan 2019 (19H1) güncellemesinde mevcut olmalıdır. Hazır olduğunda, bir Linux dağıtımı çalışırken 9P sunucusu arka planda çalışır. 9P sunucusu Linux dosya sistemi meta verilerini işleyebilecek ve Windows bunu güvenli bir şekilde erişebilmesi için bir ağ sürücüsü olarak ele alabilecektir. Bu konuda https://blogs.msdn.microsoft.com/commandline/2019/02/15/whats-new-for-wsl-in-windows-10-version-1903/ adresinden okuyabilirsiniz .

Yeni özellik sayesinde, 9P sunucusundan geçtiğiniz sürece Windows'tan hem Windows hem de Linux dosya sistemi dosyalarına güvenle erişebileceksiniz. Bu, yerel olarak WSL içinden ele alınacaktır. Örneğin, WSL komut satırından code /mnt/c/Users/username/src/windows-file.txtVS Kodunda bir Windows dosyasını açmak için yazabilir veya VS Kodunda code /home/username/src/linux-file.txtbir Linux dosyasını açmak için yazabilirsiniz .

Windows Insider Programının bir parçası değilseniz, buna henüz erişemezsiniz, bu yüzden wslpath gibi daha eski bir yöntem kullanmanız gerekir.

wslpath, Windows ve Linux tarzı yollar arasında dönüştürme yapar, böylece Windows dosyalarını WSL komut satırından kolayca açabilirsiniz. Https://github.com/Microsoft/WSL/issues/3146#issuecomment-388118689 uyarınca , Linux dosya sistemi yollarını (yani% AppData% \ lxss) dönüştürmeyi reddedecektir, çünkü 9P olmadan bu dosyaları Windows'tan değiştirmek güvenli değildir . Bu, açamayacağınız /home/username/src/linux-file.txt, ancak kullanabileceğiniz anlamına gelir code "$(wslpath -aw /mnt/c/Users/username/src/windows-file.txt)".

Geçmişte, aynı dönüşümü gerçekleştirmek için bir dizi üçüncü taraf aracı vardı, ancak wslpath bunu doğal olarak yapıyor - aslında, ls -l /bin/wslpathbunun sadece / init için bir bağlantı olduğunu gösteriyor.


@alex wsltools Linux yollarını Windows eşdeğerlerine dönüştürebilir. Bu şekilde, bir Linux programını Linux komut satırından açabilir ve Windows dosya sisteminde bir dosya açmasını söyleyebilirsiniz.
Shane Lawrence

Böyle düşünmeyin. blogs.msdn.microsoft.com/commandline/2016/11/17/… . Güvenli olmasının herhangi bir referansı var mı?
Alex

@alex bunu getirdiğin için teşekkürler. Bu açıklığa kavuşturmak için iyi bir noktadır. Paylaştığınız bağlantı (aynı zamanda OP'nin sorusudur), Linux dosya sistemindeki dosyaları Windows'tan açmamanızı söylüyor (yani% AppData% \ lxss altındaki şeyleri değiştirmek için Windows uygulamalarını kullanmayın). Cevabım ve önceki yorumum Windows dosyalarının Windows programlarında WSL komut satırından nasıl açılacağını açıklıyor (örn. "C: \ Users \ Kullanıcı Adı \ src \ example.txt" dosyasını WSL yolundan "/ mnt / c / Users / Kullanıcı adı / src / example.txt "). Ayrıca yeni bir yöntem çıkıyor. Ayrımı ve yeni yöntemi göstermek için cevabımı güncelledim.
Shane Lawrence

Shane, Windows dosyalarını windows ikili dosyaları ile düzenleyecekseniz WSL'yi kullanmanın anlamı nedir? Neden sadece pencereleri kullanmıyorsunuz?
Alex

İyi haber: WSL artık Win10 1903 ile ilgili linux dosyalarını düzenleyebilir: devblogs.microsoft.com/commandline/… "Geçmişte, Windows'tan Linux dosyaları oluşturmak ve değiştirmek dosyaları kaybetmek veya verileri bozmakla sonuçlandı. son derece talep edilen ve uzun süredir beklenen bir özellik. Artık Linux dağıtımlarınızdaki tüm dosyalara Windows'dan kolayca erişebileceğinizi duyurmaktan gurur duyuyoruz. "
KERR

1

Eminim benden daha akıllı insanlar bu soruyu inceledi. Ama ben cevaplayacağım. Dürüstçe şu anda cevabın hayır olduğuna inanıyorum. Bahsettikleriniz dışında, her iki dünyanın da en iyisini elde etmenin daha iyi bir yolu var.

Eminim bu herkesin istediği cevap değildir, ama bence bu doğru cevaptır. Microsoft'un daha pürüzsüz hale getirmeye çalıştığı bir şey biliyorum, ama henüz orada değil.


Ve hala değil.
hugo der hungrige

0

2018'in ilk yarısında Microsoft, WSL'de şu sorunlardan bazılarına yönelik bazı iyileştirmeler yayınladı:

Bunların hiçbiri orijinal sorumdaki sorunları tamamen ele almıyor, ancak belirli durumlarda kullanılabilirliği artırabilirler.


Teşekkürler! Güncelleyin. Seçtiğim dosyalar için en sevdiğim GUI editörümü "güvenli" olarak kullanmama izin verirse bile iyi olurdum, uygun oluşturma araçları entegrasyonu olmadan yaşayabilirim (konsoldan yapılabilir). Geçici olarak yerel pencerelere kopyalamak için "rsync-ing" dosyaları bile, saydam olarak yapıldığı sürece iyi olur. Can sıkıcı bir noktaya yaklaşıyorum orada düzenlemek ve CLI tüm dosyaları takip etmek çok zor (en azından benim için), ve gerçekten sadece istiyorum "windows üzerinde her şeyi yapmak," göndermek / kopyalamak "kodu WSL , araçları çalıştır.
Dan M.

0

Linux komutlarını çalıştırmak ve Windows editörleriyle düzenlemek istiyorsanız. Kaynak kodunuzu (düzenlemek ve test etmek istediğiniz), dosya sisteminizde (c: \ source \ gibi) bir yerde tutabilir ve linux konsolunda buna / mnt / c / source üzerinden erişebilirsiniz. Bu yardımcı olur umarım.


0

Şimdi Visual Studio Code (Ben kullanıyorum gibi) destekler. Linux konumundan CRUD (Oluşturma, okuma, güncelleme, silme) dosyalarını / klasörünü gerçekleştirmenizi sağlayan "WSL uzantısı". Yine de, Linux platformunda Rails uygulama geliştirme editörü seçimim olan atom için aynı kurulumu elde etmeye çalışıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.