اسکریپتی برای کار با pacman

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

هدف این اسکریپت اینه که یک سری عملکردهای رایج و به درد بخور پکمن رو که بعضا دستورات بلندی میشن و نمیشه به یاد سپرد، به دستورات کوتاه تبدیل کنیم.

Screenshot from 2024-06-18 12-13-14.png 

ویژگی ها و کارهایی که این اسکریپت میکنه:

  • استفاده از یک AUR Helper به دلخواه خودتون (پیشفرض: yay)
  • استفاده از sudo یا doas به دلخواه خودتون (پیشفرض: sudo)
  • جست و جوی پکیج ها در مخازن رسمی و AUR
  • نصب پکیج (ها) چه از مخازن چه از فایل، با یک دستور ثابت
  • پیدا کردن بسته ای که صاحب یک فایل خاصی است
  • نمایش اطلاعات یک بسته
  • حذف بسته ها با/بدون حذف بسته های وابسته
  • حذف بسته های orphan
  • آپدیت کل سیستم با کمک AUR Helper 
  • یافتن سریعترین میرورها (با reflector)
  • نمایش دپندنسی های یک بسته
  • نمایش بسته هایی که به یک بسته وابسته هستند.
  • نمایش محتوای یک فایل درون فایل فشرده یک بسته tar
  • نمایش لیستی از بسته ها با این ویژگیها:
    • تمامی پکیج ها (نصب شده یا نشده)
    • بسته های نصب شده
    • بسته های orphan
    • بسته هایی که خارج از پکیج منیجر نصب کردیم
    • بسته هایی که هیچ بسته دیگه ای به اونها وابستگی نداره
    • بسته هایی که قابل بروزرسانی هستن
    • قابلیت جست و جوی بسته ها درون این لیست ها
  • ذخیره یک فایل در پوشه کاربر حاوی لیست تمامی پکیج های نصب شده
  • پاک‌سازی کش پکمن
  • آنلاک کردن دیتبایس با حذف فایل db.lck

ادامه مطلب

Cover Image

انتقال یک Arch به هارد جدید

اخیرا یک هارد SSD خریدم و بر آن شدم تا آرچی که روی HDD نصب داشتم منتقل کنم روی SSD. کار سختی نیست، ولی باید چهارچوب قضیه رو توی ذهنتون ترسیم کنین و بدونین که دقیقا قراره چه کاری بکنین. 

سناریوهای مختلف و روش های مختلفی برای این کار وجود داره. اصطلاحا به این کار میگن clone کردن. یعنی شما یک کپی نظیر به نظیر از یک فایل سیستم (درایو) در یک فایل سیستم دیگه می‌سازید. و پیکربندی های مربوط به بوت لودر رو هم انجام میدید و سیستم با دیسک جدید بالا میاد.

تیتروار قراره چه کار بکنیم؟

  • پارتیشن بندی دیسک جدید
  • کلون کردن پارتیشنی که آرچ روی اون نصبه روی پارتیشن یک دیسک جدید.
  • نصب مجدد پکیج کرنل 
  • نصب بوت لودر (مثلا grub) روی دیسک جدید
  • تغییر محتوای fstab بر اساس پارتیشن های جدید

چند سناریو رو مطرح میکنم:

  1. شما یک لپتاپ دارید که فقط یک هارد HDD داره. میخواید اون رو با یک SSD اینترنال SATA تعویض کنید.
    • خب یا باید هر دو هارد همزمان روشن باشن که بتونین اطلاعات رو کلون کنید، مثلا یک باکس خالی هارد اکسترنال دارید که HDD رو میذارید داخلش و SSD رو هم میذارید داخل لپتاپ. یا مثلا لپتاپ شما دو تا پورت SATA داره و میتونید هر دو هارد رو همزمان متصل کنید. (مثلا جای DVD ROM)
    • یا اینکه امکان روشن بودن همزمان هاردها رو ندارید. در این صورت باید اول از HDD اطلاعات رو کلون کنید روی یک فلش مموری، بعد HDD رو در بیارید و SSD رو جایگزین کنید و سپس از روی فلش مموری کلون کنید روی SSD.
  2. شما یک لپتاپ دارید که میخواید HDD رو نگه دارید، و یک SSD از نوع NVMe بهش اضافه کنید و سیستم عامل رو از روی HDD به اون منتقل کنید.

اینکه چه سناریویی با شما همخوانی داره، خدا میدونه! به تعداد آدم ها راه هست برای پارتیشن بندی برای لینوکس! من در این مطلب کلیت ماجرا رو میگم. شما بر اساس شرایط خودتون باید عمل کنید.

ادامه مطلب

Cover Image

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

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

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

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

$ wat

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

$ wat 3

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

$ wat 7 4

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

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

$ wat -i 3

مونت خودکار پارتیشن های سیستمی در لینوکس

توجه: اقدامات زیر ممکنه باعث بشه سیستم شما موقتا بوت نشه. بنابراین با دقت کامل و با جست و جوی بیشتر در این مورد، عمل بفرمایید.

