| dpkg(1) | dpkg suite | dpkg(1) |
نام (NAME)
dpkg - ابزار مدیریت بسته دبیان
خلاصه دستور (SYNOPSIS)
dpkg [option...] command
هشدار (WARNING)
این راهنما برای کاربرانی در نظر گرفته شده است که مایلاند گزینههای خط فرمان و وضعیتهای بسته در dpkg را با جزئیاتی بیشتر از آنچه توسط dpkg --help ارائه میشود درک کنند.
این راهنما نباید توسط نگهدارندگان بسته که میخواهند بدانند dpkg چگونه بستههای آنها را نصب میکند استفاده شود. توضیحات مربوط به اینکه dpkg هنگام نصب و حذف بستهها چه کاری انجام میدهد بهطور ویژهای ناکافی است.
توضیحات (DESCRIPTION)
ابزار dpkg یک ابزار سطح متوسط برای نصب، ساخت، حذف و مدیریت بستههای دبیان است. پیشانه (front-end) اصلی و کاربرپسندتر برای dpkg به عنوان رابط خط فرمان (CLI) ابزار apt(8) و به عنوان رابط کاربری ترمینال (TUI) ابزار aptitude(8) است. خود dpkg بهطور کامل از طریق پارامترهای خط فرمان کنترل میشود، که دقیقاً شامل یک دستور و صفر یا چند گزینه است. پارامتر دستور به dpkg میگوید چه کاری انجام دهد و گزینهها رفتار دستور را به نوعی کنترل میکنند.
همچنین میتوان از dpkg به عنوان یک پیشانه برای dpkg-deb(1) و dpkg-query(1) استفاده کرد. فهرست دستورهای پشتیبانیشده را میتوان جلوتر در بخش COMMANDS یافت. اگر با چنین دستوری مواجه شود، dpkg تنها dpkg-deb یا dpkg-query را با پارامترهای ارائهشده به آن اجرا میکند، اما هیچ گزینه خاصی در حال حاضر به آنها منتقل نمیشود؛ برای استفاده از چنین گزینههایی، برنامههای پسانه (back-ends) باید مستقیماً فراخوانی شوند.
اطلاعات درباره بستهها (INFORMATION ABOUT PACKAGES)
ابزار dpkg اطلاعات مفیدی را درباره بستههای موجود نگهداری میکند. این اطلاعات به سه دسته تقسیم میشوند: states (وضعیتها)، selection states (وضعیتهای انتخاب) و flags (پرچمها). این مقادیر عمدتاً به منظور تغییر توسط dselect در نظر گرفته شدهاند.
وضعیتهای بسته (Package states)
- not-installed
- بسته روی سیستم شما نصب نیست.
- config-files
- تنها پروندههای پیکربندی یا اسکریپت postrm و دادههای مورد نیازش برای حذف بسته، بر روی سیستم وجود دارند.
- half-installed
- نصب بسته شروع شده است، اما بنا به دلایلی کامل نشده است.
- unpacked
- بسته از حالت فشرده خارج شده است، اما پیکربندی نشده است.
- half-configured
- بسته از حالت فشرده خارج شده و پیکربندی آن آغاز شده است، اما به دلایلی هنوز کامل نشده است.
- triggers-awaited
- بسته در انتظار پردازش محرک (trigger) توسط بستهای دیگر است.
- triggers-pending
- محرکهای بسته فعال شدهاند (بسته triggered شده است).
- installed
- بسته بهدرستی باز شده و پیکربندی شده است.
وضعیتهای انتخاب بسته (Package selection states)
- install
- بسته برای نصب انتخاب شده است.
- hold
- بستهای که به عنوان hold علامتگذاری شده باشد، در همان نسخه نگهداشته میشود، یعنی هیچ نصب، ارتقا یا حذف جدید خودکاری روی آنها انجام نخواهد شد، مگر اینکه این اقدامات بهطور صریح درخواست شوند، یا اجازه انجام خودکار آنها با گزینه --force-hold داده شده باشد.
- deinstall
- بسته برای حذف انتخاب شده است (یعنی میخواهیم همه پروندهها به جز پروندههای پیکربندی را حذف کنیم).
- purge
- بسته برای پاکسازی کامل انتخاب شده است (یعنی میخواهیم همه چیز، حتی پروندههای پیکربندی را از دایرکتوریهای سیستم حذف کنیم).
- unknown
- انتخاب بسته ناشناخته است. بستهای که همچنین در وضعیت not-installed باشد و دارای پرچم ok باشد، در ذخیره بعدی پایگاه داده به فراموشی سپرده خواهد شد (حذف میشود).
پرچمهای بسته (Package flags)
دستورها (COMMANDS)
- -i, --install package-file...
- بسته را نصب
میکند. اگر
گزینه --recursive
یا -R مشخص
شده باشد،
package-file باید در
عوض به یک
دایرکتوری
اشاره کند.
نصب شامل گامهای زیر است:
- 1.
- استخراج پروندههای کنترلی بسته جدید.
- 2.
- اگر نسخه دیگری از همان بسته پیش از نصب جدید نصب شده بود، اسکریپت prerm بسته قدیمی اجرا میشود.
- 3.
- اجرای اسکریپت preinst، در صورتی که توسط بسته ارائه شده باشد.
- 4.
- باز کردن پروندههای جدید از حالت فشرده و همزمان پشتیبانگیری از پروندههای قدیمی، تا در صورت بروز مشکل امکان بازگردانی آنها وجود داشته باشد.
- 5.
- اگر نسخه دیگری از همان بسته پیش از نصب جدید نصب شده بود، اسکریپت postrm بسته قدیمی اجرا میشود. توجه داشته باشید که این اسکریپت پس از اسکریپت preinst بسته جدید اجرا میشود، زیرا پروندههای جدید همزمان با حذف پروندههای قدیمی نوشته میشوند.
- 6.
- پیکربندی بسته. برای اطلاعات دقیق درباره چگونگی انجام این کار، --configure را ببینید.
- --unpack package-file...
- بسته را از
حالت فشرده
خارج
میکند،
اما آن را
پیکربندی
نمیکند.
اگر گزینه
--recursive یا -R
مشخص شده
باشد، package-file
باید در عوض
به یک
دایرکتوری
اشاره کند.
محرکها را برای Pre-Depends پردازش خواهد کرد مگر اینکه --no-triggers مشخص شده باشد.
- --configure package...|-a|--pending
- پیکربندی
بستهای که
از حالت
فشرده خارج
شده اما
هنوز
پیکربندی
نشده است.
اگر به جای
package گزینه -a
یا --pending داده
شود، تمام
بستههای
بازشده اما
پیکربندینشده،
پیکربندی
میشوند.
برای پیکربندی مجدد بستهای که پیشتر پیکربندی شده است، در عوض دستور dpkg-reconfigure(8) را امتحان کنید (که بخشی از پروژه debconf است).
پیکربندی شامل گامهای زیر است:
- 1.
- باز کردن conffileها از حالت فشرده و همزمان پشتیبانگیری از conffileهای قدیمی، تا در صورت بروز مشکل امکان بازگردانی آنها وجود داشته باشد.
- 2.
- اجرای اسکریپت postinst، در صورتی که توسط بسته ارائه شده باشد.
محرکها پردازش خواهند شد مگر اینکه --no-triggers مشخص شده باشد.
- --triggers-only package...|-a|--pending
- فقط محرکها را پردازش میکند (از نسخه dpkg 1.14.17). تمام محرکهای معلق پردازش خواهند شد. اگر نامهای بسته ارائه شده باشند، فقط محرکهای همان بستهها پردازش خواهند شد، دقیقاً یکبار برای هر کدام در صورت لزوم. استفاده از این گزینه ممکن است بستهها را در وضعیتهای نامناسب triggers-awaited و triggers-pending قرار دهد. این مورد را میتوان بعداً با اجرای این دستور برطرف کرد: dpkg --configure --pending.
- -r, --remove package...|-a|--pending
- حذف یک بسته
نصبشده.
این دستور
همه چیز را
به جز conffileها و
سایر
دادههای
پاکسازیشده
توسط
اسکریپت postrm
حذف
میکند؛
این امر
ممکن است از
لزوم
پیکربندی
مجدد بسته
در صورت نصب
مجدد بعدی
جلوگیری
کند (conffileها
پروندههای
پیکربندی
هستند که در
پرونده
کنترلی DEBIAN/conffiles
فهرست
شدهاند).
اگر نه
پرونده
کنترلی DEBIAN/conffiles
و نه
اسکریپت
DEBIAN/postrm وجود
داشته
باشد، این
دستور
معادل
فراخوانی
--purge است. اگر
به جای نام
بسته،
گزینه -a یا
--pending داده
شود،
آنگاه همه
بستههایی
که باز
شدهاند،
اما در
پرونده
/var/lib/dpkg/status برای
حذف علامت
خوردهاند،
حذف
میشوند.
حذف یک بسته شامل گامهای زیر است:
- 1.
- اجرای اسکریپت prerm.
- 2.
- حذف پروندههای نصبشده.
- 3.
- اجرای اسکریپت postrm.
محرکها پردازش خواهند شد مگر اینکه --no-triggers مشخص شده باشد.
- -P, --purge package...|-a|--pending
- پاکسازی
کامل یک
بسته
نصبشده یا
از قبل
حذفشده.
این دستور
همه چیز را
حذف
میکند، از
جمله conffileها و
هر چیز
دیگری که
توسط postrm
پاکسازی
شده است.
اگر به جای
نام بسته،
گزینه -a یا
--pending داده
شود،
آنگاه همه
بستههایی
که باز یا
حذف
شدهاند،
اما در
پرونده
/var/lib/dpkg/status برای
پاکسازی
علامت
خوردهاند،
پاکسازی
میشوند.
نکته: ممکن است برخی پروندههای پیکربندی برای dpkg ناشناخته باشند زیرا بهطور جداگانه از طریق اسکریپتهای پیکربندی ایجاد و مدیریت میشوند. در آن صورت، dpkg آنها را به خودی خود حذف نخواهد کرد، اما اسکریپت postrm بسته (که توسط dpkg فراخوانی میشود)، باید هنگام پاکسازی کامل مسئولیت حذف آنها را بر عهده بگیرد. البته این موضوع فقط برای پروندههای موجود در دایرکتوریهای سیستم صدق میکند، نه پروندههای پیکربندی نوشتهشده در دایرکتوریهای خانگی تکتک کاربران.
پاکسازی کامل یک بسته شامل گامهای زیر است:
- 1.
- حذف بسته، در صورتی که پیشتر حذف نشده باشد. برای اطلاعات دقیق درباره نحوه انجام این کار، --remove را ببینید.
- 2.
- اجرای اسکریپت postrm.
محرکها پردازش خواهند شد مگر اینکه --no-triggers مشخص شده باشد.
- -V, --verify [package-name...]
- صحت و
یکپارچگی
package-name یا در
صورت عدم
ذکر، همه
بستهها را
با مقایسه
اطلاعات
پروندههای
نصبشده
توسط یک
بسته با
اطلاعات
فراداده
پروندههای
ذخیرهشده
در پایگاه
داده dpkg
بررسی
میکند (از
نسخه dpkg 1.17.2).
منشأ
اطلاعات
فراداده
پروندهها
در پایگاه
داده، خود
بستههای
باینری
هستند. این
فراداده در
زمان باز
کردن بسته
در طول
فرآیند نصب
جمعآوری
میشود.
در حال حاضر تنها بررسی عملکردی انجامشده، تأیید md5sum محتوای پرونده در برابر مقدار ذخیرهشده در پایگاه داده پروندهها است. این مورد تنها زمانی بررسی خواهد شد که پایگاه داده شامل md5sum پرونده باشد. برای بررسی هرگونه فراداده گمشده در پایگاه داده، میتوان از دستور --audit استفاده کرد. این فقط یک بررسی یکپارچگی است و نباید به عنوان هیچ نوع تأییدیه امنیتی در نظر گرفته شود.
قالب خروجی با گزینه --verify-format قابل انتخاب است که بهطور پیشفرض از قالب rpm استفاده میکند، اما ممکن است در آینده تغییر کند و از این رو، برنامههایی که خروجی این دستور را تجزیه میکنند باید قالبی را که انتظار دارند بهطور صریح مشخص نمایند.
- -C, --audit [package-name...]
- بررسیهای سلامت و سازگاری پایگاه داده را برای package-name یا در صورت عدم ذکر برای همه بستهها انجام میدهد (بررسی به ازای هر بسته از نسخه dpkg 1.17.10). برای نمونه، به دنبال بستههایی میگردد که تنها بهطور ناقص روی سیستم شما نصب شدهاند یا دادهها یا پروندههای کنترلی مفقود، نادرست یا منسوخ دارند. ابزار dpkg پیشنهاد خواهد کرد که برای برطرف کردن آنها چه باید کرد.
- --update-avail [Packages-file]
- --merge-avail [Packages-file]
- اطلاعات dpkg
و dselect را
درباره
اینکه چه
بستههایی
در دسترس
هستند
بهروزرسانی
میکند. با
دستور --merge-avail،
اطلاعات
قدیمی با
اطلاعات
حاصل از Packages-file
ترکیب
میشوند. با
دستور --update-avail،
اطلاعات
قدیمی با
اطلاعات
موجود در
Packages-file
جایگزین
میشوند.
پرونده Packages-file
توزیعشده
به همراه
دبیان
صرفاً «Packages»
نامیده
میشود. اگر
آرگومان
Packages-file مشخص
نشده باشد
یا نام آن
«-» باشد،
از ورودی
استاندارد
خوانده
خواهد شد
(از نسخه dpkg 1.17.7).
ابزار dpkg
سوابق
بستههای
در دسترس را
در /var/lib/dpkg/available
نگهداری
میکند.
یک دستور تکمرحلهای سادهتر برای دریافت و بهروزرسانی پرونده available، دستور dselect update است. توجه داشته باشید که این پرونده تا حد زیادی بیاستفاده است اگر از dselect استفاده نمیکنید بلکه از یک پیشانه مبتنی بر APT بهره میبرید: زیرا APT سیستم اختصاصی خود را برای پیگیری بستههای در دسترس دارد.
- -A, --record-avail package-file...
- اطلاعات dpkg و dselect را درباره اینکه چه بستههایی در دسترس هستند با اطلاعات حاصل از بسته package-file بهروزرسانی میکند. اگر گزینه --recursive یا -R مشخص شده باشد، package-file باید در عوض به یک دایرکتوری اشاره کند.
- --forget-old-unavail
- اکنون منسوخ و بدون عملیات (no-op) است زیرا dpkg بهطور خودکار بستههای نصبنشده و غیرقابل دسترس را فراموش میکند (از نسخه dpkg 1.15.4)، اما فقط آنهایی را که حاوی اطلاعات کاربری مانند انتخابهای بسته نیستند.
- --clear-avail
- اطلاعات موجود درباره اینکه چه بستههایی در دسترس هستند را پاک میکند.
- --get-selections [package-name-pattern...]
- فهرست گزینشهای بستهها را دریافت کرده و آن را در خروجی استاندارد (stdout) مینویسد. بدون یک الگو، بستههای نصبنشده (یعنی بستههایی که پیشتر بهطور کامل پاکسازی [purged] شدهاند) نمایش داده نخواهند شد.
- --set-selections
- گزینشهای
بستهها را
با استفاده
از پرونده
خواندهشده
از ورودی
استاندارد
(stdin) تنظیم
میکند. این
پرونده
باید به
قالب “package
state” باشد که
در آن state یکی
از install، hold،
deinstall یا purge است.
خطوط خالی و
خطوط
توضیحی که
با ‘#’ آغاز
میشوند
نیز مجاز
هستند.
برای سودمند بودن این دستور، پرونده available باید بهروز باشد، در غیر این صورت بستههای ناشناخته با نمایش یک هشدار نادیده گرفته خواهند شد. برای اطلاعات بیشتر، دستورهای --update-avail و --merge-avail را ببینید.
- --clear-selections
- وضعیت درخواستی هر بسته غیرضروری (non-essential) را روی deinstall تنظیم میکند (از نسخه dpkg 1.13.18 به بعد). این گزینه برای استفاده بلافاصله پیش از --set-selections در نظر گرفته شده است، تا هر بستهای که در فهرست ارائهشده به --set-selections قرار ندارد، deinstall شود.
- --yet-to-unpack
- بستههایی
را که برای
نصب گزینش
شدهاند،
اما بنا به
دلایلی
هنوز نصب
نشدهاند،
جستجو
میکند.
نکته: این دستور هم از پرونده available و هم از گزینشهای بسته استفاده میکند.
- --predep-package
- یک بسته
منفرد را
چاپ میکند
که هدف یک
یا چند
پیشوابستگی
(pre-dependency) مرتبط
است و خودش
هیچ
پیشوابستگی
برآوردهنشدهای
ندارد.
اگر چنین بستهای وجود داشته باشد، آن را بهصورت یک مدخل پرونده Packages خروجی میدهد که میتوان آن را بر حسب نیاز به شکل مناسب تغییر داد.
نکته: این دستور هم از پرونده available و هم از گزینشهای بسته استفاده میکند.
در صورت چاپ یک بسته مقدار 0، در صورت نبود بسته مناسب مقدار 1، و در هنگام خطا مقدار 2 را برمیگرداند.
- --add-architecture architecture
- معماری architecture را به فهرست معماریهایی که میتوان بستهها را بدون استفاده از --force-architecture برای آنها نصب کرد میافزاید (از نسخه dpkg 1.16.2 به بعد). معماریای که dpkg برای آن ساخته شده است (یعنی خروجی --print-architecture) همواره بخشی از آن فهرست است.
- --remove-architecture architecture
- معماری architecture را از فهرست معماریهایی که بستهها میتوانند بدون استفاده از --force-architecture برای آنها نصب شوند حذف میکند (از نسخه dpkg 1.16.2 به بعد). اگر این معماری در حال حاضر در پایگاه داده مورد استفاده باشد، عملیات رد خواهد شد، مگر اینکه --force-architecture تعیین شده باشد. معماریای که dpkg برای آن ساخته شده است (یعنی خروجی --print-architecture) هرگز نمیتواند از این فهرست حذف شود.
- --print-architecture
- معماری بستههایی را که dpkg نصب میکند چاپ میکند (برای نمونه، “i386”).
- --print-foreign-architectures
- فهرستی جداشده با خط جدید از معماریهای خارجی (اضافی) را که dpkg پیکربندی شده است تا امکان نصب بستهها را برای آنها فراهم کند، چاپ میکند (از نسخه dpkg 1.16.2 به بعد).
- --assert-help
- راهنمایی درباره گزینههای --assert-feature ارائه میدهد (از نسخه dpkg 1.21.0 به بعد).
- --assert-feature
- پشتیبانی dpkg از ویژگی درخواستی را ادعا و بررسی میکند. اگر ویژگی به طور کامل پشتیبانی شود مقدار 0، اگر ویژگی شناختهشده باشد اما dpkg هنوز قادر به پشتیبانی از آن نباشد مقدار 1، و اگر ویژگی ناشناخته باشد مقدار 2 را برمیگرداند. فهرست کنونی ویژگیهای قابلبررسی (assertable) عبارت است از:
- support-predepends
- پشتیبانی از فیلد Pre-Depends (از نسخه dpkg 1.1.0 به بعد).
- working-epoch
- پشتیبانی از epoch در رشتههای نسخه (از نسخه dpkg 1.4.0.7 به بعد).
- long-filenames
- پشتیبانی از نامهای پرونده طولانی در بایگانیهای deb(5) (از نسخه dpkg 1.4.1.17 به بعد).
- multi-conrep
- پشتیبانی از چندین Conflicts و Replaces (از نسخه dpkg 1.4.1.19 به بعد).
- multi-arch
- پشتیبانی از فیلدها و معانی چندمعماری (multi-arch) (از نسخه dpkg 1.16.2 به بعد).
- versioned-provides
- پشتیبانی از Provides نسخهدار (از نسخه dpkg 1.17.11 به بعد).
- protected-field
- پشتیبانی از فیلد Protected (از نسخه dpkg 1.20.1 به بعد).
- --validate-thing string
- درست بودن نحو string مربوط به thing را اعتبارسنجی میکند (از نسخه dpkg 1.18.16 به بعد). اگر string معتبر باشد 0، اگر string نامعتبر باشد اما ممکن است در بسترهای منعطف پذیرفته شود 1، و اگر string نامعتبر باشد 2 را برمیگرداند. فهرست کنونی موارد قابل اعتبارسنجی (thingها) عبارت است از:
- pkgname
- نام بسته دادهشده را اعتبارسنجی میکند (از نسخه dpkg 1.18.16 به بعد).
- trigname
- نام تریگر دادهشده را اعتبارسنجی میکند (از نسخه dpkg 1.18.16 به بعد).
- archname
- نام معماری دادهشده را اعتبارسنجی میکند (از نسخه dpkg 1.18.16 به بعد).
- version
- نسخه دادهشده را اعتبارسنجی میکند (از نسخه dpkg 1.18.16 به بعد).
- --compare-versions ver1 op ver2
- شمارههای نسخه را مقایسه میکند، که در آن op یک عملگر باینری (دودویی) است. dpkg در صورتی که شرط مشخصشده برقرار باشد مقدار درست (0)، و در غیر این صورت مقدار نادرست (1) را بازمیگرداند. دو گروه از عملگرها وجود دارند که در نحوه برخورد با خالی بودن ver1 یا ver2 با یکدیگر تفاوت دارند. این موارد نسخه خالی را قدیمیتر از هر نسخهای در نظر میگیرند: lt le eq ne ge gt. این موارد نسخه خالی را جدیدتر از هر نسخهای در نظر میگیرند: lt-nl le-nl ge-nl gt-nl. این موارد صرفاً برای سازگاری با نحو پرونده کنترل ارائه شدهاند: < << <= = >= >> >. عملگرهای < و > منسوخ شدهاند و به دلیل معانی گیجکننده نباید استفاده شوند. برای نمونه: 0.1 < 0.1 به درست (true) ارزیابی میشود.
- -?, --help
- نمایش یک پیام راهنمای کوتاه.
- --force-help
- ارائه راهنمایی درباره گزینههای --force-thing.
- -Dh, --debug=help
- ارائه راهنمایی درباره گزینههای اشکالزدایی.
- --version
- نمایش
اطلاعات
نسخه dpkg.
هنگام استفاده به همراه --robot، خروجی شماره نسخه برنامه به قالب عددی نقطهدار، بدون خط جدید خواهد بود.
- dpkg-deb commands
- برای اطلاعات بیشتر درباره دستورهای زیر و سایر دستورها و گزینههایی که توسط بخش پیشین dpkg در دسترس قرار نگرفتهاند، dpkg-deb(1) را ببینید.
- -b, --build directory [archive|directory]
- ساخت یک بسته deb.
- -c, --contents archive
- فهرست کردن محتویات یک بسته deb.
- -e, --control archive [directory]
- استخراج اطلاعات کنترلی از یک بسته.
- -x, --extract archive directory
- استخراج پروندههای موجود در بسته.
- -X, --vextract archive directory
- استخراج و نمایش نام پروندههای موجود در یک بسته.
- -f, --field archive [control-field...]
- نمایش فیلد(های) کنترلی یک بسته.
- --ctrl-tarfile archive
- خروجی دادن پرونده tar کنترلی موجود در یک بسته دبیان.
- --fsys-tarfile archive
- خروجی دادن پرونده tar سیستمپرونده موجود در یک بسته دبیان.
- -I, --info archive [control-file...]
- نمایش اطلاعات درباره یک بسته.
- dpkg-query commands
- برای اطلاعات بیشتر درباره دستورهای زیر و سایر دستورها و گزینههایی که توسط بخش پیشین dpkg در دسترس قرار نگرفتهاند، dpkg-query(1) را ببینید.
- -l, --list package-name-pattern...
- فهرست کردن بستههای منطبق بر الگوی دادهشده.
- -s, --status package-name...
- گزارش وضعیت بسته مشخصشده.
- -L, --listfiles package-name...
- فهرست کردن پروندههای نصبشده روی سیستم شما از package-name.
- -S, --search filename-search-pattern...
- جستجوی یک نام پرونده در میان بستههای نصبشده.
- -p, --print-avail package-name...
- نمایش جزئیات درباره package-name، همانطور که در /var/lib/dpkg/available یافت میشود. کاربران رابطهای کاربری مبتنی بر APT باید در عوض از apt show package-name استفاده کنند.
گزینهها (OPTIONS)
تمامی گزینهها را میتوان هم در خط فرمان و هم در فایل پیکربندی dpkg به نشانی /etc/dpkg/dpkg.cfg یا فایلهای تکهای (با نامهایی مطابق با الگوی شل '[0-9a-zA-Z_-]*') در دایرکتوری پیکربندی /etc/dpkg/dpkg.cfg.d/ مشخص کرد. هر خط در فایل پیکربندی یا یک گزینه است (دقیقاً همانند گزینه خط فرمان اما بدون خطتیرههای ابتدایی) یا یک یادداشت/توضیح (اگر با ‘#’ شروع شود).
- --abort-after=number
- تغییر تعداد خطاهایی که پس از آن dpkg متوقف خواهد شد. مقدار پیشفرض 50 است.
- -B, --auto-deconfigure
- هنگامی که بستهای حذف میشود، این احتمال وجود دارد که بستهٔ نصبشدهٔ دیگری به بستهٔ حذفشده وابسته باشد. مشخص کردن این گزینه موجب غیرپیکربندی خودکار بستهای میشود که به بستهٔ حذفشده وابسته بوده است.
- -Doctal, --debug=octal
- روشن کردن
اشکالزدایی.
octal با انجام
عملیات
بیتی OR بر
روی مقادیر
دلخواه از
فهرست زیر
تشکیل
میشود
(توجه داشته
باشید که
این مقادیر
ممکن است در
نسخههای
بعدی تغییر
کنند). -Dh یا
--debug=help این
مقادیر
اشکالزدایی
را نمایش
میدهند.
Number Description 1 Generally helpful progress information 2 Invocation and status of maintainer scripts 10 Output for each file processed 100 Lots of output for each file processed 20 Output for each configuration file 200 Lots of output for each configuration file 40 Dependencies and conflicts 400 Lots of dependencies/conflicts output 10000 Trigger activation and processing 20000 Lots of output regarding triggers 40000 Silly amounts of output regarding triggers 1000 Lots of drivel about for example the dpkg/info dir 2000 Insane amounts of drivel - --force-things
- --no-force-things, --refuse-things
- اجبار یا
خودداری از
(no-force و refuse به یک
معنا هستند)
انجام برخی
کارها. things
فهرستی از
موارد
مشخصشده
در زیر است
که با کاما
از هم جدا
شدهاند.
--force-help پیامی
را در شرح
آنها
نمایش
میدهد.
مواردی که
با علامت (*)
مشخص
شدهاند،
بهطور
پیشفرض
اجبار
میشوند.
هشدار: این گزینهها عمدتاً تنها برای استفاده متخصصان در نظر گرفته شدهاند. استفاده از آنها بدون درک کامل اثراتشان ممکن است کل سیستم شما را از کار بیندازد.
- all:
- تمامی گزینههای اجبار را فعال (یا غیرفعال) میکند.
- downgrade(*):
- نصب یک
بسته، حتی
اگر نسخهٔ
جدیدتری از
آن
هماکنون
نصب شده
باشد.
هشدار: در حال حاضر dpkg هیچگونه بررسی وابستگی در زمان پسرفت نسخه (downgrade) انجام نمیدهد و بنابراین اگر پسرفت نسخه وابستگی بسته دیگری را بشکند، به شما هشدار نخواهد داد. این کار میتواند اثرات جانبی جدی به همراه داشته باشد؛ تنزل نسخه مؤلفههای حیاتی سیستم حتی میتواند کل سیستم شما را غیرقابلاستفاده کند. با احتیاط استفاده کنید.
- configure-any:
- پیکربندی هر بستهٔ از بستهبندی خارجشده اما پیکربندینشدهای که بستهٔ فعلی به آن وابسته است.
- hold:
- اجازه دادن به نصب، ارتقا یا حذف خودکار بستهها حتی زمانی که در وضعیت “hold” علامتگذاری شده باشند. توجه: هنگامی که این اقدامات به طور صریح درخواست شوند، وضعیت انتخاب بسته در حالت “hold” همواره نادیده گرفته میشود.
- remove-reinstreq:
- حذف یک بسته، حتی اگر شکسته باشد و به عنوان نیازمند نصب مجدد علامتگذاری شده باشد. این کار برای مثال ممکن است باعث شود بخشهایی از بسته روی سیستم باقی بماند که پس از آن توسط dpkg فراموش خواهد شد.
- remove-protected:
- حذف بسته، حتی اگر محافظتشده تلقی شود (از زمان dpkg 1.20.1). بستههای محافظتشده عمدتاً شامل زیرساختهای مهم راهاندازی سیستم هستند یا برای فرابستههای سفارشی محلی سیستم (system-local meta-packages) استفاده میشوند. حذف آنها ممکن است باعث شود کل سیستم قادر به راهاندازی (بوت) نباشد یا عملکردهای ضروری برای کارکرد را از دست بدهد، بنابراین با احتیاط استفاده کنید.
- remove-essential:
- حذف بسته، حتی اگر بسته حیاتی (essential) تلقی شود. بستههای حیاتی عمدتاً شامل دستورات بسیار پایهای یونیکس هستند که برای سیستم بستهبندی، کارکرد عمومی سیستم یا در حین بوت مورد نیازند (اگرچه مورد آخر باید به بستههای محافظتشده تبدیل شود). حذف آنها ممکن است باعث از کار افتادن کل سیستم شود، بنابراین با احتیاط استفاده کنید.
- depends:
- تبدیل تمام مشکلات وابستگی به هشدار. این گزینه بر فیلدهای Pre-Depends و Depends تأثیر میگذارد.
- depends-version:
- صرفنظر کردن از نسخهها هنگام بررسی وابستگیها. این گزینه بر فیلدهای Pre-Depends و Depends تأثیر میگذارد.
- breaks:
- نصب، حتی اگر این کار بستهٔ دیگری را بشکند (از زمان dpkg 1.14.6). این گزینه بر فیلد Breaks تأثیر میگذارد.
- conflicts:
- نصب، حتی اگر با بسته دیگری تعارض داشته باشد. این کار خطرناک است، زیرا معمولاً باعث بازنویسی برخی از فایلها میشود. این گزینه بر فیلد Conflicts تأثیر میگذارد.
- confmiss:
- نصب همیشگی فایل پیکربندی (conffile) مفقودشده بدون درخواست تأیید. این کار خطرناک است، زیرا به معنای حفظ نکردن تغییر اعمالشده روی فایل (حذف آن) است.
- confnew:
- اگر یک فایل پیکربندی (conffile) تغییر یافته باشد و نسخهٔ موجود در بسته نیز تغییر کرده باشد، همیشه نسخه جدید را بدون اعلان نصب کند، مگر آنکه --force-confdef نیز مشخص شده باشد که در این صورت اقدام پیشفرض ترجیح داده میشود.
- confold:
- اگر یک فایل پیکربندی (conffile) تغییر یافته باشد و نسخهٔ موجود در بسته نیز تغییر کرده باشد، همیشه نسخه قدیمی را بدون اعلان نگه دارد، مگر آنکه --force-confdef نیز مشخص شده باشد که در این صورت اقدام پیشفرض ترجیح داده میشود.
- confdef:
- اگر یک فایل پیکربندی (conffile) تغییر یافته باشد و نسخهٔ موجود در بسته نیز تغییر کرده باشد، همیشه اقدام پیشفرض را بدون اعلان انتخاب کند. اگر اقدام پیشفرضی وجود نداشته باشد، متوقف میشود تا از کاربر بپرسد، مگر اینکه --force-confnew یا --force-confold نیز مشخص شده باشد که در این صورت از آن برای تصمیمگیری در مورد اقدام نهایی استفاده خواهد کرد.
- confask:
- اگر یک فایل پیکربندی (conffile) تغییر یافته باشد، همیشه جایگزینی آن با نسخهٔ موجود در بسته را پیشنهاد دهد، حتی اگر نسخهٔ درون بسته تغییری نکرده باشد (از زمان dpkg 1.15.8). اگر هر یک از گزینههای --force-confnew، --force-confold یا --force-confdef نیز داده شده باشد، از آن برای تصمیمگیری اقدام نهایی استفاده خواهد شد.
- overwrite:
- بازنویسی فایل یک بسته با فایل بسته دیگر.
- overwrite-dir:
- بازنویسی دایرکتوری یک بسته با فایل بسته دیگر.
- overwrite-diverted:
- بازنویسی یک فایل منحرفشده (diverted) با یک نسخه منحرفنشده.
- statoverride-add:
- بازنویسی یک stat override موجود هنگام افزودن آن (از زمان dpkg 1.19.5).
- statoverride-remove:
- نادیده گرفتن نبودِ یک stat override هنگام حذف آن (از زمان dpkg 1.19.5).
- security-mac(*):
- استفاده از امنیت مبتنی بر کنترلهای دسترسی اجباری (MAC) ویژه پلتفرم هنگام نصب فایلها در سیستمفایل (از زمان dpkg 1.19.5). در سیستمهای لینوکس، این پیادهسازی از SELinux استفاده میکند.
- unsafe-io:
- عدم انجام
عملیات I/O
ایمن هنگام
باز کردن
بستهها (از
زمان dpkg 1.15.8.6). در
حال حاضر
این امر به
معنای عدم
انجام
همگامسازیهای
سیستمفایل
(sync) پیش از
تغییر نام
فایلها
است؛
موضوعی که
مشخص شده در
برخی
سیستمهای
فایل باعث
افت محسوس
کارایی
میشود،
متأسفانه
همانهایی
که در وهله
اول به دلیل
رفتار
غیرقابلاعتمادشان
در ایجاد
فایلهای
با طول صفر
هنگام
فروپاشی
ناگهانی
سیستم،
نیازمند I/O
ایمن هستند.
یادداشت: برای ext4، که مقصر اصلی است، در عوض استفاده از گزینه اتصال nodelalloc را مد نظر قرار دهید؛ این گزینه هم افت کارایی و هم مسائل ایمنی دادهها را برطرف میکند؛ دومی با جلوگیری از ایجاد فایلهای با طول صفر توسط سیستمفایل در هنگام فروپاشی ناگهانی سیستم توسط هر نرمافزاری که پیش از تغییر نامهای اتمیک عملیات sync را انجام نمیدهد.
هشدار: استفاده از این گزینه ممکن است کارایی را به قیمت از دست رفتن دادهها بهبود بخشد، با احتیاط استفاده کنید.
- script-chrootless:
- اجرای
اسکریپتهای
نگهدارنده
بدون عمل chroot(2)
در instdir حتی
اگر بسته از
این شیوه
عملیاتی
پشتیبانی
نکند (از
زمان dpkg 1.18.5).
هشدار: این کار میتواند سیستم میزبان شما را نابود کند، با احتیاط بسیار بالا استفاده کنید.
- architecture:
- پردازش بستهها حتی با معماری نادرست یا بدون معماری.
- bad-version:
- پردازش بستهها حتی با نسخههای نادرست (از زمان dpkg 1.16.1).
- bad-path:
- برنامههای مهم در PATH مفقود هستند، بنابراین احتمال بروز مشکل زیاد است.
- not-root:
- تلاش برای نصب یا حذف موارد حتی بدون دسترسی ریشه (root).
- bad-verify:
- نصب یک بسته حتی در صورت مردود شدن در بررسی اصالتسنجی.
- --ignore-depends=package,...
- صرفنظر کردن از بررسی وابستگیها برای بستههای مشخصشده (در واقع، بررسی انجام میشود، اما فقط هشدارهایی پیرامون تعارضها ارائه میگردد و نه چیز دیگری). این گزینه بر فیلدهای Pre-Depends، Depends و Breaks تأثیر میگذارد.
- --no-act, --dry-run, --simulate
- تمام
کارهایی را
که قرار است
انجام شوند
انجام
میدهد،
اما هیچ
تغییری را
ثبت
نمیکند.
این گزینه
برای
مشاهده
آنچه با
دستور
مشخصشده
رخ خواهد
داد، بدون
تغییر
واقعی هر
چیزی، به
کار میرود.
حتماً --no-act را پیش از پارامتر دستور قرار دهید، در غیر این صورت ممکن است با نتایج نامطلوبی مواجه شوید (برای نمونه، dpkg --purge foo --no-act ابتدا بسته “foo” را پاکسازی میکند و سپس تلاش میکند بسته ”--no-act” را پاکسازی کند، با وجود اینکه احتمالاً انتظار داشتید در عمل کاری انجام ندهد).
- -R, --recursive
- بهطور بازگشتی تمام پروندههای عادی منطبق با الگوی *.deb موجود در پوشههای مشخصشده و همه زیرپوشههای آنها را پردازش میکند. این گزینه میتواند با دستورهای -i، -A، --install، --unpack و --record-avail استفاده شود.
- -G
- اگر نسخه جدیدتری از همان بسته قبلاً نصب شده باشد، بسته را نصب نمیکند. این یک نام مستعار برای --refuse-downgrade است.
- --admindir=directory
- پوشه مدیریتی را روی directory تنظیم میکند. این پوشه شامل پروندههای بسیاری است که اطلاعاتی درباره وضعیت بستههای نصبشده یا حذفشده و غیره ارائه میدهند. در صورتی که DPKG_ADMINDIR تنظیم نشده باشد، مقدار پیشفرض «/var/lib/dpkg» است.
- --instdir=directory
- پوشه نصب را تنظیم میکند، که اشاره به پوشهای دارد که قرار است بستهها در آن نصب شوند. instdir همچنین پوشهای است که قبل از اجرای اسکریپتهای نصب بسته به chroot(2) داده میشود، که بدان معناست که اسکریپتها instdir را به عنوان پوشه ریشه میبینند. در صورتی که DPKG_ROOT تنظیم نشده باشد، مقدار پیشفرض «/» است (از dpkg 1.21.10).
- --root=directory
- پوشه ریشه را روی directory تنظیم میکند، که در صورت تنظیم نبودن DPKG_ROOT، پوشه نصب را روی «directory» و پوشه مدیریتی را روی «directory/var/lib/dpkg» قرار میدهد (از dpkg 1.21.10).
- -O, --selected-only
- تنها بستههایی را که برای نصب انتخاب شدهاند پردازش میکند. علامتگذاری واقعی با dselect یا توسط dpkg هنگام کار با بستهها انجام میشود. برای نمونه، هنگامی که بستهای حذف میشود، به عنوان انتخابشده برای حذف علامتگذاری خواهد شد.
- -E, --skip-same-version
- اگر همان
نسخه و
معماری از
بسته قبلاً
نصب شده
باشد، بسته
را نصب
نمیکند.
از dpkg 1.21.10 به بعد، معماری نیز در نظر گرفته میشود، که امکان تبدیل معماری (cross-grade) بستهها یا نصب نمونههای همنصبپذیر اضافی با همان نسخه ولی معماری متفاوت را ممکن میسازد.
- --pre-invoke=command
- --post-invoke=command
- یک دستور
قلاب
فراخوانی
command را تنظیم
میکند تا
از طریق “sh -c”
قبل یا بعد
از اجرای dpkg
برای
عملیاتهای
unpack، configure، install،
triggers-only، remove و purge
(از dpkg 1.15.4)، و
عملیاتهای
add-architecture و remove-architecture
(از dpkg 1.17.19) اجرا
شود. این
گزینه
میتواند
چندین بار
مشخص شود.
ترتیب مشخص
شدن
گزینهها
حفظ میشود
و
گزینههای
موجود در
پروندههای
پیکربندی
اولویت
دارند.
متغیر
محیطی DPKG_HOOK_ACTION
برای
قلابها
روی عملیات
فعلی dpkg
تنظیم
میشود.
قلابهای فراخوانی در صورت مشخص شدن --no-act، یا هنگام اجرا به عنوان کاربر غیرریشه بدون --force-not-root اجرا نمیشوند.
توجه: رابطهای کاربری (Front-ends) ممکن است در هر بار فراخوانی چندین بار dpkg را صدا بزنند، که ممکن است باعث شود قلابها بیشتر از دفعات مورد انتظار اجرا شوند.
- --path-exclude=glob-pattern
- --path-include=glob-pattern
- الگوی glob-pattern
را به عنوان
فیلتر مسیر
تنظیم
میکند، چه
با مستثنی
کردن یا
گنجاندن
مجدد
مسیرهای
قبلاً
مستثنیشده
منطبق با
الگوهای
مشخصشده
در طول نصب
(از dpkg 1.15.8).
هشدار: در نظر داشته باشید که بسته به مسیرهای مستثنیشده ممکن است سیستم خود را کاملاً از کار بیندازید، با احتیاط استفاده کنید.
الگوهای glob از همان نویسههای عام مورد استفاده در پوسته استفاده میکنند، که در آن ‘*’ با هر توالی از نویسهها، شامل رشته خالی و همچنین ‘/’ مطابقت دارد. برای نمونه، «/usr/*/READ*» با «/usr/share/doc/package/README» مطابقت دارد. طبق معمول، ‘?’ با هر تکنویسه (باز هم شامل ‘/’) مطابقت دارد. و ‘[’ یک رده نویسهای را آغاز میکند که میتواند شامل فهرستی از نویسهها، محدودهها و متممها باشد. برای اطلاعات تفصیلی درباره الگوهای globbing، glob(7) را ببینید. توجه: پیادهسازی فعلی ممکن است پوشهها و پیوندهای نمادین بیشتری را نسبت به آنچه لازم است مجدداً بگنجاند، بهویژه هنگامی که یک گنجاندن مجدد خاصتر وجود دارد، تا احتیاط رعایت شده و از شکستهای احتمالی در باز کردن بسته جلوگیری شود؛ کارهای آینده ممکن است این مورد را اصلاح کنند.
این گزینه میتواند برای حذف همه مسیرها به جز برخی مسیرهای خاص استفاده شود؛ یک مورد متداول عبارت است از:
--path-exclude=/usr/share/doc/* --path-include=/usr/share/doc/*/copyright
برای حذف همه پروندههای مستندات به جز پروندههای حق نشر (copyright).
این دو گزینه میتوانند چندین بار مشخص شده و به صورت متناوب با یکدیگر ترکیب شوند. هر دو بر اساس ترتیب دادهشده پردازش میشوند، و آخرین قانونی که با نام پرونده مطابقت داشته باشد تصمیم نهایی را میگیرد.
این فیلترها هنگام باز کردن بستههای باینری اعمال میشوند، و به همین دلیل تنها از نوع شیء در حال فیلتر شدن (برای نمونه یک پرونده عادی یا یک پوشه) آگاهی دارند و هیچ دیدی نسبت به اینکه چه اشیائی در ادامه خواهند آمد ندارند. از آنجا که این فیلترها عوارض جانبی دارند (برخلاف فیلترهای find(1))، مستثنی کردن یک نام مسیر دقیق که از قضا یک شیء پوشه است مانند /usr/share/doc نتیجه مطلوب را به همراه نخواهد داشت، و فقط همان نام مسیر مستثنی خواهد شد (که در صورت تشخیص نیاز توسط کد، ممکن است به طور خودکار مجدداً گنجانده شود). باز کردن هر پرونده بعدی موجود در آن پوشه با شکست مواجه خواهد شد.
راهنمایی: اطمینان حاصل کنید که الگوهای glob توسط پوسته شما بسط داده نشوند.
- --verify-format format-name
- قالب خروجی
را برای
دستور --verify
تنظیم
میکند (از dpkg
1.17.2).
تنها قالب خروجی که در حال حاضر پشتیبانی میشود rpm است، که از یک خط برای هر مسیری که در هر آزمونی شکست خورده تشکیل شده است. این خطوط قالب زیر را دارند:
missing [c] pathname [(error-message)]
?M5?????? [c] pathname۹ نویسه اول برای گزارش نتیجه بررسیها استفاده میشوند، چه عبارت لفظی missing هنگامی که پرونده وجود ندارد یا فرا دادههای آن قابل واکشی نیستند، یا یکی از نویسههای ویژه زیر که نتیجه را برای هر بررسی گزارش میکنند:
- ‘?’
- نشاندهنده این است که بررسی امکانپذیر نبود (عدم پشتیبانی، مجوزهای پرونده، و غیره).
- ‘.’
- نشاندهنده قبولی در بررسی است.
- ‘A-Za-z0-9’
- نشاندهنده شکست یک بررسی خاص است. موقعیتها و نویسههای الفباییعددی زیر در حال حاضر پشتیبانی میشوند:
- 1 ‘?’
- این بررسیها در حال حاضر پشتیبانی نمیشوند، همیشه ‘?’ خواهند بود.
- 2 ‘M’
- بررسی حالت پرونده با شکست مواجه شد (از dpkg 1.21.0). از آنجا که فرا دادههای نام مسیر در حال حاضر رهگیری نمیشوند، این بررسی تنها میتواند از طریق یک روش اکتشافی بسیار ساده برای نام مسیرهایی که چکیده شناختهشده دارند تا حدی شبیهسازی شود، که نشان میدهد آنها باید پروندههای عادی باشند، و در صورتی که نام مسیر یک پرونده عادی روی سیستم پرونده نباشد بررسی شکست خواهد خورد. این بررسی در حال حاضر هرگز موفق نخواهد شد زیرا اطلاعات کافی در دسترس ندارد.
- 3 ‘5’
- بررسی چکیده (digest) با شکست مواجه شد، که به معنای تغییر محتوای پرونده است. این تنها یک بررسی یکپارچگی است و نباید به عنوان هیچ نوع راستیآزمایی امنیتی در نظر گرفته شود.
- 4-9 ‘?’
- این بررسیها در حال حاضر پشتیبانی نمیشوند، همیشه ‘?’ خواهند بود.
پس از این خط یک فاصله و یک نویسه صفت میآید. نویسه صفت زیر پشتیبانی میشود:
- ‘c’
- نام مسیر یک conffile است.
در نهایت با یک فاصله دیگر و نام مسیر دنبال میشود.
در صورتی که مدخل از نوع missing باشد، و پرونده در واقعیت روی سیستم پرونده وجود نداشته باشد، پس از خط یک فاصله و پیام خطا درون پرانتز قرار میگیرد.
- --status-fd n
- اطلاعات وضعیت بسته و پیشرفت را به شکل ماشینخوان به توصیفکننده پرونده n ارسال میکند. این گزینه میتواند چندین بار مشخص شود. اطلاعات عموماً یک رکورد در هر خط است، در یکی از قالبهای زیر:
- status: package: status
- وضعیت بسته تغییر کرد؛ status همانند مقدار موجود در پرونده وضعیت است.
- status: package : error : extended-error-message
- خطایی رخ داد. هرگونه خط جدید احتمالی در extended-error-message قبل از خروجی به فاصله تبدیل خواهد شد.
- status: file : conffile-prompt : 'real-old' 'real-new' useredited distedited
- از کاربر یک پرسش conffile پرسیده میشود.
- processing: stage: package
- درست قبل از آغاز یک مرحله پردازش ارسال میشود. stage یکی از موارد upgrade، install (هر دو پیش از باز کردن بسته ارسال میشوند)، configure، trigproc، disappear، remove، purge است.
- --status-logger=command
- اطلاعات
وضعیت بسته
و پیشرفت را
به شکل
ماشینخوان
به ورودی
استاندارد
دستور
پوسته command که
قرار است از
طریق “sh -c”
اجرا شود
ارسال
میکند (از dpkg
1.16.0). این گزینه
میتواند
چندین بار
مشخص شود.
قالب خروجی
استفادهشده
همانند --status-fd
است.
ثبتکنندههای وضعیت در صورت مشخص شدن --no-act، یا هنگام اجرا به عنوان کاربر غیرریشه بدون --force-not-root اجرا نمیشوند.
- --log=filename
- بهروزرسانیهای تغییر وضعیت و اقدامات را به جای پرونده پیشفرض /var/log/dpkg.log، در filename ثبت میکند. اگر این گزینه چندین بار داده شود، از آخرین نام پرونده استفاده میشود. پیامهای ثبت وقایع به شکل زیر هستند:
- YYYY-MM-DD HH:MM:SS startup type command
- برای هر فراخوانی dpkg که در آن type برابر با archives است (با یک command از نوع unpack یا install) یا packages (با یک command از نوع configure، triggers-only، remove یا purge).
- YYYY-MM-DD HH:MM:SS status state pkg installed-version
- برای بهروزرسانیهای تغییر وضعیت.
- YYYY-MM-DD HH:MM:SS action pkg installed-version available-version
- برای اقداماتی که در آنها action یکی از موارد install، upgrade، configure، trigproc، disappear، remove یا purge است.
- YYYY-MM-DD HH:MM:SS conffile filename decision
- برای تغییرات conffile که در آن decision یا install است یا keep.
- --robot
- از یک قالب
خروجی
ماشینخوان
استفاده
میکند. این
گزینه
رابطی را
برای
برنامههایی
فراهم
میکند که
نیاز به
تجزیه
خروجی برخی
از
دستوراتی
دارند که در
غیر این
صورت قالب
خروجی
ماشینخوان
تولید
نمیکنند.
هیچ
بومیسازی
استفاده
نخواهد شد،
و خروجی
برای سهولت
در تجزیه
اصلاح
میشود.
تنها دستوری که در حال حاضر پشتیبانی میشود --version است.
- --no-pager
- استفاده از هرگونه صفحهبند (pager) را هنگام نمایش اطلاعات غیرفعال میکند (از dpkg 1.19.2).
- --no-debsig
- برای بررسی صحت امضاهای بسته تلاشی نمیکند.
- --no-triggers
- هیچ محرکی را در این اجرا فعال نمیکند (از dpkg 1.14.17)، اما فعالسازیها همچنان ثبت خواهند شد. اگر همراه با --configure package یا --triggers-only package استفاده شود، اسکریپت postinst بسته نامبرده همچنان اجرا خواهد شد، حتی اگر تنها اجرای محرکها لازم باشد. استفاده از این گزینه ممکن است بستهها را در وضعیتهای نامناسب triggers-awaited و triggers-pending باقی بگذارد. این مشکل را میتوان بعداً با اجرای دستور زیر برطرف کرد: dpkg --configure --pending.
- --triggers
- دستور --no-triggers قبلی را لغو میکند (از dpkg 1.14.17).
وضعیت خروج (EXIT STATUS)
- 0
- دستور درخواستی با موفقیت انجام شد، یا یک دستور بررسی یا گزاره (assertion) مقدار درست (true) برگرداند.
- 1
- یک دستور بررسی یا گزاره مقدار نادرست (false) برگرداند.
- 2
- خطای مهلک یا غیرقابلبازیابی به دلیل استفاده نادرست در خط فرمان، یا تعامل با سامانه، از قبیل دسترسی به پایگاه داده، تخصیص حافظه و غیره.
محیط (ENVIRONMENT)
محیط بیرونی (External environment)
- PATH
- انتظار میرود این متغیر در محیط تعریف شده باشد و به مسیرهای سامانهای که چندین برنامه مورد نیاز در آنها قرار دارند اشاره کند. اگر تنظیم نشده باشد یا برنامهها پیدا نشوند، dpkg متوقف خواهد شد.
- HOME
- در صورت تنظیم، dpkg از آن به عنوان شاخهای که فایل پیکربندی مختص کاربر از آن خوانده میشود، استفاده خواهد کرد.
- TMPDIR
- در صورت تنظیم، dpkg از آن به عنوان شاخهای برای ایجاد فایلها و شاخههای موقت استفاده خواهد کرد.
- SHELL
- برنامهای که dpkg هنگام راهاندازی یک پوسته تعاملی جدید، یا هنگام اجرای یک دستور از طریق پوسته اجرا خواهد کرد.
- PAGER
- DPKG_PAGER
- برنامهای
که dpkg هنگام
اجرای یک
صفحهبند
اجرا خواهد
کرد، که با
«$SHELL -c»
اجرا خواهد
شد، برای
نمونه
هنگام
نمایش
تفاوتهای
conffile. اگر SHELL
تنظیم نشده
باشد، در
عوض از «sh»
استفاده
خواهد شد.
متغیر DPKG_PAGER متغیر محیطی PAGER را بازنویسی میکند (از dpkg 1.19.2 به بعد). اگر هیچیک از برنامههای اشارهشده توسط DPKG_PAGER یا PAGER موجود نباشند، برنامههای زیر به ترتیب امتحان خواهند شد (از dpkg 1.22.12 به بعد): صفحهبند پیشفرض more، سپس less(1)، more(1)، و در نهایت cat(1).
- DPKG_COLORS
- حالت رنگی را تنظیم میکند (از dpkg 1.18.5 به بعد). مقادیر پذیرفتهشده کنونی عبارتاند از: auto (پیشفرض)، always و never.
- DPKG_NLS
- در صورت تنظیم، برای تصمیمگیری درباره فعالسازی پشتیبانی از زبان بومی (Native Language Support)، که به عنوان پشتیبانی از بینالمللیسازی (یا i18n) نیز شناخته میشود، استفاده خواهد شد (از dpkg 1.22.7 به بعد). مقادیر پذیرفتهشده عبارتاند از: 0 و 1 (پیشفرض).
- DPKG_DEBUG
- ماسک اشکالزدایی را از روی یک مقدار هشتهشتی (octal) تعیین میکند (از dpkg 1.21.10 به بعد). پرچمهای پذیرفتهشده کنونی در گزینه --debug شرح داده شدهاند.
- DPKG_FORCE
- پرچمهای اجبار را تنظیم میکند (از dpkg 1.19.5 به بعد). هنگامی که این متغیر وجود دارد، هیچ پیشفرض اجباری توکاری اعمال نخواهد شد. اگر متغیر وجود داشته باشد اما خالی باشد، همه پرچمهای اجبار غیرفعال خواهند شد.
- DPKG_ROOT
- اگر تنظیم شده باشد و گزینههای --instdir یا --root مشخص نشده باشند، به عنوان شاخه ریشه سامانه فایل استفاده خواهد شد (از dpkg 1.21.10 به بعد).
- DPKG_ADMINDIR
- اگر تنظیم شده باشد و گزینههای --admindir یا --root مشخص نشده باشند، به عنوان شاخه مدیریتی dpkg استفاده خواهد شد (از dpkg 1.20.0 به بعد).
- DPKG_FRONTEND_LOCKED
- توسط یک پیشانه مدیر بسته تنظیم میشود تا به dpkg اطلاع دهد که نباید قفل پیشانه را دریافت کند (از dpkg 1.19.1 به بعد).
- DPKG_PATH_PASSWD
- مسیر فایل
passwd سامانه
را تعیین
میکند. این
مسیر نسبت
به شاخه --root
است.
پیشفرض
/etc/passwd است.
از dpkg 1.22.16 به بعد.
- DPKG_PATH_GROUP
- مسیر فایل
group سامانه
را تعیین
میکند. این
مسیر نسبت
به شاخه --root
است.
پیشفرض /etc/group
است.
از dpkg 1.22.16 به بعد.
محیط درونی (Internal environment)
- LESS
- توسط dpkg، در صورتی که از پیش تنظیم نشده باشد، هنگام فراخوانی یک صفحهبند برابر با “-FRSXMQ” تعریف میشود (از dpkg 1.19.2 به بعد). برای تغییر رفتار پیشفرض، این متغیر را میتوان از پیش روی مقدار دیگری از جمله یک رشته خالی تنظیم کرد، یا متغیرهای PAGER یا DPKG_PAGER را میتوان برای غیرفعال کردن گزینههای خاص با «-+» تنظیم نمود، برای نمونه DPKG_PAGER="less -+F".
- DPKG_ROOT
- توسط dpkg در محیط اسکریپت نگهدارنده تعریف میشود تا مشخص کند کدام نصب باید تحت عمل قرار گیرد (از dpkg 1.18.5 به بعد). هدف این است که این مقدار به ابتدای هر مسیری که اسکریپتهای نگهدارنده روی آن کار میکنند افزوده شود. در طول کارکرد عادی، این متغیر خالی است. هنگام نصب بستهها در یک instdir متفاوت، dpkg معمولاً اسکریپتهای نگهدارنده را با استفاده از chroot(2) فراخوانی میکند و این متغیر را خالی میگذارد، اما اگر --force-script-chrootless مشخص شده باشد، فراخوانی chroot(2) نادیده گرفته میشود و این متغیر روی instdir تنظیم خواهد شد (که غیرخالی خواهد بود).
- DPKG_ADMINDIR
- توسط dpkg در محیط اسکریپت نگهدارنده تعریف میشود تا نشاندهنده شاخه مدیریتی dpkg مورد استفاده باشد (از dpkg 1.16.0 به بعد). این متغیر همواره برابر با مقدار فعلی --admindir تنظیم میشود.
- DPKG_FORCE
- توسط dpkg در محیط زیرفرآیندها برابر با نام تمام گزینههای اجبار فعال کنونی که با کاما از هم جدا شدهاند تعریف میشود (از dpkg 1.19.5 به بعد).
- DPKG_SHELL_REASON
- توسط dpkg روی پوستهای که در اعلان conffile برای بررسی وضعیت ایجاد شده، تعریف میشود (از dpkg 1.15.6 به بعد). مقدار معتبر فعلی: conffile-prompt.
- DPKG_CONFFILE_OLD
- توسط dpkg روی پوستهای که در اعلان conffile برای بررسی وضعیت ایجاد شده، تعریف میشود (از dpkg 1.15.6 به بعد). حاوی مسیر conffile قدیمی است.
- DPKG_CONFFILE_NEW
- توسط dpkg روی پوستهای که در اعلان conffile برای بررسی وضعیت ایجاد شده، تعریف میشود (از dpkg 1.15.6 به بعد). حاوی مسیر conffile جدید است.
- DPKG_HOOK_ACTION
- توسط dpkg روی پوستهای که هنگام اجرای یک اقدام قلاب ایجاد شده تعریف میشود (از dpkg 1.15.4 به بعد). حاوی اقدام فعلی dpkg است.
- DPKG_RUNNING_VERSION
- توسط dpkg در محیط اسکریپت نگهدارنده برابر با نگارش نمونه در حال اجرای فعلی dpkg تعریف میشود (از dpkg 1.14.17 به بعد).
- DPKG_MAINTSCRIPT_PACKAGE
- توسط dpkg در محیط اسکریپت نگهدارنده برابر با نام بسته (بدون مشخصه معماری) در حال پردازش تعریف میشود (از dpkg 1.14.17 به بعد).
- DPKG_MAINTSCRIPT_PACKAGE_REFCOUNT
- توسط dpkg در محیط اسکریپت نگهدارنده برابر با شمارش مراجع بسته، یعنی تعداد نمونههای بسته با وضعیتی بالاتر از not-installed تعریف میشود (از dpkg 1.17.2 به بعد).
- DPKG_MAINTSCRIPT_ARCH
- توسط dpkg در محیط اسکریپت نگهدارنده برابر با معماریای که بسته برای آن ساخته شده است تعریف میشود (از dpkg 1.15.4 به بعد).
- DPKG_MAINTSCRIPT_NAME
- توسط dpkg در محیط اسکریپت نگهدارنده برابر با نام اسکریپت در حال اجرا، یکی از preinst، postinst، prerm یا postrm تعریف میشود (از dpkg 1.15.7 به بعد).
- DPKG_MAINTSCRIPT_DEBUG
- توسط dpkg در محیط اسکریپت نگهدارنده برابر با مقداری (‘0’ یا ‘1’) تعریف میشود که نشان میدهد آیا اشکالزدایی (با گزینه --debug) برای اسکریپتهای نگهدارنده درخواست شده است یا خیر (از dpkg 1.18.4 به بعد).
فایلها (FILES)
- /etc/dpkg/dpkg.cfg.d/[0-9a-zA-Z_-]*
- فایلهای قطعه پیکربندی (از dpkg 1.15.4 به بعد).
- /etc/dpkg/dpkg.cfg
- فایل پیکربندی با گزینههای پیشفرض.
- /var/log/dpkg.log
- فایل وقایع پیشفرض (به /etc/dpkg/dpkg.cfg و گزینه --log مراجعه کنید).
سایر فایلهای فهرستشده در زیر در شاخههای پیشفرض خود قرار دارند؛ به گزینه --admindir مراجعه کنید تا نحوه تغییر مکان این فایلها را ببینید.
- /var/lib/dpkg/available
- فهرست بستههای موجود.
- /var/lib/dpkg/status
- وضعیتهای
بستههای
موجود. این
فایل حاوی
اطلاعاتی
است درباره
اینکه آیا
یک بسته
برای حذف
نشانهگذاری
شده یا نه،
آیا نصب شده
است یا نه،
و غیره.
برای
اطلاعات
بیشتر بخش
"اطلاعات
درباره
بستهها (INFORMATION
ABOUT PACKAGES)" را
ببینید.
از فایل وضعیت بهطور روزانه در /var/backups پشتیبان گرفته میشود. اگر به دلیل مشکلات سامانه فایل گم یا خراب شود، میتواند مفید باشد.
قالب و محتویات یک بسته باینری در deb(5) توضیح داده شده است.
نامهای فایل سامانه فایل (Filesystem filenames)
در حین بازگشایی و پیکربندی، dpkg از نامهای فایل مختلفی برای اهداف پشتیبانگیری و بازگردانی (rollback) استفاده میکند. در ادامه توضیح سادهشدهای از نحوه استفاده از این نامهای فایل در حین نصب بسته آمده است.
- *.dpkg-new
- در حین بازگشایی، dpkg اشیاء جدید سامانه فایل را در pathname.dpkg-new استخراج میکند (بهجز شاخههای موجود یا پیوندهای نمادین به شاخهها که نادیده گرفته میشوند)؛ پس از پایان این کار و پس از انجام پشتیبانگیری از اشیاء قدیمی، اشیاء به pathname تغییر نام مییابند.
- *.dpkg-tmp
- در حین
بازگشایی،
dpkg پس از
استخراج
اشیاء
جدید، از
اشیاء
قدیمی
سامانه
فایل در
pathname.dpkg-tmp نسخه
پشتیبان
تهیه
میکند. این
نسخههای
پشتیبان یا
بهصورت
تغییر نام
برای
شاخهها
(اما تنها
در صورتی که
نوع فایل را
تغییر
دهند)، یک
نسخه جدید
از پیوند
نمادین
برای
پیوندهای
نمادین، یا
یک پیوند
سخت برای هر
شیء دیگر
سامانه
فایل انجام
میشوند،
بهجز conffileها
که نسخه
پشتیبان
دریافت
نمیکنند
زیرا در
مرحله بعدی
پردازش
میشوند.
در صورت نیاز به بازگردانی (rollback)، از این نسخههای پشتیبان برای بازیابی محتوای قبلی اشیاء استفاده میشود. این فایلها پس از تکمیل نصب بهطور خودکار حذف میشوند.
- *.dpkg-old
- در حین پیکربندی، هنگام نصب یک نگارش جدید، dpkg میتواند از conffile تغییریافته قبلی در pathname.dpkg-old نسخه پشتیبان تهیه کند.
- *.dpkg-dist
- در حین پیکربندی، هنگام نگه داشتن نگارش قدیمی، dpkg میتواند از conffile جدید تغییرنیافته در pathname.dpkg-dist نسخه پشتیبان تهیه کند.
امنیت (SECURITY)
هر عملیاتی که به دسترسی نوشتن روی پایگاه داده یا سامانه فایل نیاز دارد یک عملیات ممتاز تلقی میشود که ممکن است اجازه ارتقای دسترسی به ریشه (root escalation) را بدهد. این عملیاتها هرگز نباید به یک کاربر غیرقابل اعتماد واگذار شوند یا روی بستههای غیرقابل اعتماد انجام شوند، چرا که ممکن است اجازه دسترسی ریشه به سامانه را بدهند.
برخی عملیاتها (مانند اعتبارسنجی بسته) ممکن است برای دسترسی به فایلهایی روی سامانه فایل که در غیر این صورت به دلیل مجوزهای محدود در دسترس نخواهند بود، به امتیازات ریشه نیاز داشته باشند، اما در آن موارد نیز باید بهطور عادی کار کرده و پیامهای مناسب تولید نمایند.
عملیاتهای پرسوجو هرگز نباید به ریشه نیاز داشته باشند، و واگذاری اجرای آنها به کاربران فاقد امتیاز از طریق دستوری برای کسب دسترسی ریشه (gain-root) میتواند پیامدهای امنیتی (مانند ارتقای دسترسی) داشته باشد؛ برای مثال زمانی که یک صفحهبند (pager) بهطور خودکار توسط ابزار فراخوانی میشود.
همچنین بخش SECURITY از صفحات راهنمای dpkg-deb(1) و dpkg-split(1) را ببینید.
ایرادها (BUGS)
گزینه --no-act معمولاً اطلاعات کمتری نسبت به آنچه مفید است ارائه میدهد.
مثالها (EXAMPLES)
برای فهرست کردن بستههای نصبشده مربوط به ویرایشگر vi(1) (توجه داشته باشید که dpkg-query دیگر فایل available را بهطور پیشفرض بارگذاری نمیکند، و برای این منظور باید از گزینه --load-avail در dpkg-query استفاده شود):
dpkg -l '*vi*'
برای مشاهده ورودیهای دو بسته در /var/lib/dpkg/available:
dpkg --print-avail vim neovim | less
برای جستجو در فهرست بستهها توسط خودتان:
dpkg --print-avail | less
برای حذف یک بسته نصبشده neovim:
dpkg -r neovim
برای نصب یک بسته، ابتدا باید آن را در یک بایگانی یا دیسک چندرسانهای پیدا کنید. هنگام استفاده از یک بایگانی مبتنی بر ساختار pool، دانستن ناحیه بایگانی و نام بسته برای استنباط مسیر فایل کافی است:
dpkg -i /media/bdrom/pool/main/v/vim/vim_9.0.2018-1_amd64.deb
برای تهیه یک نسخه محلی از وضعیتهای انتخاب بسته:
dpkg --get-selections >myselections
میتوانید این فایل را به رایانه دیگری منتقل کنید، و پس از بهروزرسانی فایل available در آنجا با پیشانه مدیر بسته انتخابی خود (برای جزئیات بیشتر به https://wiki.debian.org/Teams/Dpkg/FAQ#set-selections مراجعه کنید)، برای مثال:
apt-cache dumpavail | dpkg --merge-avail
میتوانید آن را با این دستور نصب کنید:
dpkg --clear-selections dpkg --set-selections <myselections
توجه داشته باشید که این کار در واقع چیزی را نصب یا حذف نمیکند، بلکه صرفاً وضعیت انتخاب را روی بستههای درخواستی تعیین مینماید. برای بارگیری و نصب واقعی بستههای درخواستی به برنامه دیگری نیاز خواهید داشت. برای مثال، دستور apt-get dselect-upgrade را اجرا کنید.
معمولاً خواهید دید که dselect(1) روش راحتتری برای اصلاح وضعیتهای انتخاب بسته ارائه میدهد.
قابلیتهای بیشتر (ADDITIONAL FUNCTIONALITY)
با نصب هر یک از بستههای زیر میتوان به قابلیتهای بیشتری دست یافت: apt، aptitude و debsig-verify.
همچنین ببینید (SEE ALSO)
aptitude(8), apt(8), dselect(1), dpkg-deb(1), dpkg-query(1), deb(5), deb-control(5), dpkg.cfg(5), and dpkg-reconfigure(8).
نویسندگان (AUTHORS)
برای فهرست افرادی که در dpkg مشارکت داشتهاند، /usr/share/doc/dpkg/THANKS را ببینید.
| 2026-03-06 | 1.23.7-dirty |