pacman (فارسی)

Related articles
Arch User Repository
Creating packages
Downgrading packages
namcap
FAQ#Package management
System maintenance
مدیریت کننده بسته
پک-من
یکی از ویژگی های تمایز اصلی ارچ لینوکس است.  که با ترکیب فرمت بسته باینری ساده  با  سیستم ساخت  ارچ  اسان برای استفاده ایجاد میکند.
هدف پک-من این است که مدیریت بسته ها را به راحتی امکانپذیر کند, چنان چه از مخازن رسمی باشند یا از ساختهای خود کاربر.
پک-من سیستم را با همگام سازی لیست بسته ها با سرور اصلی به روز نگه می دارد.این مدل سرور/کاربر همچنین به کاربر اجازه می دهد بسته ها را با یک دستور ساده دانلود/نصب کند, کامل با تمام نیازمندی های مورد نیاز.
پک-من در زبان برنامه نویسی سی نوشته شده است و استفاده می کند از
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/ ذخیره میکند  و نسخه های قدیمی یا حذف شده را به طور خودکار حذف نمی کند. این کار مزایایی دارد:
این اجازه میدهد تا یک بسته را بدون نیاز به بازیابی نسخه قبلی از طریق ابزارهای دیگر، مانند آرشیو آرچ لینوکس، داون گرید شود .
بسته ای که حذف شده است به راحتی می تواند به طور مستقیم از پوشه حافظه پنهان نصب شود، نیازی به دانلود جدید از مخزن نیست.
با این حال، لازم است که عمداً کش را به صورت دوره ای تمیز کنید تا از رشد حجم حافظه پنهان  به طور نامحدود جلوگیری شود.
اسکریپت
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
[
dead link
2025-11-17—HTTP 404]
دلیل نصب
چه اتفاقی می افتد در طول نصب بسته/ارتقا/حذف
پيکربندى
گزینه های عمومی
مقایسه نسخه ها قبل از به روز رسانی
دانلود های موازی
ممانعت از بروزرسانی یک بسته
ممانعت از بروزرسانی یک گروه بسته
ممانعت از بروزرسانی یک فایل
ممانعت از نصف یک فایل بر روی سیستم
چندین فایل پیکربندی را حفظ کنید
حفظ  چندین پیکربندی
هوک ها
مخازن و آینه ها
دایرکتوری حافظه پنهان بسته
بسته امنیتی
عیب یابی