Linux Zone | لینوکس زون
146 subscribers
5 photos
1 video
26 links
اینجا هر چیزی که درباره لینوکس می‌دونیم باهاتون به اشتراک می‌ذاریم 🐧

©️ این کانال بخشی از مجموعه @ninja_learn_ir است.
Download Telegram
۱۰ ابزار خط فرمان که هر کاربر لینوکس باید بشناسه 🛠
ترمینال لینوکس پر از ابزارهای فوق‌العاده‌ایه که می‌تونه کارها رو سریع‌تر و راحت‌تر کنه. این ۱۰ ابزار قدرتمند تجربه‌ی کار با لینوکس رو خیلی بهتر میکنن.

1️⃣ htop مدیریت پردازش‌ها 🔄
‏ htop یه نسخه پیشرفته از top هست که اطلاعات سیستم رو به‌شکل رنگی و خوانا نمایش می‌ده.
قابلیت شخصی‌سازی بالایی داره و مدیریت پردازش‌ها رو آسون‌تر می‌کنه.

نصب:

sudo apt install htop  # در Debian/Ubuntu  
sudo dnf install htop # در Fedora

اجرا:
htop


2️⃣ ncdu بررسی فضای اشغال‌شده در دیسک 💾
این ابزار نسخه‌ی تعاملی du هست و بهت نشون می‌ده کدوم پوشه‌ها بیشترین حجم رو اشغال کردن.
برای مدیریت فضای ذخیره‌سازی عالیه.

نصب:
sudo apt install ncdu

اجرا:
ncdu /


3️⃣ fzf جستجوی فوق سریع در تاریخچه و فایل‌ها ⚡️
‏ fzf یه ابزار تعاملیه که جستجو بین فایل‌ها، دستورات و متن‌ها رو سریع‌تر از همیشه می‌کنه.
می‌تونی خیلی سریع توی تاریخچه‌ی دستوراتت جستجو کنی.

نصب:
sudo apt install fzf

مثال:
CTRL + R  # جستجو در تاریخچه دستورات


4️⃣ bat جایگزین cat 📝
‏ bat مثل cat هست، ولی با رنگ‌بندی سینتکس، شماره خطوط و پشتیبانی از git برای نمایش تغییرات فایل‌ها.

نصب:
sudo apt install bat

مثال:
bat myfile.py  # نمایش فایل با رنگ‌بندی
bat --diff file1.txt file2.txt # مقایسه دو فایل
bat -n script.sh # نمایش شماره خطوط


5️⃣ tldr راهنمای سریع و خلاصه برای دستورات 📖
🔹 اگر man توضیحات زیادی داره، tldr خلاصه و مثال‌های کاربردی می‌ده.

نصب:
sudo apt install tldr

مثال:
tldr tar  # راهنمای سریع برای tar  
tldr curl # نمایش مثال‌های مربوط به curl


6️⃣ ripgrep (rg) جستجوی سریع متن در فایل‌ها 🔍
‏ rg جایگزین سریع‌تر grep هست و استفاده ازش راحت‌تره.

نصب:
sudo apt install ripgrep

مثال:
rg "TODO"  # جستجو در همه فایل‌های پروژه  
rg -n "error" # نمایش شماره خط برای کلمه‌ی "error"
rg --no-ignore "debug" # نادیده گرفتن .gitignore


7️⃣ lsd نسخه مدرن و زیباتر ls 🎨
‏ lsd جایگزین پیشرفته‌ی ls هست که آیکون فایل‌ها رو نمایش می‌ده و خروجی مرتب‌تری داره.

نصب:
sudo apt install lsd


مثال:
lsd -l  # نمایش فایل‌ها با جزئیات  
lsd --tree # نمایش فایل‌ها به‌شکل درختی
lsd -a # نمایش همه فایل‌ها، حتی مخفی‌ها


8️⃣ fd جستجوی سریع فایل‌ها 📁
‏ fd جایگزین سریع‌تر و راحت‌تر find هست.

نصب:
sudo apt install fd-find


