Jump to content

pacman (فارسی)

From ArchWiki

مدیریت کننده بسته پک-من یکی از ویژگی های تمایز اصلی ارچ لینوکس است. که با ترکیب فرمت بسته باینری ساده با سیستم ساخت ارچ اسان برای استفاده ایجاد میکند. هدف پک-من این است که مدیریت بسته ها را به راحتی امکانپذیر کند, چنان چه از مخازن رسمی باشند یا از ساختهای خود کاربر.

پک-من سیستم را با همگام سازی لیست بسته ها با سرور اصلی به روز نگه می دارد.این مدل سرور/کاربر همچنین به کاربر اجازه می دهد بسته ها را با یک دستور ساده دانلود/نصب کند, کامل با تمام نیازمندی های مورد نیاز.

پک-من در زبان برنامه نویسی سی نوشته شده است و استفاده می کند ازbsdtar(1) tar برای فرمت (قالب) بسته بندی ها استفاده میکند

استفاده

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

نصب بسته

یک بسته یک آرشیو است که شامل:

  • تمام فایل های (کامپایل شده) یک برنامه
  • فرا داده در مورد برنامه، مانند نام برنامه، نسخه، وابستگی ها و غیره
  • فایل ها و دستورالعمل های نصب برای پک-من

مدیریت کننده بسته آرچ پک-من میتواند آن بسته ها را نصب، به روزرسانی و حذف کند. استفاده از بسته ها به جای کمپایل کردن و نصب برنامه ها، مزایای مختلفی دارد:

  • به راحتی قابل به روز رسانی: پک-من بسته های موجود را به محض به روز رسانی در دسترس قرار می دهد.
  • بررسی وابستگی: پک-من مدیریت وابستگی برای شما انجام میدهد، شما فقط برنامه را مشخص کرده و پک-من نصب آن را همراه با هر برنامه دیگری که نیاز دارد انجام میدهد.
  • حذف کردن: پک-من یک لیست از هر فایل در یک بسته دارد؛ به این ترتیب، زمانی که تصمیم به حذف یک بسته دارید، هیچ فایلی به طور ناخواسته پشت سر گذاشته نمی شود.

نصب یک بسته ی بخصوص

برای نصب یک بسته یا لیستی از بسته ها، از جمله وابستگی ها، دستور زیر را وارد کنید:

# pacman -S package_name1 package_name2

برای نصب لیستی از بسته ها با regex:

# pacman -S $(pacman -Ssq package_regex)

گاهی اوقات چندین نسخه از یک بسته در مخازن مختلف وجود دارد (به عنوان مثالextra and extra-testing). برای نصب نسخه از مخزن extra در این مثال، مخزن باید در مقابل نام بسته قید شود:

# pacman -S extra/package_name

برای نصب تعدادی از بسته هایی که الگوهای مشابهی را در نام خود به اشتراک میگذارند، میتوان از { } استفاده کرد. به عنوان مثال:

# pacman -S plasma-{desktop,mediacenter,nm}

این را می توان به هر سطح مورد نیاز گسترش داد:

# pacman -S plasma-{workspace{,-wallpapers},pa}
بسته های مجازی

بسته مجازی بسته خاصی است که به خودی خود وجود ندارد، اما توسط یک یا چند بسته دیگر ارائه می شود. بستههای مجازی به بسته های دیگر اجازه میدهند که یک بسته خاص را به عنوان یک وابستگی نامگذاری نکنند، در صورتی که چندین بسته مشابه وجود داشته باشد. بسته های مجازی را نمی توان با نام آنها نصب کرد، در عوض آنها در سیستم شما نصب می شوند زمانی که شما یک بسته ارائه بسته مجازی نصب کرده اید. یک مثال بسته dbus-units است.

نصب بسته گروهی

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

# pacman -S gnome

از شما می خواهد بسته ها را از گروه gnome که می خواهید نصب کنید انتخاب کنید.

گاهی اوقات یک گروه بسته حاوی مقدار زیادی بسته خواهد بود و ممکن است تنها تعداد کمی از آنها وجود داشته باشد که شما می خواهید یا نمی خواهید نصب کنید. به جای وارد کردن تمام اعداد به جز مواردی که نمی خواهید، گاهی اوقات راحت تر است که بسته ها یا محدوده بسته ها را با نحو زیر انتخاب یا مستثنی کنید:

 Enter a selection (default=all): 1-10 15

که بسته های 1 تا 10 و 15 را برای نصب انتخاب می کند، یا:

Enter a selection (default=all): ^5-8 ^2

که تمام بسته ها به جز 5 تا 8 و 2 را برای نصب انتخاب می کند. برای دیدن اینکه چه بسته هایی متعلق به گروه gnome هستند، ,وارد کنید:

