منابع آموزشی و پژوهشی، برای دانشگاه و مدرسه
راهنمای انتخابمیز نویسنده
آموزش رایگان

نصب برنامه در اوبونتو؛ APT، سرویس systemd و خواندن لاگ

نصب نرم‌افزار، اجرای یک برنامه و مدیریت سرویس سه کار مرتبط اما متفاوت‌اند. این درس در Ubuntu و Debian مفهوم بسته و مخزن را توضیح می‌دهد و در سیستم‌های دارای systemd روش مشاهدهٔ وضعیت سرویس و لاگ را آموزش می‌دهد. تمرین نصب برای ماشین آزمایشی است.

فضای تمرینبه‌روزرسانی: ۱۴۰۵/۸/۵
آموزش‌ها
در این درس می‌خوانید

بسته و مخزن چیست؟

یک برنامه ممکن است برای کارکردن به کتابخانه‌ها و فایل‌های تنظیمات دیگری نیاز داشته باشد. مدیر بسته این اجزا و وابستگی‌ها را از مخازن تعریف‌شده دریافت و نصب را ثبت می‌کند. در Ubuntu و Debian، ابزار apt یکی از راه‌های رایج مدیریت بسته است. توزیع‌های دیگر ابزارهای خودشان را دارند؛ فرمان‌های این درس را برای همهٔ لینوکس‌ها یکسان فرض نکنید.

تفاوت update و upgrade

apt update اطلاعات محلی دربارهٔ بسته‌های موجود در مخزن را تازه می‌کند؛ این فرمان به‌تنهایی همهٔ برنامه‌های نصب‌شده را به نسخهٔ جدید تبدیل نمی‌کند. apt upgrade ارتقای بسته‌های نصب‌شده را طبق سیاست ابزار بررسی و انجام می‌دهد. خروجی، وابستگی‌ها و درخواست تأیید را بخوانید. در سرور عملیاتی، ارتقا ممکن است روی سرویس‌ها اثر بگذارد و باید با برنامهٔ نگهداری و امکان بازیابی انجام شود.

تمرین نصب یک ابزار کوچک

در ماشین آزمایشی Ubuntu یا Debian، ابتدا اطلاعات بسته‌ها را تازه و توضیح بستهٔ tree را بخوانید. سپس در صورت مناسب‌بودن، آن را نصب کنید. گزینهٔ y خودکار عمداً استفاده نشده تا تغییرات پیشنهادی را ببینید.

bash
sudo apt update
apt show tree
sudo apt install tree
tree --version

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

برنامه، فرایند و سرویس

وقتی برنامه اجرا می‌شود، یک یا چند فرایند ایجاد می‌کند. بعضی برنامه‌ها مانند وب‌سرور باید در پس‌زمینه و زیر نظر مدیر سرویس کار کنند. در سیستم‌های دارای systemd، واحدی با پسوند service می‌تواند چنین کاری را تعریف کند. همهٔ فایل‌های اجرایی الزاماً سرویس ثبت‌شده ندارند؛ نصب بسته هم همیشه به‌معنای فعال‌شدن سرویس در بوت نیست.

اول وضعیت را مشاهده کنید

bash
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 هم به‌تنهایی سلامت برنامه را ثابت نمی‌کند.

لاگ را محدود و هدفمند بخوانید

bash
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 یا کانتینر چنین نیستند.

پیشرفت روی همین مرورگر ذخیره می‌شود.

یکجا انتخاب کن، راحت‌تر دریافت کن

انتخاب‌های من ۰ منبع

مجموعهٔ مطالعه‌ات را بساز.

کنار مقاله‌ها «انتخاب» را بزنید تا چند فایل را با هم دریافت کنید.

انتخاب مقاله‌های رایگان