مثال:
fd ".py$"  # پیدا کردن همه فایل‌های .py در پروژه  
fd "config.json" ~/projects # جستجوی یه فایل خاص
fd -t d "logs" # پیدا کردن دایرکتوری‌های خاص


‌‏9️⃣ tmux مدیریت همزمان چندین ترمینال🖥
‏ tmux بهت اجازه می‌ده چندین سشن ترمینال رو در یک صفحه مدیریت کنی. برای کار با سرورها فوق‌العاده‌ست!

نصب:
sudo apt install tmux


مثال:
tmux  # اجرای tmux و شروع یک سشن جدید  
CTRL + B سپس C # ایجاد یک پنجره جدید در سشن فعال
CTRL + B سپس X # بستن یک پنجره
CTRL + B سپس D # خروج از سشن بدون بستن
tmux ls # لیست سشن‌های باز
tmux attach -t 0 # بازگشت به سشن قبلی


🔟 bpytop مانیتورینگ گرافیکی سیستم 📊
bpytop اطلاعات پردازنده، رم، دیسک و شبکه رو با یه رابط گرافیکی زیبا نشون می‌ده.

نصب:
sudo apt install bpytop


اجرا:

bpytop


جمع‌بندی ✍️
این ابزارها باعث می‌شن سرعت و کارایی‌ت توی لینوکس افزایش پیدا کنه. کدوم یکی رو قبلاً استفاده کردی؟ اگر ابزار دیگه‌ای می‌شناسی که باید تو این لیست باشه، بگو

#️⃣ #linux #terminal #tools


🐧 CHANNEL | GROUP
👍3👏1
چجوری بازی‌های ویندوز رو روی لینوکس اجرا کنیم؟🎮
اگه عاشق بازی هستین و در عین حال از سیستم‌عامل لینوکس استفاده می‌کنین، احتمالاً براتون سوال شده که چجوری می‌شه بازی‌های ویندوز رو روی لینوکس اجرا کرد. خبر خوب اینه که راه‌های مختلفی برای این کار وجود داره پس با من همراه باشین تا بتونین بازی‌های مورد علاقه‌تون رو روی لینوکس هم تجربه کنین

راه‌های اجرای بازی‌های ویندوز روی لینوکس
برای اینکه بازی‌های ویندوز رو روی لینوکس اجرا کنین، چند ابزار و روش اصلی وجود داره که هر کدوم ویژگی‌های خاص خودشون رو دارن. بیاین این روش‌ها رو با هم ببینیم:

1️⃣ Wine
واین یه ابزار رایگان و متن‌بازه که بهتون اجازه می‌ده برنامه‌ها و بازی‌های ویندوز رو روی لینوکس اجرا کنین. این ابزار در واقع یه لایه‌ی سازگاری ایجاد می‌کنه که دستورات ویندوز رو برای لینوکس ق!ابل فهم می‌کنه.

مزایا:
کاملاً رایگان و بدون نیاز به لایسنس ویندوز.
از خیلی از بازی‌ها (با گرفیک پایین) پشتیبانی می‌کنه.
معایب:
بازی‌ها با گرافیک سنگین تر ممکنه درست اجرا نشن یا نیاز به تنظیمات پیچیده داشته باشن.


چطور نصبش کنم؟

برای نصب Wine، می‌تونین از مدیر بسته‌های توزیعتون استفاده کنین. مثلاً تو اوبونتو این دستور رو بزنین:
sudo apt install wine

بعدش، برای اجرای بازی، کافیه فایل اجرایی (exe) بازی رو با این دستور باز کنین:
wine /path/to/game.exe


2️⃣ Proton (با Steam)

Proton یه ابزار فوق‌العاده‌ست که توسط Valve (شرکت سازنده‌ی Steam) ساخته شده و در واقع نسخه‌ی بهینه‌شده‌ی Wine برای گیمرهاست. با Proton می‌تونین بازی‌های ویندوز رو مستقیماً از Steam روی لینوکس اجرا کنین.
مزایا:
خیلی ساده و راحت کار می‌کنه.
به‌روز و مناسب برای بازی‌های جدید.
معایب:
فقط برای بازی‌های Steam کار می‌کنه.


چطور ازش استفاده کنم؟
اول Steam رو روی لینوکس نصب کنین. بعد تو تنظیمات Steam، بخش "Steam Play" رو پیدا کنین و گزینه‌ی "Enable Steam Play for all titles" رو فعال کنین. حالا می‌تونین بازی‌های ویندوز رو نصب و اجرا کنین


3️⃣ Lutris
Lutris یه پلتفرم مدیریت بازیه که کار نصب و اجرای بازی‌های ویندوز رو روی لینوکس خیلی راحت می‌کنه. این ابزار از Wine، Proton و حتی شبیه‌سازها پشتیبانی می‌کنه.

مزایا:
رابط کاربری ساده و جذاب.
پشتیبانی از بازی‌های مختلف (Steam، GOG، Epic و غیره).
معایب:
بعضی بازی‌ها ممکنه نیاز به تنظیمات دستی داشته باشن.


چطور نصبش کنم؟
‏ Lutris رو از سایت رسمیش یا مدیر بسته‌ها نصب کنین. بعد از کتابخونه‌ی بازی‌هاش، بازی مورد نظرتون رو انتخاب کنین و نصبش کنین. Lutris خودش تنظیمات رو براتون انجام می‌ده.


‌‏4️⃣ PlayOnLinux
یه ابزار دیگه‌ست که بر پایه‌ی Wine کار می‌کنه و با اسکریپت‌های آماده، نصب بازی‌ها رو آسون‌تر می‌کنه و خود کار تنظیمات مربوط به گزافیک رو برای واین انجام میده.

مزایا:
رابط کاربری گرافیکی ساده.
اسکریپت‌های آماده برای بازی‌های معروف.
معایب:
بعضی بازی‌های جدید ممکنه پشتیبانی نشن.


چطور ازش استفاده کنم؟
‏PlayOnLinux رو بر اسا توزیعتون نصب کنین، بازی مورد نظرتون رو از لیست انتخاب کنین و مراحل نصب رو دنبال کنین. این ابزار خودش نسخه‌ی مناسب Wine رو برای هر بازی مدیریت می‌کنه.

نکات مهم برای اجرای بهتر بازی‌ها🎮
برای اینکه تجربه‌ی بهتری از بازی‌ها روی لینوکس داشته باشین، این نکات رو رعایت کنین:
1️⃣ درایورهای گرافیک: حتماً درایورهای کارت گرافیکتون رو به‌روز کنین (مثلاً درایور NVIDIA یا Mesa برای AMD).
2️⃣ Vulkan: خیلی از بازی‌ها با Vulkan بهتر کار می‌کنن. مطمئن شین که Vulkan روی سیستمتون نصب باشه.

تنظیمات اضافی⚙️:
1️⃣برای بازی‌های خاص، ممکنه لازم باشه تنظیمات Wine یا Proton رو دستی تغییر بدین. سایت‌های ProtonDB و WineHQ اطلاعات خوبی دارن.
2️⃣ DXVK: این ابزار DirectX رو به Vulkan تبدیل می‌کنه و می‌تونه عملکرد بازی‌ها رو بهتر کنه.

جمع‌بندی✍️
دیگه لازم نیست بین لینوکس و بازی‌های ویندوز یکی رو انتخاب کنین با ابزارهایی مثل Wine، Proton، Lutris، PlayOnLinux و حتی ماشین مجازی، می‌تونین بازی‌های مورد علاقه‌تون رو روی لینوکس اجرا کنین. اگه دنبال راه ساده هستین، Proton یا Lutris رو امتحان کنین. اگه بازی‌تون پشتیبانی نمی‌شه، ماشین مجازی هم تنها راه باقی موندست.

شما کدوم روش رو ترجیح می‌دین؟ تجربه‌تون رو با ما به اشتراک بذارین تا بقیه هم استفاده کنن. امیدوارم از بازی کردن لذت ببرین! 🎮

#️⃣ #linux #gaming #tools


🐧 CHANNEL | GROUP
6
نصب AstroNvim🛠
همیشه کانفیگ vim یا nvim میتونه برای تازه کار ها سخت و برای حرفه ای ها زمان بر باشه برای همین کانفیگ های آماده ای به وجود اومدن که به کاربر اجازه میدادن با صرف زمان و انرژی کمتر یه کانفیگ خوب و قابل استفاده داشته باشه. یکی از این کانفیگ ها AstroNvim هست که روی nvim نصب میشه و تجربه ی کار با این ادیتور رو لذت بخش تر میکنه.

ویژگی‌های AstroNvim
سریع، زیبا و بهینه‌شده
پشتیبانی از LSP، DAP و درخت فایل پیشرفته
افزونه‌های از پیش تنظیم‌شده برای یه تجربه‌ی عالی
قابلیت شخصی‌سازی بالا

📌 نصب AstroNvim
اول از همه، نئوویم نسخه 0.9 یا بالاتر رو نصب کن:
sudo apt install neovim #Debian
sudo pacman -S neovim #Arch
sudo dnf install neovim #Fedora

حالا AstroNvim رو توی پوشه ی کانفیگ های nvim کلون کن:
git clone --depth 1 https://‌‌‏github.c‌‌‌‏om/AstroNvim/AstroNvim  ~/.config/nvim

حالا توی اولین اجرای nvim نصب کننده ی AstroNvim شروع به دانلود و نصب افزونه های مورد نیازش میکنه:
nvim


🔧نحوه ی کار کردن با AstroNvim:

برای استفاده از AstroNvim فقط کافیه nvim رو اجرا کنید، کانفیگ به طور خودکار لود میشه و آماده ی استفاده هست:
nvim 

برای اینکه مستقیم یه فایل رو باهاش باز کنید میتونید دقیقا از دستور مشابه vim استفاده کنید:
nvim file.txt


توی هر اجرا شما صفحه ی اولیه ی AstroNvim رو میبینید که به شما امکان انتخاب سشن های قبلی یا پروژه های قبلی رو میده.
بیشتر فرمان های(حرکت ها، عملگر ها، دستورات و...) AstroNvim دقیقا مشابه فرمان های vim هستن و اگه به vim تسلط دارید میتونید خیلی راحت با این کانفیگ کار کنید.
البته میتونید توی حالت نرمال با استفاده از کلید Space به راهنمای AstroNvim دسترسی پیدا کنید. توی این راهنما هم نحوه ی استفاده از خود کانفیگ نوشته شده و هم نحوه ی کار با فرمان های برنامه،‌ مثل یه برگه تقلب(Cheat Sheet) کنار دستتونه.
برای مثال میتونید با کلید های Space + e توی حالت نرمال به فایل اکسپلورر داخلی برنامه دسترسی پیدا کنید و با کلید های CTRL + O بین فایل اکسپلورر و صفحه ی ادیتور جا به جا بشید.

📌 نصب افزونه‌ها و LSP‌ها
بعد از نصب، این دستورات رو توی نئوویم اجرا کن:
برای نصب و استفاده از بیشتر افزونه ها نیاز به npm دارید.

:LspInstall python
:MasonInstall eslint lua-language-server


🔧 شخصی‌سازی AstroNvim
اگر می‌خوای تنظیمات خودت رو اضافه کنی، یه فولدر مخصوص تنظیمات ایجاد کن:
mkdir -p ~/.config/nvim/lua/user
touch ~/.config/nvim/lua/user/init.lua


و داخل init.lua می‌تونی تنظیمات شخصی خودت رو اضافه کنی.

💬 جمع‌بندی
‏AstroNvim‏ یه کانفیگ آماده هست با طراحی مدرن و افزونه‌های از پیش تنظیم‌شده. این کانفیگ به شما امکان می‌ده تا با سرعت و کارایی بیشتری کدنویسی کنید و محیطی زیبا و کاملاً شخصی‌سازی‌شده داشته باشید. اگر به دنبال تجربه‌ای بهینه‌تر از nvim هستید، AstroNvim بهترین انتخابه.
میتونید با مراجعه به وبسایت AstroNvim اطلاعات بیشتری درموردش کسب کنید.
#️⃣ #linux #terminal #tools


🐧 CHANNEL | GROUP
👍6
🗓 تقویم جلالی توی ترمینال لینوکس
دیگه تقریبا همه cal رو میشناسن، همون تقویم کوچیک و بامزه که میتونیم با دستور cal بهش دسترسی پیدا کنیم. ولی خب همونطور که میدونید این ابزار برای تقویم های میلادی طراحی شده و تقویم میلادی رو نشون میده.امروز که 5 آوریل 2025 هست خروجی این دستور این شکلیه:
cal
April 2025
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

برای نمایش تقویم یه سال خاص:
cal 2025

یا نمایش تقویم یه ماه مشخص:
cal 4 2019

که در این مثال، تقویم آوریل 2019 نمایش داده می‌شه.

🔥 jcal، تقویم جلالی برای لینوکس
‏jcal یه جایگزین پیشرفته برای cal هست که علاوه بر تقویم میلادی، تقویم شمسی (جلالی) رو هم نمایش میده.

📌 نصب jcal
میتونید خیلی راحت از طریق مدیر بسته ی توزیعتون نصبش کنین:
sudo apt install jcal #Debian
sudo pacman -S jcal #Arch
sudo dnf install jcal #Fedora

📌 استفاده از jcal
برای دیدن تقویم ماه جاری به همراه تقویم شمسی، این دستور رو اجرا کنید:
jcal
Farvardin 1404
Sh Ye Do Se Ch Pa Jo
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29

برای نمایش کل سال شمسی:
jcal -y

برای نمایش تقویم یک سال خاص:
jcal 1403

و نمایش یک ماه مشخص از سال خاص:
jcal 6 1401

که در این مثال، تقویم شهریور 1401 نمایش داده می‌شه.

💬 جمع‌بندی
اگه فقط به یه تقویم ساده میلادی نیاز دارید، cal براتون کافیه. اما اگه به دنبال نمایش تقویم شمسی هستید و می‌خواید یه ابزار بهتر داشته باشید، jcal انتخاب خوبیه. میتونید به صفحه ی گیتهاب این ابزار هم یه نگاهی بندازید.

#️⃣ #linux #terminal #tools


🐧 CHANNEL | GROUP
4👍1
🛠 چند alias کاربردی برای هر کاربر لینوکس
حتما با alias ها آشنایی دارین، همون لقب دادن به دستوراتمون.
کاربردش چیه؟ میتونیم کلی دستور طولانی یا حتی دستورایی که تایپ کردنشون هر دفعه مثل یه کابوس میمونه رو توی دستور مورد نظر خودمون خلاصه کنیم.
ساده تر بگیم، درواقع با اینکار داریم به شل(zsh, bash, fish) میگیم که دستور مورد نظر a معادل دستور طولانی b هست.


با این aliasها توی فایل ~/.bashrc یا ~/.zshrc می‌تونی کلی زمان تو ترمینال صرفه‌جویی کنی 💻⚡️

# ====== System Management ======
alias update="sudo apt update && sudo apt upgrade -y" # Fast system update
alias clean="sudo apt autoremove && sudo apt autoclean" # Clean cache and unnecessary packages
alias reboot="sudo reboot" # Reboot the system
alias ping="ping -c 5" # Ping with 5 packets

# ====== Navigation Shortcuts ======
alias home='cd ~' # Go to home directory
alias cd..='cd ..' # One directory up
alias ..='cd ..' # One directory up (short)
alias ...='cd ../..' # Two directories up
alias ....='cd ../../..' # Three directories up
alias .....='cd ../../../..' # Four directories up

# ====== File Search ======
alias f="find . -name" # Find file by name in current directory and subdirectories

# ====== Listing (ls) Aliases ======
alias la='ls -Alh' # List all files including hidden
alias ls='ls --color=always' # Enable colored output
alias lx='ls -lXBh' # Sort by extension
alias lk='ls -lSrh' # Sort by size
alias lc='ls -lcrh' # Sort by change time
alias lu='ls -lurh' # Sort by access time
alias lr='ls -lRh' # Recursive listing
alias lt='ls -ltrh' # Sort by date
alias lw='ls -xAh' # Wide listing format
alias ll='ls -Flsh' # Long listing format with type indicators
alias labc='ls -lap' # Alphabetical listing with hidden files
alias lf="ls -l | egrep -v '^d'" # List only files
alias ldir="ls -l | egrep '^d'" # List only directories

🔗برای راحتی کار میتونید فایل آماده ی alias هارو از لینک زیر دانلود کنید:
فایل آماده ی alias ها

📌 نکته: بعد از اضافه کردن aliasها، فراموش نکن که ترمینالت رو یه بار ببندی و باز کنی یا دستور زیر رو وارد کنی:
source ~/.bashrc  # or ~/.zshrc


#️⃣ #linux #terminal #tools


🐧 CHANNEL | GROUP
👍4
‏Cron Jobs در لینوکس
‏Cron یک از ابزار های قدرتمند و کاربردی لینوکسه که به شما اجازه میده دستورات یا اسکریپت هارو توی یه بازه/دوره ی زمانی مشخص و کاملا خودکار اجرا کنید.

‏Cron Job چیه؟

‏cron job یه تسک زمان بندیه که توی سیستم های Unix Base اجرا میشه. به طور مثال شما میتونید کارهای زیر رو با کمک cron job کاملا خودکار و زمان بندی شده انجام بدید.
اجرای روزانه اسکریپت بکاپ
پاک کردن لاگ ها یا فایل های کش قدیمی
ارسال ایمیل گزارش ها به ادمین سیستم
اجرای یک API call توی زمان مشخص

ساختار زمان بندی توی cron
⏱️
این ابزار برای زمان بندی از یه سینتکس خاصی استفاده میکنه که همین خاص بودنش باعث شده درکش پیچیده باشه و در عین حال بشدت کاربردیش کرده.
* * * * * command_to_run
│ │ │ │ │
│ │ │ │ └ Day of the Week (0 - 7)
│ │ │ └── Month (1 - 12)
│ │ └──── Day of the Month (1 - 31)
│ └────── Hour (0 - 23)
└──────── Minute (0 - 59)

مثلا دستور زیر یک اسکریپت رو هرروز ساعت 2:30 اجرا میکنه:
30 2 * * * /home/rick/backup.sh


مدیریت Cron Jobs🛠
با استفاده از کامند crontab میتونید cron job هاتون رو مدیریت کنید.
ایجاد یا ویرایش cron jobها:
crontab -e

لیست cron job های فعال برای کاربر فعلی:
crontab -l

حذف کرون جاب های فعلی:
crontab -f

حتی میتونید از اجرا شدن cron هاتون لاگ هم داشته باشین:
0 2 * * * /home/rick/backup.sh >> /var/log/backup.log 2>&1


نکات مهم⚠️
1.محیط اجرای cron با محیط ترمینال فرق داره
ممکنه بعضی متغیر های محیطی توی cron در دسترس نباشن. پس بهتره که مسیر کامل دستورات و فایل هارو بنویسید. به عنوان راه حل میتونید مستقیما اون متغیر هارو توی crontab تعریف کنید.
PATH=/usr/bin:/bin:/usr/local/bin

2.برای اجرای اسکریپت ها مطمئن باشید که فایل دسترسی اجرا شدن رو داشته باشه.
میتونید با دستور زیر این دسترسی رو به اسکریپت بدین.
chmod +x ./script.sh


مثال
📝
*/15 * * * * /home/rick/check_server.sh 
# Every 15 minutes
0 9 * * 1 /home/rick/weekly_report.sh
# Every Monday at 9 AM
0 3 1 * * /home/rick/monthly_cleanup.sh
# On the 1st of each month at 3 AM


مشاهده لاگ‌های cron🔎

اگه میخواین بدونین cron job هاتون واقعا اجرا شدن یا نه، میتونید لاگ های سیستم رو چک کنید:
grep CRON /var/log/syslog    # Debian/Ubuntu
journalctl -u cron.service # systemd-based systems


جمع بندی✍️
‏Cron یکی از دوست داشتنی ترین ابزار های لینوکسه که فقط با چند خط ساده میتونید کلی از کارهای تکراری و خودکار انجام بدین و یه خودکارسازی خوب برای خودتون یا سرورتون داشته باشین. البته که سینتکس زمانبندیش یکمی پیچیدس ولی بعد یه مدتی دستتون میاد و بهش عادت میکنید.