$ pacman -Sg gnome

همچنین از https://archlinux.org/groups دیدن کنید تا ببینید چه گروه های بسته ای در دسترس هستند.

حذف بسته ها

برای حذف فقط یک بسته ، بدون حذف تمام وابستگی های نصب شده است ان :

# pacman -R package_name

برای حذف یک بسته و وابستگی های آن که توسط هیچ بسته نصب شده دیگر مورد نیاز نیست:

# pacman -Rs package_name

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

# pacman -Rsu package_name

برای حذف یک بسته، وابستگی های آن و تمام بسته هایی که به بسته هدف بستگی دارد:

# pacman -Rsc package_name

برای حذف یک بسته، که توسط یک بسته دیگر مورد نیاز است، بدون حذف بسته وابسته:

# pacman -Rdd package_name

پک-من هنگام حذف برنامه های خاص، فایل های پیکربندی مهم را ذخیره می کند و آنها را با پسوند: .pacsave نامگذاری می کند. برای جلوگیری از ایجاد این فایل های پشتیبان از گزینه -n استفاده کنید:

# pacman -Rn package_name

بهروزرسانی بسته ها

پک-من میتواند تمام بسته های موجود بر روی سیستم را تنها با یک دستور به روز کند. این امر بسته به اینکه سیستم تا چه حد به روز است، می تواند مدت زمان زیادی طول بکشد. دستور زیر پایگاه داده های مخزن را همگام سازی می کند و بسته های سیستم را به روز می کند، به استثنای بسته های "محلی" که در مخازن پیکربندی نشده اند:

# pacman -Syu

جست و جو پایگاه داده های بسته

پک-من پایگاه داده بسته محلی را با پرچم -Q نمایش می دهد. پایگاه داده بروز سازی شده را با پرچم -S و پایگاه داده فایل ها با پرچم -F. پک-من می تواند نام و توضیحات بسته ها را در پایگاه داده جستجو کند:

$ pacman -Ss string1 string2

گاهی اوقات، -s ساخته شده در ERE (Extended Regular Expressions) می تواند بسیاری از نتایج ناخواسته ایجاد کند، بنابراین آن را باید فقط محدود به مطابقت نام بسته کرد ؛ نه شرح بسته و نه هیچ زمینه دیگر:

$ pacman -Ss '^vim-'

برای جستجوی بسته های در حال حاضر نصب شده :

$ pacman -Qs string1 string2 

برای جستجوی نام فایل های بسته در بسته های از راه دور ( در مخازن از راه دور ):

$ pacman -F string1 string2 

برای نمایش اطلاعات گسترده در مورد یک بسته داده شده (به عنوان مثال وابستگی های آن):

$ pacman -Si package_name

برای بسته های محلی نصب شده:

$ pacman -Qi package_name

همچنین استفاده از دو پرچم -i لیست فایل های پشتیبان و حالت های اصلاح آنها را نمایش می دهد:

$ pacman -Qii package_name

برای بازیابی یک لیست از فایل های نصب شده توسط یک بسته:

$ pacman -Ql package_name

برای بازیابی یک لیست از فایل های نصب شده توسط یک بسته از راه دور:

$ pacman -Fl package_name

برای تأیید وجود فایل های نصب شده توسط یک بسته:

$ pacman -Qk package_name

استفاده از پرچم k دو بار بررسی کامل تری را انجام میدهد. برای جست و جو از پایگاه داده برای دانستن اینکه یک فایل بسته در سیستم فایل متعلق به:

$ pacman -Qo /path/to/file_name

برای پرس و جو از پایگاه داده برای دانستن اینکه یک فایل متعلق به کدام بسته از راه دور است:

$ pacman -F /path/to/file_name

برای لیست کردن تمام بسته ها دیگر به عنوان وابستگی مورد نیاز نیستند :

$ pacman -Qdt

برای لیست تمام بسته ها به صراحت نصب شده و به عنوان وابستگی مورد نیاز نیست:

$ pacman -Qet

برای مثال های بیشتر پک-من به نکته ها و ترفندها مراجعه کنید.


برای قابلیت های پیشرفته، pkgfile را نصب کنید، که از یک پایگاه داده جداگانه با تمام فایل ها و بسته های مرتبط با آنها استفاده می کند.

پک تری (Pactree)

برای مشاهده لیست درختی وابستگی یک بسته:

$ pactree package_name

برای مشاهده لیست درختی وابسته یک بسته، پرچم معکوس -r را به pactree منتقل کنید.

ساختار پايگاه داده ها

