چی آپگرید شد سیستم پکید؟!

یک اسکریپت هست به نام wat (Wat dafuq did I do?) که میاد از لاگ پکمن به ما میگه کدوم پکیج ها اخیرا آپگرید شدند. این طوری میشه حدس زد بعد از آپگرید کدوم پکیج‌ها ممکنه اتفاقی افتاده باشه!

طبق صفحه ویکی این اسکریپت، میتونید اون رو یک جا ذخیره کنید و اجراش کنید. و میتونید با AUR پکیج wat-git رو در آرچ نصب کنید.

برای استفاده کافیه دستور wat رو اجرا کنید. میتونید متغیر هم بهش بدید. مثلا:

$ wat

پکیج های آپدیت شده در آخرین بروزرسانی رو میگه.

$ wat 3

پکیج های آپدیت شده از ۳ تا بروزرسانی اخیر رو میگه.

$ wat 7 4

پکیج های آپدیت شده بین هفتمین تا چهارمین بروز رسانی رو میگه.

اگر از سوییچ -i استفاد کنید، پکیج هایی که نصب شدند (نه آپدیت) رو نشون میده. مثلا:

$ wat -i 3

چطور بفهمیم یک فایل متعلق به چه بسته ای است؟!

موارد زیادی ممکنه پیش بیاد که لازم داشته باشیم بفهمیم یک فایل مربوط به چه بسته ای است. مثلا در باز کردن یک برنامه خطایی دریافت میکنیم مبنی بر اینکه مثلا cannot load shared object file libvoikko.so.1. یعنی این فایل رو پیدا نکرده...

برای اینکه بفهمیم فایل مورد نظر متعلق به چه بسته ای است که ما نداریمش، در توزیع های مبتنی بر Arch دو راه داریم. یکی استفاده از pacman و یکی استفاده از pkgfile. البته قبلش باید یک بار دیتابیس فایلها رو داشته باشیم. برای بروز رسانی دیتابیس:

$ sudo pacman -Fy

استفاده از pkgfile

$ pkgfile libvoikko.so.1

استفاده از pacman

$ pacman -F libvoikko.so.1

اما اگر بخوایم بفهمیم یک فایل مشخصی در یک مسیر، مربوط به کدوم یک از بسته های نصب شده است، از سوییچ -Qo استفاده میکنیم. مثلا:

$ pacman -Qo /usr/share/dbus-1/services/org.gnome.Nautilus.service

آرشیو پکیج‌های قدیمی Arch

اگر در Arch لازم داشتید یک نسخه قدیمی‌تر از پکیج مورد نظرتون رو نصب کنید، و فایلش رو در اختیار نداشتید، میتونید توی این آدرس دنبالش بگردید. سپس میتونید با pacman اون رو نصب کنید. به طور مثال:

$ pacman -U https://archive.archlinux.org/packages/path/packagename.pkg.tar.zst

اطلاعات بیشتر رو میتونید در این لینک از ویکی آرچ ببینید. مثلا میتونید پکیج های سیستم رو به یک تاریخ خاصی downgrade کنید و...

مخزن کامپایل شده AUR

در ویکی آرچ مخازن غیر رسمی متعددی نام برده شده اند که کاربران میتونن اونها رو به لیست مخازن pacman اضافه کنند. البته کاملا با مسئولیت خودشون. چون این مخازن توسط تیم توسعه دهنده آرچ و یا توزیع های وابسته به آرچ کنترل و تست نمیشن.

هر مخزنی با توجه به هدف سازنده، حاوی یک سری پکیج ها است. مثلا اینجا نسخه های بتای گنوم رو میتونید به لیست مخازن اضافه کنید. یکی از مخازن، مخزن پکیج های کامپایل شده ی AUR به نام Chaotic-AUR هست. یعنی یک گروهی نشستن پکیج های به درد بخور AUR رو کامپایل میکنن و در این مخزن قرار میدن. البته این کار به صورت خودکار انجام میشه. خیلی هم به روز هست!

خوبی های این کار:

  • لازم نیست دردسر کامپایل از سورس رو بکشید
  • لازم نیست ده ها بسته اضافی برای کامپایل کردن نصب کنید
  • بسته ها به راحتی آپدیت میشن.
  • برخی بسته ها فقط در AUR هستن و در مخازن رسمی نیستن

بدی های این کار:

  • اولا که AUR خودش مخالفانی داره (از نظر امنیت بسته ها)
  • دوما که بسته ها توسط تیم غیر رسمی کامپایل شدند و میتونن اشکالاتی داشته باشند. چه فنی چه امنیتی

با این حال این موضوع خیلی به درد من خورد و مشکلی باهاش ندارم. برای اینکه بتونید مخزن کامپایل شده بسته های AUR رو به لیست مخازن pacman اضافه کنید، به این سایت مراجعه کنید و طبق راهنما اقدامات لازم رو انجام بدید.

جلوگیری از نصب زبان های غیر انگلیسی در pacman

اگر نمیخواید سیستمتون پر از فایلهای locale زبان های مختلف بشه، کافیه خطوط زیر رو به فایل /etc/pacman.conf اضافه کنید. با این کار فایلهای زبان های غیر انگلیسی از درون بسته extract نخواهند شد

NoExtract = usr/share/help/* !usr/share/help/en*
NoExtract = usr/share/locale/* !usr/share/locale/en* !usr/share/locale/locale.alias
NoExtract = usr/share/man/* !usr/share/man/man*
NoExtract = usr/lib/chromium/locales/*.pak !usr/lib/chromium/locales/en.pak

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

مدیریت بسته های نصب شده در Arch

همه میدونیم که pacman مدیر بسته های توزیع های مبتنی بر Arch مثل Manjaro و Parchlinux هست. محیط های گرافیکی مختلفی برای اون ساخته شده، ولی اگه یه موقعی توی ترمینال بودید و میخواستید سریع بسته های نصب شده‌تون رو ببینید، دستور زیر محیط جالبی رو فراهم میکنه که در اون لیستی از بسته های نصب شده با قابلیت جست و جوی سریع وجود داره.

$ pacman -Qq | fzf --preview 'pacman -Qil {}' --layout=reverse --bind 'enter:execute(pacman -Qil {} | less)'




حاصل سر و کله زدن های من با لینوکس