systemd میتونه بدون نیاز به فایل fstab پارتیشن ها رو مونت کنه. قبلا توضیح دادم چطوری. اما در این پست میخوام بگم systemd با استفاده از systemd-gpt-auto-generator میتونه پارتیشن های سیستمی رو بدون اینکه ما دخالتی داشته باشیم و حتی یونیت برای اونها بسازیم، مونت کنه. البته به شرطی که شما از هوک systemd در ساخت ایمیج کرنل استفاده کرده باشید.

منظور از پارتیشن های سیستمی یعنی پارتیشن روت در / پارتیشن بوت در /boot یا /efi پارتیشن هوم در /home و همچنین پارتیشن های دیگه از جمله /var و var/tmp و... مونت بشن.

توجه: حتما یک نسخه live روی مموری داشته باشید تا اگر با دستکاری های زیر دچار مشکل شدید بتونید قضیه رو حل کنید.

برای این کار اول اینکه باید پارتیشن های شما از نوع GPT باشند تا هر کدوم یک آی دی خاصی که بهشون Partition Type GUID میگن اختصاص داده بشه. در واقع systemd با استفاده از این نوع پارتیشن ها رو مشخص میکنه و اونها رو در جایی که باید، مونت میکنه. با این کار دیگه نیازی به فایل fstab نیست و نیازی هم به اضافه کردن مسیر پارتیشن root در خط کرنل بوت لودر هم نیست.

ادامه مطلب

درایور NTFS موجود در کرنل

سالها برای مونت کردن درایوهای ntfs در لینوکس، باید ntfs-3g رو نصب میکردیم و در متغیرهای مونت، نوع فایل‌سیستم رو ntfs-3g قرار میدادیم. اما از کرنل 5.15 درایور اختصاصی ntfs-3 با قابلیت خواندن و نوشتن در خود کرنل گنجانده شده و دیگه لازم نیست ntfs-3g رو نصب داشته باشیم.

و الان که کرنل در نسخه ۶.۷ بسر میبره، این درایور پیشرفت های زیادی داشته و حتی در مواردی بهتر از ntfs-3g هم عمل میکنه. و متغیرهای جالبی هم برای مونت درایو داره. از جمله:

  • nohidden: فایلها و فولدرهایی که در ویندوز hidden هستند (مثل فولدر system volume information) در لینوکس هم مخفی بمانند.
  • sys_immutable: فایلها و فولدرهایی که در ویندوز سیستمی تلقی میشن و قابل write نیستند، در لینوکس هم همین ویژگی رو داشته باشند.
  • hide_dot_files: فایلها و فولدرهایی که در لینوکس میسازیم و اونها رو با گذاشتن یک نقطه در ابتدای اسمشون مخفی میکنیم، در ویندوز هم hidden شناخته خواهند شد.
  • windows_names: نام فایلها و فولدرهایی که در لینوکس انتخاب میکنیم، با شیوه نام گذاری فایلها در ویندوز مغایرت نداشته باشند.
  • force: وقتی درایو در ویندوز هایبرنیت شده (که قابل مونت با ntfs-3g نیست) با این متغیر قابل مونت میشه.
  • و چند تا چیز مفید دیگه که توصیه میکنم در اینجا در موردش بخونید

کافیه برای استفاده از درایور ntfs کرنل، بجای ntfs-3g از ntfs-3 استفاده کنید و متغیرها رو بر اساس شیوه جدید تنظیم کنید. از هر نوع روشی که برای مونت استفاده میکنید مهم نیست، از دستور مستقیم mount یا فایل fstab یا یونیت های systemd. مثلا برای دستور مستقیم:

# mount -t ntfs-3 -o rw,nodev,noatime,nohidden,windows_names,uid=1000,gid=1000 /dev/sdXX /data/driveC

بعد از اینکه تست کردید و همه چیز اوکی بود، میتونید بسته ntfs-3g رو حذف کنید. اگر یک روزی خواستید از دستور ntfsfix استفاده کنید میبایست بسته ntfsprogs-ntfs3 رو از AUR نصب کنید.

گزینه های پیشفرض mount

شاید تا حالا براتون سوال پیش اومده باشه که در mount کردن درایوها، اون defaults چیه که همه جا هست؟! 

باید بگم که متغیر defaults شامل یک سری متغیرها است که بجای نوشتن همه اونها، شما فقط کافیه defaults رو بنویسید. تا سیستم موقع مونت کردن درایو (مثلا از روی فایل fstab) اون متغیرها رو اعمال کنه.

ما میتونیم این متغیرهای پیشفرض رو طبق سلیقه خودمون تغییر بدیم! برای این کار، کافیه فایل زیر رو یک نگاهی بیندازید:

$ nano /etc/udisks2/mount_options.conf.example

توضیحات فایل گویای خودش هست. شما میتونید برای انواع فایل سیستم (ext4 یا ntfs یا vfat و...) متغیر های پیشفرض خودتون رو تعیین کنید. از فایل نمونه بالا استفاده کنید و فایل نهایی رو بدون پسوند example در همون مسیر ذخیره کنید.




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