پایگاه داده های پک-من معمولا در var/lib/pacman/sync قرار دارند .برای هر مخزن مشخص شده در etc/pacman.conf یک فایل پایگاه داده مربوطه در آنجا قرار خواهد گرفت. فایل های پایگاه داده بایگانی های tar gzipped حاوی یک دایرکتوری برای هر بسته هستند، به عنوان مثال برای کدام بسته:

فایل desc شامل داده های کلی مانند توضیحات بسته، وابستگی ها، اندازه فایل و هش MD5 است.

پاک کردن حافظه کش بسته ها

پک-من بسته های دانلود شده را در /var/cache/pacman/pkg/ ذخیره میکند و نسخه های قدیمی یا حذف شده را به طور خودکار حذف نمی کند. این کار مزایایی دارد:

  1. این اجازه میدهد تا یک بسته را بدون نیاز به بازیابی نسخه قبلی از طریق ابزارهای دیگر، مانند آرشیو آرچ لینوکس، داون گرید شود .
  2. بسته ای که حذف شده است به راحتی می تواند به طور مستقیم از پوشه حافظه پنهان نصب شود، نیازی به دانلود جدید از مخزن نیست.

با این حال، لازم است که عمداً کش را به صورت دوره ای تمیز کنید تا از رشد حجم حافظه پنهان به طور نامحدود جلوگیری شود. اسکریپت paccache ارائه شده در بسته pacman-contrib، به طور پیش فرض تمام نسخه های ذخیره شده بسته های نصب شده و حذف شده، به جز سه مورد اخیر، را حذف می شود:

# paccache -r

paccache.timer را فعال و شروع کنید تا بسته های استفاده نشده را به صورت هفتگی دور بیندازید. شما می توانید تنظیمات را برای سرویس در /etc/conf.d/pacman-contrib تنظیم کنید, با PACCACHE_ARGS='-k1' یا PACCACHE_ARGS='-uk0' مانند دو مثال زیر . شما همچنین می توانید تعریف کنید که چند نسخه اخیر را می خواهید نگه دارید. برای نگه داشتن تنها یک نسخه گذشته استفاده کنید :

# paccache -rk1

برای محدود کردن عمل paccache در برابر بسته های حذف شده، پرچم -u/--uninstalled را اضافه کنید. به عنوان مثال برای حذف تمام نسخه های ذخیره شده از بسته های حذف شده، از موارد زیر استفاده کنید:

# paccache -ruk0

paccache -h را برای حالت های بیشتر ببینید.


پک-من همچنین دارای برخی از گزینه های داخلی برای تمیز کردن حافظه پنهان و فایل های پایگاه داده باقی مانده از مخازن است که دیگر در فایل پیکربندی /etc/pacman.conf ذکر نشده است.با این حال پک-من امکان نگهداری تعدادی از نسخه های گذشته را ارائه نمیدهد و بنابراین تهاجمی تر از گزینه های پیش فرض paccache است.

برای حذف تمام بسته های ذخیره شده که در حال حاضر نصب نشده اند و پایگاه داده های همگام سازی استفاده نشده، اجرا کنید:

# pacman -Sc

برای حذف تمام فایل ها از حافظه پنهان، از پرچم پاک دو بار استفاده کنید، این روش تهاجمی ترین حالت است و هیچ چیز را در حافظه پنهان باقی نمی گذارد:

# pacman -Scc

دستور های اضافه

dry run

برای دانلود بسته ای بدون نصف کردن ان اجرا کنید

# pacman -Sw package_name

برای نصف یک بسته محلی که جزعی از مخازن خارجی نیست اجرا کنید

# pacman -U /path/to/package/package_name-version.pkg.tar.zst

برای نگه داشتن یک کپی از یک بسته محلی در حافظه پنهان پک-من اجرا کنید

# pacman -U file:///path/to/package/package_name-version.pkg.tar.zst

برای نصف یک بسته خارجی که مخازن ان در فایل پیکربندی پک–من وجود ندارن

# pacman -U http://www.example.com/repo/example.pkg.tar.zst

دلیل نصب

چه اتفاقی می افتد در طول نصب بسته/ارتقا/حذف

پيکربندى

گزینه های عمومی

مقایسه نسخه ها قبل از به روز رسانی

دانلود های موازی

ممانعت از بروزرسانی یک بسته

ممانعت از بروزرسانی یک گروه بسته

ممانعت از بروزرسانی یک فایل

ممانعت از نصف یک فایل بر روی سیستم

چندین فایل پیکربندی را حفظ کنید

حفظ چندین پیکربندی

هوک ها

مخازن و آینه ها

دایرکتوری حافظه پنهان بسته

بسته امنیتی

عیب یابی