لینوکس در ویندوز – روایت یک برنامه نویس

لینوکس در ویندوز – روایت یک برنامه نویس

مجبور شدم روی لپتاپ جدیدم ویندوز نصب کنم و از محیط ویندوز برای توسعه نرم‌افزار بیزارم!تو این مطلب توضیح میدم که چجوری محیط برنامه‌نویسی خودم رو توی ویندوز آماده کردم چون وقت خودم رو زیاد گرفت سعی و خطاها، نتیجه هارو اینجا می‌نویسم تا شما هم استفاده کنید.با این روش برنامه‌ها با سرعت بیشتری نسبت به نسخه ویندوزی‌شون اجرا میشن!مقدمه:مایکروسافت بدنبال راه حلی بود تا بتونه توسعه‌دهنده هارو سمت خودش نگه داره و امکان اجرای برنامه های گنو‌لینوکس در محیط ویندوز رو بهشون بده، تا پروژه WSL رو شروع کردن و زمان زیادی میگذره از شروع توسعه wsl که الان ورژن دوم‌اش هم منتشر شده و توی وضعیت نسبتا خوبیه.ورژن دوم wsl به این صورت هست که یک نسخه تقریبا کامل از کرنل لینوکس رو روی ویندوز شبیه سازی میکنند و با استفاده از تکنولوژی های روز شبیه‌سازی با دادن دسترسی مستقیم به منابع(پردازنده و حافظه رم) سرعت خیلی بیشتری نسبت به تکنولوژی شبیه سازی قدیمی میگیریم.بخاطر سبک‌تر بودن و سریع اجرا شدن توی wsl از systemd استفاده نشده و بجاش از /etc/init.d به سرویس ها دسترسی دارید. بجای systemctl هم میتونید از system استفاده کنید.این مسئله توی نصب بعضی پکیج‌ها ممکنه اذیت تون کنه که راه حل های جایگزین رو معرفی می‌کنم.از دستور العمل رسمی خود مایکروسافت برای نصب استفاده کنیدhttps://docs.microsoft.com/en-us/windows/wsl/install-win10توزیع ubuntu 20.04 رو نصب کردم و توی Store به مشکل نخوردم بار اول ولی اگه به مشکل خوردید حتما از شیلترفکن استفاده کنید و یه اکانت مایکروسافت لاگین کنید انشالله که درست میشه.حتما یادتون باشه که از ورژن ۲ استفاده کنید و نحوه تقییر ورژن توی لینک بالا هست.کرنل ساخت مایکروسافت برای اوبونتو استفاده شدهبه عنوان جایگزین خط فرمان داغون ویندوز میتونید از ابزار جدید و اوپن سورس ویندوز استفاده کنید، باید بشه از استور نصب کنید ولی من نتونستم و از گیت‌هاب نسخه فایل msixbundle اش رو دانلود و نصب کردم https://github.com/microsoft/terminal/releases کانفیگ ویندوز ترمینال دو تا کار لازم داره ، توی ویندوز ترمینال رو آیکون جهت پایین کلیک کنید و تنظیمات رو انتخاب کنید تا فایل کانفیگ رو براتون باز کنه.1.انتخاب اوبونتو به عنوان پیشفرض: از لیست پایینتر uuid اوبونتو رو بردارید بجای مقدار قبلی توی این خط بزارید. &quotdefaultProfile&quot: &quot{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}&quot,2.انتخاب مسیر home خود اوبونتو به عنوان startingDirectory ، توی بلاک اوبونتو این خط رو هم اضافه کنید.&quotstartingDirectory&quot: &quot//wsl$/Ubuntu-20.04/home/username/&quot
اینطوری مثلا: &quotlist&quot: [ { &quotguid&quot: &quot{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}&quot, &quothidden&quot: false, &quotname&quot: &quotUbuntu-20.04&quot, &quotsource&quot: &quotWindows.Terminal.Wsl&quot, &quotstartingDirectory&quot: &quot//wsl$/Ubuntu-20.04/home/username/&quot },چند تا نکته:برای دسترسی به فایل های اوبونتو از ویندوز، به آدرس زیر برید با ویندوز اکسپلورر wsl$اونجا توزیع هایی که نصب کردید براتون شبکه شده.نکته مهم : دسترسی به فایل سیستم های اوبونتو از ویندوز و برعکس،‌سرعت بالایی نداره و تقریبا میشه گفت کنده.پس باید برنامه هایی که داخل اوبونتو اجرا می‌کنید فایل هاشون هم روی فایل سیستم خود اوبونتو باشه.همیشه بعد از نصب اوبونتو اولین دستوری که اجرا میکنند، آپدیت ریپازیتوری پکیج‌ها و آپگرید پکیج‌های نصب شده.sudo apt update ; sudo apt upgrade -yپکیج های پرکاربردتون رو هم نصب کنید اگه نصب نیستن!sudo apt install git nano curl nodejs npm aria2 -yقبل از انجام کارهای خفن بهتره ترمینال مون رو هم خفن کنیم و زی‌شل استفاده کنیم که خیلی کار با ترمینال رو راحت‌تر و سریع‌تر میکنه، من که همیشه دومین کار نصب زی‌شل و oh my zsh هستش.sudo apt install zsh -y https://ohmyz.sh/#install کد ادیتور یا IDE محبوب خودتون رو داخل اوبونتو دانلود کنید. یا با ویندوز دانلود کنید و انتقال بدید به اوبونتو.برای دانلود و نصب وب استورم اینجوری پیش میریم:mkdir appscd appswget https://link-to-webstorm.tar.gztar -xvf webstorm.tar.gzcd webstorm-/bin./webstorm.sh
برای دانلود و نصب vsCode ،‌ فایل deb رو از سایت اصلی شون دانلود میکنیم.wget https://link-to-/vscode.deb

sudo dpkg -i vscode.debکه احتمالا به ارور بخوریم برای dependency هایی که روی اوبونتو نصب نیست.که با دستور زیر حل میشه.sudo apt –fix-broken installاحتمالا موقع اجرای vsCode ازتون بخواد که از نسخه خود ویندوز استفاده کنید، که شما اینکارو نمی‌کنید :)برای اجرای برنامه های گرافیکی همراه با GPU Acceleration ، یک XServer روی ویندوز اجرا می‌کنیم. بهترین گزینه فعلا vcxsrc هست که از لینک زیر دانلود و نصب کنید. https://sourceforge.net/projects/vcxsrv/ بعد از نصب برنامه XLaunch رو باز کنید همینجوری نکست بزنید(multiple windows -> start no client -> finish ) تا برسید اینجا ، حتما گزینه Disable Access Control غیر فعال باشه. باز دوباره نکست بزنید…اگه فایروال دسترسی خواست ، اجازه دسترسی بدیدتا اینجا دیگه توی ویندوز کاری نداریم.به ترمینال برگردیم و چند خط زیر رو به فایل های کانفیگ zsh , bash اضافه کنیم.sudo nano /etc/bash.bashrcnano ~/.zshrcexport DISPLAY=&quot`grep nameserver /etc/resolv.conf | sed ‘s/nameserver //’`:0&quotexport DISPLAY=&quot`sed -n ‘s/nameserver //p’ /etc/resolv.conf`:0&quotexport DISPLAY=$(ip route|awk ‘/^default/{print $3}’):0.0بعد از اضافه کردن این سه خط به دوتا فایل بالا تغییرات رو اعمال میکنیم یا دوباره ترمینال رو باز میکنیم.. ~/.zshrc
echo $DISPLAYو تمام با اجرای دستور بالا آی پی ویندوز از داخل اوبونتو رو می بینید و در صورت اجرا بودن برنامه vcxsrc با اجرای برنامه های گرافکی ، برنامه ها مثل بقیه برنامه های ویندوزی توی محیط گرافیکی ویندوز باز‌میشن.وب‌استورم کاملا شبیه برنامه های خود ویندوز بدون هیچ تفاوتی کنار بقیه برنامه ها اجرا شد.بجای نصب پکیج اصلی mondogdb-server از mongodb-runner استفاده کنید.نودجی‌اس و npm رو نصب کنید بعدش پکیج mongodb-runner رو بصورت گلوبال روی اوبونتو نصب کنید.sudo npm i -g mongodb-runner
mongodb-runnerنصب و تست کلاینت مانگوsudo apt install mongodb-clients -y
mongoورژن ۴.۴.۳ مانگو دی بی رو اجرا کردیم براحتی بدون هیچ مشکلی!با اینکه DISPLAY بصورت پیشفرض با آی پی ویندوز کار میکنه ولی نه میتونید پینگ بگیرید ازین آی پی و همه پورت هاش بسته ان!خب دلیل‌اش اینه که توی تنظیمات فایروال ویندوز باید ICMPv4 رو اجازه بدید و برای دسترسی به پورت هم مثل مثال زیر روی ویندوز پورت ۱۰۸۹ پراکسی ساکس اجرا هست برای دسترسی از اوبونتو بهش لازمه این دو rule رو اضافه کنیم. آپدیت های بعدی توی همین مطلب اضافه میشه بقیه کارهایی که کردم هم نامربوط به wsl و کارهای عمومی هستن که در مطالب مجزا مینویسم.

Author: admin

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *