نگهداری از آرچ لینوکس و حذف بسته‌ها

درود

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

اگر مدت زیادی هست که از آرچ لینوکس استفاده می‌کنید (یعنی توزیع جدیدی یا همان آرچ را دوباره نصب نکردید), احتمالا یه سری مشکلاتی براتون پیش اومده, مثلا اینکه حس می‌کنید توزیع نسبت به روز‌های اول کند‌تر شده, دیر‌تر بالا میاد و یا هر موقع دستور زیر را می‌زنید حس می‌کنید که تعداد بسته‌ها از اونچه باید, بیشتر شدند:

اگر در این مدت‌ بارها میزکار‌های مختلف نصب و حذف کرده باشید, احتمال بروز/داشتن این مشکلات بیشتر هم هست, خب بذارید اول از موارد خیلی ساده‌تر شروع کنیم, برای اینکه دفعات بعدی که آرچ نصب می‌کنید این مشکلات براتون کمتر یا حتی اصلا پیش نیان, باید سعی کنید از یه میزکار استفاده کنید و اگر قصد دارید از چند میزکار استفاده کنید دقت کنید که دقیقا چه بسته‌هایی نصب می‌کنید و قراره اون بسته‌ها چیکار کنن (این دیگه بستگی داره به تجربه‌ی شما) و اگر می‌خواهید یک میزکار را پاک کنید و از میزکار دیگه‌ای به جاش استفاده کنید, از پاک شدن بسته‌هایی که مربوط می‌شن به میزکار قبلی و قرار نیست ازشون استفاد‌ه‌ای بشه, کاملا مطمئن شید! اگر تازه‌‌‌کار هستید برای اینکار به نظرم بهتره یه پوسته‌ی گرافیکی مثل Pamac برای Pacman نصب کنید تا بهتر بدونید دارید چیکار می‌کنید:

بحث را با کش پکمن, حذف بسته‌های ذخیره شده در اون و حذف بسته‌های اضافی نصب شده روی سیستم, شروع می‌کنیم. (ادامه مطلب)

در دبیان-بیس‌ها, دستوری وجود داره که بسته‌هایی که وابستگی بسته‌ی دیگری نیستند و ازشون استفاده‌ای هم نمیشه و یا broken هستند و باید حذف بشن را حذف می‌کنه و کلی‌تر بخوام بگم یه طور پاکسازی هست, که میشه این دستور:

معادل این دستور در آرچ لینوکس میشه:

که اگر از دسته کاربرانی هستید که زیاد بسته نصب و پاک می‌کنید, بهتره هفته‌ای یک بار این دستور را بزنید, از اونجایی که ممکنه به خاطر سپردن این دستور براتون سخت باشه به نظرم بهتره یه alias براش تعریف کنید:

حالا هر بار autoremove را بزنید, خودش اون عملیات را انجام میده! بیاید دستور بالا را بررسی کنیم:

ما در بالا از “Qdtq” استفاده کردیم و اون را به عنوان ورودی “Pacman -R” معرفی کردیم, از اونجایی که همه می‌دونیم قسمت اول دستور یعنی “pacman -R” چی هست, میریم سراغ بررسی آپشن‌های قسمت دوم دستور;
۱. در ابتدا حرف “Q” به معنی Query هست و معمولا زمانی استفاده میشه که بخواهیم بسته‌هایی که روی سیستم نصب شده‌اند را مشاهده کنیم.
۲. دومین حرفی که استفاده شده یعنی “d” به این معنی هست که فقط بسته‌هایی که به عنوان وابستگی نصب می‌شن را نمایش بده.
۳. سومین حرف که “t” هست, می‌گوید بسته‌هایی که در حال حاضر هیچ استفاده‌ای از آن‌ها نمیشه را نمایش بده.

و اما حرف چهارم که بالا درموردش صحبت نکردم,فقط و فقط اسم بسته‌ها را نمایش میده یعنی نسخه‌ی اون بسته را در ادامه نمایش نمی‌ده, حالا شاید براتون سوال باشه که چرا این اتفاق می‌اُفته درحالی که این موضوع ربطی به وابستگی و بسته‌های غیر ضروری و .. نداره, در جواب باید بدونید که ما داریم این دستور را به عنوان ورودی معرفی می‌کنیم و پکمن فقط اسم بسته را برای حذف اون قبول می‌کنه و اگر اسم و نسخه درکنار هم باشند, خطای “Target not found” پدیدار میشه :)

برسیم به بسته‌هایی که در کش پکمن ذخیره می‌شن, در حالت خیلی ساده برای اینکه بسته‌هایی که توی کش هستند را پاک کنید دستور زیر کمکتون می‌کنه:

ممکنه برای یک بسته‌ در طولانی مدت چندین آپدیت  بیاد, نسخه‌های قدیمی‌تر اون بسته در کش پکمن باقی می‌مونن, دستور بالا آخرین نسخه را نگه می‌داره و بقیه را پاک می‌کنه, مثلا برای من:

حالا اگر به هر دلیل بخواهیم که مثلا فقط سه نسخه‌ی آخری که از اون بسته توی کش موجوده را نگه داره و نسخه‌های قدیمی تر را پاک کنه, دستور را اینطوری وارد می‌کنیم:

در بالا آپشن‌های “r” و “k” استفاده شدند, که “r” به معنی “remove” و “k” به معنی “keep” هست, پس زمانی که میگیم “rk 3” یعنی همه را پاک کن ولی از هر بسته سه نسخه‌‌ی آخرش را برایم نگه‌دار!

بسته‌های کش در مسیر زیر ذخیره می‌شن:

خب حالا اگه بخوایم این پاکسازی در ابعاد گسترده‌تر انجام بشه, از دستور زیر استفاده می‌کنیم:

خروجی برای من:

خب بالاتر (از خروجی من) می‌تونید بخونید و ببینید که اون فرمان قراره چه دسته‌‌ای از بسته‌ها را پاک کنه, من عملیات را لغو کردم و همینطور پیشنهاد میکنم که کش پکمن را به صورت کامل پاک نکنید, از همون دستوری که در ابتدا نسبت به پاک کردن کش گفتم استفاده کنید. (هر چند کاربرد pacman -Sc با paccache -r تفاوت‌های خودش را داره!)

بررسی دستور بالا:

فرمانی که بالاتر بهتون گفتم, از دو آپشن بیشتر استفاده نکرده, که می‌شن “S” و “c”;
۱. حرف “S” به جای کلمه‌ی Sync استفاده میشه و معمولا زمانی که ما بخوایم بسته‌ها را به نسخه‌ی جدید‌تر ارتقاء بدیم یا پایگاه‌های داده‌ی پکمن را به روز رسانی کنیم و یا بسته‌ای نصب کنیم ازش استفاده میشه!
۲. حرف بعدی که “c” هست هم به جای clean نشسته و خب از اسمش معلومه چیکار میکنه! (پاکسازی می‌کنه )

در ادامه چند حالت ساده‌تر از پاک کردن بسته‌ها براتون می‌گم که احتمالا می‌دونید و سپس می‌ریم سراغ بررسی لاگ‌های سیستم و ایده‌هایی که چرا سیستم ما دیرتر بالا میاد!

برای اینکه فقط بسته‌ی مورد نظر را پاک کنید و وابستگی‌هاش را نگه دارید:

فرمان زیر هم وابستگی‌های یه بسته‌‌ی خاص که بهشون نیازی نیست را پاک میکنه:

اگر بسته‌ای هست که می‌خواید خودش و همه‌ی بسته‌های مربوط بهش را پاک کنید:

البته‌ حالت‌های خیلی زیادی هست برای پاک‌ کردن بسته‌ها ولی حس کردم این سه‌ مورد معمولا چیز‌هایی هستند که عموم نمی‌دونند, عملا شما با اضافه یا کم کردن هر سوییچ بعد از R می‌تونید حالت پاک‌ کردن بسته را عوض کنید!

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

خب از بحث حذف ‌کردن بسته‌ها خارج بشیم و برسیم به خدمت‌ها (سرویس‌ها), اگر از دسته‌ای هستید که plymouth نصب نکردید و می‌تونید لاگ مربوط به راه‌ اندازی سرویس‌ها را موقع بالا اومدن آرچ لینوکس ببینید, ممکنه بعضی از سرویس‌ها fail بشن که با رنگ قرمز نشون داده می‌شن, اگر این سرویس‌ها سریع رد می‌شن و شما نمی‌تونین دقیقا تشخیص بدید که چه سرویسی بارگذاری نشده می‌تونید از دستور زیر استفاده کنید تا سرویس‌هایی که موقع راه‌اندازی شکست می‌خورن را ببینین:

حالا که اسم سرویس را می‌دونید, می‌تونید با دستور زیر اطلاعات بیشتری نسبت به اینکه چرا اون سرویس راه‌اندازی نمیشه, بدست بیارید:

و به صورت کلی برای اینکه از تمام خطا‌هایی که در لاگ‌های سیستم وجود دارند مطلع بشید, دستور زیر کمکتون می‌کنه:

خروجی این دستور برای من:

مثلا در خروجی بالا خطا‌هایی هست که بعدا باید دقیق‌تر بررسیشون کنم :D

در مورد اینکه چرا سیستم ممکنه دیر بالا بیاد, اینکه روت و هوم روی SSD باشند خیلی تاثیر داره, اگر از HDD استفاده می‌کنید, طبیعی هست که آرچ لینوکس کمی دیر‌تر بالا بیاد, دیر بالا اومدن به Display manager و تمی که برای اون استفاده می‌کنید, سرویس‌هایی که بارگذاری نمی‌شند, تعداد سرویس‌هایی که در استارتاپ قرار دادید و همین طور تم plymouth شما (اگر استفاده می‌کنید) مربوط میشه!

تقریبا این مطلب تمومه به جز یه مورد دیگه, که مهم‌ترین قسمت این مقاله هست!!

اگه در شرایطی هستید که کلی بلا سر آچ لینوکس آوردید و می‌خواید این توزیع را دوباره نصب کنید و همینطور حوصله ندارید و نمی‌خواهید دوباره آرچ را دانلود کنید, روی فلش مموری یا دیسکی بریزید و دوباره پارتیشن بندی کنید, می‌تونید از دستوری استفاده کنید که شما را می‌بره به زمانی که تازه اسکریپت pacstrap را اجرا کرده بودید و بهتون اجازه می‌ده از اونجا دوباره آرچ لینوکس را پیکربندی کنید, این دستور کل بسته‌های سیستم شما را به جز بسته‌های مربوط به گروه بسته‌های Base و Base-devel پاک می‌کنه, در واقع همه چیز را به جز خود آرچ پاک می‌کنه!!

دستوری حذف تمامی بسته‌ها که معمولا از TTY اجرا میشه:

اگه می‌خواید بدونید دقیقا چه بسته‌هایی با دستور بالا پاک می‌شن:

یادتون نره دوباره باید گراب را پیکربندی کنید بعد از اجرای این فرمان!

این مقاله هم تموم شد, این‌ها نکات خیلی ساده‌ای بودند که تقریبا بیشتر افراد می‌دونن ولی چون توی منابع فارسی چیزی پیدا نکردم, تصمیم گرفتم اینجا بنویسمشون!

اگر هر ایده‌ای دارید که فکر می‌کنید میشه به این مطلب اضافه‌اش کرد, خوشحال می‌شم باهام به اشتراک بذاریدش 

امیدوارم مفید واقع بشه, سایونارو  :D

درباره نویسنده: حسین حیدری

علاقه مند به انیمه، مانگا، گنو/لینوکس و برنامه نویسی :)

مطالب زیر را حتما بخوانید

4 دیدگاه

  1. سلام
    بسیار عالی بود ولی ای کاش زودتر میدیم این نوشته رو شایدم تازه باشه این راهنمات تاریخ نداره که من یک آرج ۲ ساله رو از دست دادم برای آرچ کارها بسیار ضروری این مطلب بیشتر مباحثش رو باز کن مخصوصا حال صفر رو بیشتر توضیخ بذه

    راستی یادم یک زمانی بسیار تازه کار بودی و علاقه مند ولی میبینم ماشاال…ه بسیار حرفه ای شدی بهت تبریک میگم بخاطر پشتکارت موفق باشی

  2. ایده‌ای ندارم. فقط اگر در تنظیمات کد ادیتور وردپرس تیک “رمزگشایی عناصر html در کدها” رو بزنی نوشته بجای & نمینویسه ;amp& یا بجای > نمینویسه ;lt&
    موفق باشی

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *