در این درس میخوانید
بسته و مخزن چیست؟
یک برنامه ممکن است برای کارکردن به کتابخانهها و فایلهای تنظیمات دیگری نیاز داشته باشد. مدیر بسته این اجزا و وابستگیها را از مخازن تعریفشده دریافت و نصب را ثبت میکند. در Ubuntu و Debian، ابزار apt یکی از راههای رایج مدیریت بسته است. توزیعهای دیگر ابزارهای خودشان را دارند؛ فرمانهای این درس را برای همهٔ لینوکسها یکسان فرض نکنید.
تفاوت update و upgrade
apt update اطلاعات محلی دربارهٔ بستههای موجود در مخزن را تازه میکند؛ این فرمان بهتنهایی همهٔ برنامههای نصبشده را به نسخهٔ جدید تبدیل نمیکند. apt upgrade ارتقای بستههای نصبشده را طبق سیاست ابزار بررسی و انجام میدهد. خروجی، وابستگیها و درخواست تأیید را بخوانید. در سرور عملیاتی، ارتقا ممکن است روی سرویسها اثر بگذارد و باید با برنامهٔ نگهداری و امکان بازیابی انجام شود.
تمرین نصب یک ابزار کوچک
در ماشین آزمایشی Ubuntu یا Debian، ابتدا اطلاعات بستهها را تازه و توضیح بستهٔ tree را بخوانید. سپس در صورت مناسببودن، آن را نصب کنید. گزینهٔ y خودکار عمداً استفاده نشده تا تغییرات پیشنهادی را ببینید.
sudo apt update
apt show tree
sudo apt install tree
tree --versionاگر شبکه یا مخزن پاسخ نمیدهد، نصب از اسکریپت تصادفی اینترنت راهحل نخست نیست. نام مخزن، زمان سیستم، وضعیت شبکه و متن خطا را بررسی کنید. افزودن مخزن ثالث یک تصمیم اعتماد جداگانه است و برای این تمرین لازم نیست.
برنامه، فرایند و سرویس
وقتی برنامه اجرا میشود، یک یا چند فرایند ایجاد میکند. بعضی برنامهها مانند وبسرور باید در پسزمینه و زیر نظر مدیر سرویس کار کنند. در سیستمهای دارای systemd، واحدی با پسوند service میتواند چنین کاری را تعریف کند. همهٔ فایلهای اجرایی الزاماً سرویس ثبتشده ندارند؛ نصب بسته هم همیشه بهمعنای فعالشدن سرویس در بوت نیست.
اول وضعیت را مشاهده کنید
systemctl list-units --type=service --state=running
systemctl status ssh.service --no-pagerنمونهٔ دوم فرض میکند واحد ssh.service روی ماشین وجود دارد؛ اگر وجود نداشت، نام واحد نصبشده را از فهرست و مستندات توزیع پیدا کنید. وضعیت active، inactive و failed را همراه جزئیات بخوانید. دستور status برای تغییر پیکربندی نیست و حتی در وضعیت متوقف یا شکستخورده میتواند خروجی آموزشی مفیدی بدهد.
start با enable یکی نیست
- start: تلاش برای راهاندازی واحد در همین زمان.
- stop: متوقفکردن واحد در همین زمان.
- enable: تنظیم ارتباطهای لازم برای فعالسازی طبق وابستگیها و هدفهای سیستم، معمولاً هنگام بوت.
- disable: برداشتن آن ارتباطها؛ لزوماً سرویس درحالاجرا را همان لحظه متوقف نمیکند.
- restart: توقف و راهاندازی دوباره؛ ممکن است دسترسی کاربران را قطع کند.
برای فهم این تفاوت، لازم نیست سرویس SSH اتصال فعلی را restart کنید. در تمرین این درس به مشاهده بسنده کنید. نام سرویس و مجازبودن تغییر را پیش از هر فرمان مدیریتی بررسی کنید؛ وضعیت enabled هم بهتنهایی سلامت برنامه را ثابت نمیکند.
لاگ را محدود و هدفمند بخوانید
journalctl -u ssh.service -n 30 --no-pagerگزینهٔ u به واحد مشخص و n به تعداد آخرین رویدادها محدود میکند. فقط لاگهایی را میبینید که حساب شما اجازهٔ خواندنشان را دارد. بعضی برنامهها در فایل جداگانه مینویسند و الزاماً همهٔ رویدادها در journal نیست. زمان رویداد، نام واحد و متن خطا را کنار هم بررسی کنید. پیش از ارسال لاگ برای دیگران، اطلاعات حساس آن را بازبینی کنید.
تمرین با پاسخ راهنما
دوست شما apt update را اجرا کرده و میگوید همهٔ برنامهها ارتقا یافتند. پاسخ درست چیست؟ این فرمان فهرست مخازن را تازه کرده است؛ باید وضعیت بستهها و عملیات ارتقا جدا بررسی شود. سؤال دوم: enabled بودن یک سرویس ولی inactive بودن آن تناقض نیست؛ تنظیم راهاندازی و وضعیت فعلی دو محور جدا هستند.
مطالب مرتبط و منابع انگلیسی
sudo و مجوزها: https://www.darsavand.com/resources/linux-users-root-sudo-file-permissions
اتصال راه دور: https://www.darsavand.com/resources/ssh-first-connection-host-key-basics
Ubuntu، مدیریت بسته: https://ubuntu.com/server/docs/how-to/software/package-management/
systemd، راهنمای systemctl: https://www.freedesktop.org/software/systemd/man/latest/systemctl.html
systemd، راهنمای journalctl: https://www.freedesktop.org/software/systemd/man/latest/journalctl.html
پیشنیاز و محیط اجرای مثالها
درس 9 از ۱۰ در مسیر مقدماتی لینوکس و مفاهیم سرور. ترمینال و sudo را بشناسید. نصب فقط در ماشین آزمایشی Ubuntu یا Debian انجام شود. فرمانهای systemd مخصوص محیطی هستند که systemd در آن فعال است؛ همهٔ محیطهای WSL یا کانتینر چنین نیستند.
پیشرفت روی همین مرورگر ذخیره میشود.