#️⃣#linux #tools


🐧 CHANNEL | GROUP
2🔥1
میرور ها توی لینوکس🐧
حتما توی استفاده از لینوکستون از دستور های آپدیت پکیج منیجر ها(مثل apt update) استفاده کردید. دستور هایی که نسخه های پکیج های مختلف نرم افزاری رو از مخزن بسته ها دریافت میکنن و اگه نیاز به بروزرسانی داشته باشن براتون بروزرسانی انجام میدن. ولی این مخزن ها چی هستن؟

‏Mirror ها یا مخازن🪞
هر پکیج منیجر یه مخزن یا به اصطلاح Mirror داره. مخزن ها سرورهایی هستن که نسخه های مشابهی از یه پکیج نرم افزاری رو نگه میدارن. این مخزن ها توی سراسر دنیا هستن و یه جورایی پخش شدن. اینجوری دیگه همه ی کاربرا از فقط یه سرور استفاده نمیکنن. توی نقاط مختلف ایران مخزن های مختلفی وجود داره تا دانلود ها سریع تر و پایدار بشن.
مثلا:
sudo apt update
sudo apt install vim

اینجا apt میره از یکی از مخزن ها پکیج vim رو میگیره و نصب میکنه.

چرا این همه Mirror به وجود اومدن؟🤔
اگه این مخازن توی نقاط مختلف پخش نشده بودن یا فقط یه سرور واحد وجود داشت، با درخواست آپدیت همزمان کاربرا سرعت دانلود میومد پایین و همچنین دانلود ناپایدار بود. اما اینجوری هرکی میتونه مخزن مناسب خودش(مثلا نزدیک به محل زندگیش یا کشور خودش) رو انتخاب کنه و پکیج هاشو از اونجا دانلود کنه.
اینجوری بار این همه درخواست بین سرورهای مختلف تقسیم میشه و سرعت و پایداری هم بالا میره. توی بعضی موارد(مثل کالی یا فدورا) هم میتونیم با عوض کردن مخازن تحریم هارو دور بزنیم.

چطوری نسخه ها هماهنگ میمونن؟🔄
وقتی دستور apt update رو می‌زنید، سیستم میره سراغ فایل‌هایی مثل Packages.gz و Release توی مخزن (repository) که لیست کامل بسته‌ها، نسخه‌ها و هش‌ها رو نگه می‌دارن. این فایل‌ها از سرورهای مخزن ها میان، ولی اصلشون از مخزن اصلی (مثلاً deb.debian.org) تولید می‌شه. حالا میرورها با استفاده از ابزارهایی مثل rsync یا apt-mirror به‌صورت خودکار و منظم با مخزن اصلی همگام می‌شن و فقط فایل‌های جدید یا تغییر کرده رو می‌گیرن. اینطوری همه میرورها تقریباً همیشه نسخه‌ی هماهنگی از پکیج‌ها دارن و وقتی چیزی نصب می‌کنید، از نزدیک‌ترین یا سریع‌ترین میرور دانلود میشه.

پکیج ها توی مخازن دستکاری نمیشن؟🔐
برای اینکه هیچکس نتونه پکیج های داخل مخزن ها رو دستکاری کنه یا نسخه ی مخرب آپلود کنه، هر پکیج با کلید دیجیتال(GPG) امضا میشه. وقتی از دستورهای آپدیت استفاده میکنین سیستم فایل Release.gpg رو بررسی میکنه که امضای دیجیتال پکیج هارو توی خودش داره. این امضا فقط با کلید رسمی توزیع قابل اعتبار سنجیه.
پکیج منیجر هش هر پکیج رو با چیزی که توی فایل Packages.gz ثبت شده مقایسه میکنه، اگه حتی یه بیت از پکیج دستکاری شده باشه هش تایید نمیشه و پکیج نصب نمیشه.

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

#️⃣#linux #terminal #tools


🐧 CHANNEL | GROUP
👍2