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

مجبور شدم روی لپتاپ جدیدم ویندوز نصب کنم و از محیط ویندوز برای توسعه نرم‌افزار بیزارم!

تو این مطلب توضیح میدم که چجوری محیط برنامه‌نویسی خودم رو توی ویندوز آماده کردم چون وقت خودم رو زیاد گرفت سعی و خطاها، نتیجه هارو اینجا می‌نویسم تا شما هم استفاده کنید.

با این روش برنامه‌ها با سرعت بیشتری نسبت به نسخه ویندوزی‌شون اجرا میشن!


مقدمه:

یک گشایش عظیم ...

مایکروسافت بدنبال راه حلی بود تا بتونه توسعه‌دهنده هارو سمت خودش نگه داره و امکان اجرای برنامه های گنو‌لینوکس در محیط ویندوز رو بهشون بده، تا پروژه WSL رو شروع کردن و زمان زیادی میگذره از شروع توسعه wsl که الان ورژن دوم‌اش هم منتشر شده و توی وضعیت نسبتا خوبیه.

ورژن دوم wsl به این صورت هست که یک نسخه تقریبا کامل از کرنل لینوکس رو روی ویندوز شبیه سازی میکنند و با استفاده از تکنولوژی های روز شبیه‌سازی با دادن دسترسی مستقیم به منابع(پردازنده و حافظه رم) سرعت خیلی بیشتری نسبت به تکنولوژی شبیه سازی قدیمی میگیریم.

بخاطر سبک‌تر بودن و سریع اجرا شدن توی wsl از systemd استفاده نشده و بجاش از /etc/init.d به سرویس ها دسترسی دارید. بجای systemctl هم میتونید از system استفاده کنید.

این مسئله توی نصب بعضی پکیج‌ها ممکنه اذیت تون کنه که راه حل های جایگزین رو معرفی می‌کنم.


قدم اول; نصب wsl2

از دستور العمل رسمی خود مایکروسافت برای نصب استفاده کنید

https://docs.microsoft.com/en-us/windows/wsl/install-win10

توزیع ubuntu 20.04 رو نصب کردم و توی Store به مشکل نخوردم بار اول ولی اگه به مشکل خوردید حتما از شیلترفکن استفاده کنید و یه اکانت مایکروسافت لاگین کنید انشالله که درست میشه.

حتما یادتون باشه که از ورژن ۲ استفاده کنید و نحوه تقییر ورژن توی لینک بالا هست.

کرنل ساخت مایکروسافت برای اوبونتو استفاده شده
کرنل ساخت مایکروسافت برای اوبونتو استفاده شده

قدم دوم; نصب Windows Terminal

به عنوان جایگزین خط فرمان داغون ویندوز میتونید از ابزار جدید و اوپن سورس ویندوز استفاده کنید، باید بشه از استور نصب کنید ولی من نتونستم و از گیت‌هاب نسخه فایل 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

کد ادیتور یا IDE محبوب خودتون رو داخل اوبونتو دانلود کنید. یا با ویندوز دانلود کنید و انتقال بدید به اوبونتو.

برای دانلود و نصب وب استورم اینجوری پیش میریم:

mkdir apps
cd apps
wget https://link-to-webstorm.tar.gz
tar -xvf webstorm.tar.gz
cd 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.bashrc

nano ~/.zshrc

export DISPLAY=&quot`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0&quot
export DISPLAY=&quot`sed -n 's/nameserver //p' /etc/resolv.conf`:0&quot
export 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 و کارهای عمومی هستن که در مطالب مجزا مینویسم.