برنامهنویس
لینوکس در ویندوز - روایت یک برنامه نویس
مجبور شدم روی لپتاپ جدیدم ویندوز نصب کنم و از محیط ویندوز برای توسعه نرمافزار بیزارم!
تو این مطلب توضیح میدم که چجوری محیط برنامهنویسی خودم رو توی ویندوز آماده کردم چون وقت خودم رو زیاد گرفت سعی و خطاها، نتیجه هارو اینجا مینویسم تا شما هم استفاده کنید.
با این روش برنامهها با سرعت بیشتری نسبت به نسخه ویندوزیشون اجرا میشن!
مقدمه:
یک گشایش عظیم ...
مایکروسافت بدنبال راه حلی بود تا بتونه توسعهدهنده هارو سمت خودش نگه داره و امکان اجرای برنامه های گنولینوکس در محیط ویندوز رو بهشون بده، تا پروژه 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 اش رو دانلود و نصب کردم
کانفیگ ویندوز ترمینال دو تا کار لازم داره ، توی ویندوز ترمینال رو آیکون جهت پایین کلیک کنید و تنظیمات رو انتخاب کنید تا فایل کانفیگ رو براتون باز کنه.
1.انتخاب اوبونتو به عنوان پیشفرض: از لیست پایینتر uuid اوبونتو رو بردارید بجای مقدار قبلی توی این خط بزارید.
"defaultProfile": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
2.انتخاب مسیر home خود اوبونتو به عنوان startingDirectory ، توی بلاک اوبونتو این خط رو هم اضافه کنید.
"startingDirectory": "//wsl$/Ubuntu-20.04/home/username/"
اینطوری مثلا:
"list":
[
{
"guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
"hidden": false,
"name": "Ubuntu-20.04",
"source": "Windows.Terminal.Wsl",
"startingDirectory": "//wsl$/Ubuntu-20.04/home/username/"
},
چند تا نکته:
برای دسترسی به فایل های اوبونتو از ویندوز، به آدرس زیر برید با ویندوز اکسپلورر
\\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
قدم بعد; نصب 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 هست که از لینک زیر دانلود و نصب کنید.
بعد از نصب برنامه XLaunch رو باز کنید همینجوری نکست بزنید(multiple windows -> start no client -> finish ) تا برسید اینجا ، حتما گزینه Disable Access Control غیر فعال باشه. باز دوباره نکست بزنید...
اگه فایروال دسترسی خواست ، اجازه دسترسی بدید
تا اینجا دیگه توی ویندوز کاری نداریم.
به ترمینال برگردیم و چند خط زیر رو به فایل های کانفیگ zsh , bash اضافه کنیم.
sudo nano /etc/bash.bashrc
nano ~/.zshrc
export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"
export DISPLAY="`sed -n 's/nameserver //p' /etc/resolv.conf`:0"
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 و کارهای عمومی هستن که در مطالب مجزا مینویسم.
مطلبی دیگر از این انتشارات
من می خواهم برنامه نویس شوم - قسمت پنجم
مطلبی دیگر از این انتشارات
بد افزار پایتون - Python Virus
مطلبی دیگر از این انتشارات
بررسی چند کاربرد هوش مصنوعی در امنیت سایبری