dpkg-query(1) dpkg suite dpkg-query(1)

dpkg-query - ابزار پرس‌وجوی پایگاه‌داده بسته‌های دبیان

dpkg-query [گزینه...] دستور

دستور dpkg-query ابزاری برای نمایش اطلاعات درباره بسته‌های فهرست‌شده در پایگاه‌داده dpkg است.

فهرست کردن تمام بسته‌های شناخته‌شده که با یک یا چند الگو مطابقت دارند، بدون در نظر گرفتن وضعیت آن‌ها، که شامل هر بسته واقعی یا مجازی ارجاع داده‌شده در هر فیلد رابطه وابستگی (مانند Breaks، Enhances و غیره) می‌شود. اگر هیچ package-name-pattern مشخص نشده باشد، تمام بسته‌ها در /var/lib/dpkg/status فهرست می‌شوند، به استثنای مواردی که با عنوان نصب‌نشده (not-installed) علامت‌گذاری شده‌اند (یعنی آن‌هایی که پیش‌تر پاک‌سازی/purge شده‌اند). نویسه‌های عام (wildcard) معمول پوسته در package-name-pattern مجاز هستند. لطفاً توجه داشته باشید که برای جلوگیری از بسط نام فایل توسط پوسته، احتمالاً باید package-name-pattern را در نقل‌قول قرار دهید. به عنوان مثال، دستور زیر تمامی نام بسته‌هایی که با “libc6” شروع می‌شوند را فهرست می‌کند:
dpkg-query -l 'libc6*'

سه ستون اول خروجی به ترتیب اقدام مورد نظر، وضعیت بسته و خطاها را نشان می‌دهند.

اقدام مورد نظر (Desired action):

پرچم‌های خطا (Error flags):

<empty> = (none) (خالی = هیچ‌کدام)

یک حرف بزرگ وضعیت یا خطا نشان می‌دهد که بسته احتمالاً مشکلات شدیدی ایجاد خواهد کرد. لطفاً برای دریافت اطلاعات بیشتر درباره وضعیت‌ها و پرچم‌های فوق به dpkg(1) مراجعه کنید.

قالب خروجی این گزینه قابل پیکربندی نیست، اما به طور خودکار با پهنای ترمینال تنظیم می‌شود. این قالب برای خوانندگان انسانی در نظر گرفته شده است و به آسانی توسط ماشین قابل‌خواندن نیست. برای روشی جهت پیکربندی قالب خروجی، گزینه‌های -W (--show) و --showformat را ببینید.

درست مانند گزینه --list، این گزینه تمام بسته‌های منطبق با الگوهای داده‌شده را فهرست می‌کند. با این حال، خروجی را می‌توان با استفاده از گزینه --showformat سفارشی‌سازی کرد.

قالب خروجی پیش‌فرض، یک سطر به ازای هر بسته منطبق ارائه می‌دهد که هر سطر شامل نام بسته و نسخه نصب‌شده آن است که با یک تب (tab) از هم جدا شده‌اند. نام بسته برای بسته‌هایی با فیلد Multi-Arch با مقدار same یا دارای یک معماری خارجی (معماری‌ای که نه معماری بومی است و نه all)، همراه با مشخصه معماری خواهد بود.

وضعیت بسته‌های مشخص‌شده را گزارش می‌دهد. این دستور صرفاً مدخل موجود در پایگاه‌داده وضعیت بسته‌های نصب‌شده را نمایش می‌دهد. اگر هیچ package-name مشخص نشده باشد، تمامی مدخل‌های بسته در پایگاه‌داده وضعیت نمایش داده خواهند شد (از نسخه dpkg 1.19.1). هنگامی که چندین مدخل package-name فهرست شده باشند، مدخل‌های وضعیت درخواستی با یک خط خالی از هم جدا می‌شوند و به همان ترتیبی هستند که در فهرست آرگومان‌ها مشخص شده‌اند.
فهرست فایل‌های نصب‌شده روی سیستم شما از package-name را نمایش می‌دهد. هنگامی که چندین package-name فهرست شده باشند، فهرست فایل‌های درخواستی با یک خط خالی از یکدیگر جدا می‌شوند و ترتیبی یکسان با فهرست آرگومان‌ها خواهند داشت.

هر دایورژن (تغییر مسیر) فایل پس از فایل منحرف‌شده مربوط به خود در سطری جداگانه چاپ می‌شود و یکی از رشته‌های محلی‌شده زیر در ابتدای آن قرار می‌گیرد:

locally diverted to: diverted-to
package diverts others to: diverted-to
diverted by pkg to: diverted-to

نکته: هنگام تجزیه خروجی توسط ماشین، مرسوم است که برای دریافت نتایج تکرارپذیر، لوکال روی C.UTF-8 تنظیم شود. در برخی سیستم‌ها اگر متغیر محیطی LANGUAGE از پیش تنظیم شده باشد، ممکن است نیاز به تطبیق مناسب آن نیز باشد (به locale(7) مراجعه کنید).

این دستور فایل‌های اضافی ایجادشده توسط اسکریپت‌های نگه‌دارنده یا جایگزین‌ها (alternatives) را فهرست نمی‌کند.

فهرست فایل‌های کنترلی نصب‌شده روی سیستم شما از package-name را نمایش می‌دهد (از نسخه dpkg 1.16.5). این فایل‌ها می‌توانند به عنوان آرگومان ورودی برای --control-show استفاده شوند.
محتوای control-file نصب‌شده روی سیستم شما از package-name را در خروجی استاندارد چاپ می‌کند (از نسخه dpkg 1.16.5).
مسیرهای فایل‌های کنترلی نصب‌شده روی سیستم شما از package-name را فهرست می‌کند (از نسخه dpkg 1.15.4). اگر control-file مشخص شده باشد، در صورت وجود فقط مسیر همان فایل کنترلی را فهرست می‌کند.

هشدار: این دستور منسوخ شده است زیرا دسترسی مستقیم به پایگاه‌داده داخلی dpkg فراهم می‌کند؛ لطفاً برای تمامی مواردی که ممکن است همان نتیجه پایانی را ارائه دهند، به جای آن از --control-list و --control-show استفاده کنید. با این حال، تا زمانی که دست‌کم یک مورد وجود داشته باشد که این دستور در آن مورد نیاز است (یعنی زمانی که لازم است یک اسکریپت نگه‌دارنده مخرب postrm حذف شود) و مادامی که راهکار مناسبی برای آن وجود ندارد، این دستور حذف نخواهد شد.

جستجوی بسته‌هایی که مالک فایل‌های مطابق با الگوهای مشخص‌شده هستند. نویسه‌های عام معمول پوسته می‌توانند در الگو استفاده شوند، که در آن ستاره (*) و علامت سؤال (?) با یک اسلش تطبیق داده می‌شوند و بک‌اسلش (\) به عنوان نویسه گریز (escape) به کار می‌رود.

اگر نخستین نویسه در filename-search-pattern هیچ‌یک از ‘*[?/’ نباشد، آن‌گاه تطبیق زیررشته در نظر گرفته می‌شود و به‌طور ضمنی توسط ‘*’ احاطه می‌گردد (مانند *filename-search-pattern*). اگر رشته پسین حاوی هر یک از ‘*[?\’ باشد، با آن مانند یک الگوی glob رفتار خواهد شد؛ در غیر این صورت هرگونه ‘/’ یا ‘/.’ پایانی حذف شده و جستجوی دقیق مسیر انجام می‌گیرد.

این دستور فایل‌های اضافی ایجادشده توسط اسکریپت‌های نگه‌دارنده و همچنین جایگزین‌ها (alternatives) را فهرست نمی‌کند.

قالب خروجی شامل یک سطر به ازای هر الگوی منطبق است، همراه با فهرستی از بسته‌های مالک نام مسیر که با یک کاما (U+002C ‘,’) و یک فاصله (U+0020 ‘ ’) از هم جدا شده‌اند، و به دنبال آن یک دو نقطه (U+003A ‘:’) و یک فاصله، و سپس نام مسیر می‌آید. مانند:

pkgname1, pkgname2: pathname1
pkgname3: pathname2

تغییر مسیرهای فایل (diversions) با رشته‌های محلی‌شده زیر چاپ می‌شوند:

diversion by pkgname from: diverted-from
diversion by pkgname to: diverted-to

یا برای تغییر مسیرهای محلی:

local diversion from: diverted-from
local diversion to: diverted-to

نکته: هنگام تجزیه خروجی توسط ماشین، مرسوم است که برای دریافت نتایج تکرارپذیر، لوکال روی C.UTF-8 تنظیم شود.

نمایش جزئیات درباره بسته‌ها، آن‌گونه که در /var/lib/dpkg/available یافت می‌شود. اگر هیچ package-name مشخص نشده باشد، تمامی مدخل‌های بسته در پایگاه‌داده available نمایش داده خواهند شد (از نسخه dpkg 1.19.1). هنگامی که چندین package-name فهرست شده باشند، مدخل‌های available درخواستی با یک خط خالی از هم جدا می‌شوند و ترتیبی یکسان با فهرست آرگومان‌ها خواهند داشت.

کاربران پیشانه‌های مبتنی بر APT باید به جای این دستور از apt show package-name استفاده کنند، چرا که فایل available تنها زمانی که از dselect استفاده شود به‌روز نگه داشته می‌شود.

-?, --help
نمایش پیام راهنمای نحوه استفاده و خروج.
نمایش نسخه برنامه و خروج.

تغییر مکان پایگاه‌داده dpkg. مکان پیش‌فرض /var/lib/dpkg است.
دایرکتوری ریشه را روی directory تنظیم می‌کند، که موجب می‌شود دایرکتوری مدیریتی روی «directory/var/lib/dpkg» قرار گیرد (از نسخه dpkg 1.21.0).
همچنین هنگام استفاده از دستورهای --show و --list، فایل available را نیز بارگذاری می‌کند، که در حال حاضر به طور پیش‌فرض فقط فایل وضعیت (status) را پرس‌وجو می‌کنند (از نسخه dpkg 1.16.2).
استفاده از هرگونه صفحه‌بندی‌کننده (pager) را هنگام نمایش اطلاعات غیرفعال می‌کند (از نسخه dpkg 1.19.2).
این گزینه برای تعیین قالب خروجی تولیدشده توسط --show به کار می‌رود (گزینه کوتاه از نسخه dpkg 1.13.1). قالب، رشته‌ای است که به ازای هر بسته فهرست‌شده در خروجی چاپ خواهد شد.

در رشته قالب، “\” نویسه‌های گریز (escapes) را معرفی می‌کند:

نویسه “\” قبل از هر نویسه دیگر، هرگونه معنای ویژه نویسه بعدی را خنثی می‌کند که برای “\” و “$” سودمند است.

اطلاعات بسته را می‌توان با درج ارجاعات متغیر به فیلدهای بسته با نحو “${field[;width]}” شامل کرد. فیلدها راست‌چین چاپ می‌شوند مگر اینکه پهنا (width) منفی باشد که در این صورت چپ‌چین خواهند شد. فیلدهای زیر شناسایی می‌شوند، اما لزوماً در فایل وضعیت موجود نیستند (تنها فیلدهای داخلی یا فیلدهای ذخیره‌شده در بسته باینری در آن قرار می‌گیرند):

موارد زیر فیلدهای مجازی هستند که توسط dpkg-query از مقادیر سایر فیلدها تولید می‌شوند (توجه داشته باشید که این‌ها از نام‌های معتبر برای فیلدها در فایل‌های کنترل استفاده نمی‌کنند):

شامل نام بسته باینری همراه با یک مشخصه احتمالی معماری مانند “libc6:amd64” است (از نسخه dpkg 1.16.2). یک مشخصه معماری برای بسته‌هایی با فیلد Multi-Arch با مقدار same یا با یک معماری خارجی (معماری‌ای که نه معماری بومی است و نه all) وجود خواهد داشت تا نام بسته بدون ابهام باشد.
شامل شرح کوتاه بسته است (از نسخه dpkg 1.19.1).
این یک نام مستعار برای binary:Synopsis است (از نسخه dpkg 1.16.2).
شامل وضعیت اختصاری بسته (به صورت سه نویسه) مانند “ii ” یا “iHR” است (از نسخه dpkg 1.16.2). برای جزئیات بیشتر به شرح دستور --list مراجعه کنید.
شامل وضعیت مورد نظر بسته، بخشی از فیلد Status است (از نسخه dpkg 1.17.11).
شامل واژه وضعیت بسته، بخشی از فیلد Status است (از نسخه dpkg 1.17.11).
شامل پرچم خطای وضعیت بسته، بخشی از فیلد Status است (از نسخه dpkg 1.17.11).
شامل فهرست مدخل‌های سیستم‌فایل بسته است که با خطوط جدید از هم جدا شده‌اند (از نسخه dpkg 1.19.3).
شامل برچسب زمانی بر حسب ثانیه از آخرین باری است که مدخل‌های سیستم‌فایل بسته تغییر یافته‌اند (از نسخه dpkg 1.19.3).
شامل نام بسته سورس برای این بسته باینری است (از نسخه dpkg 1.16.2).
شامل نسخه بسته سورس برای این بسته باینری است (از نسخه dpkg 1.16.2).
شامل نسخه بالادستی بسته سورس برای این بسته باینری است (از نسخه dpkg 1.18.16).

رشته قالب پیش‌فرض “${binary:Package}\t${Version}\n” است. در عمل، تمام فیلدهای دیگر موجود در فایل وضعیت (یعنی فیلدهای تعریف‌شده توسط کاربر) نیز می‌توانند درخواست شوند. البته آن‌ها همان‌گونه که هستند چاپ خواهند شد و هیچ تبدیلی یا بررسی خطایی روی آن‌ها انجام نمی‌گیرد. برای به دست آوردن نام نگه‌دارنده dpkg و نسخه نصب‌شده، می‌توانید دستور زیر را اجرا کنید:

dpkg-query -f='${binary:Package} ${Version}\t${Maintainer}\n' \
 -W dpkg

0
پرس‌وجوی درخواستی با موفقیت انجام شد.
1
پرس‌وجوی درخواستی به دلیل پیدا نشدن هیچ فایل یا بسته‌ای، به‌طور کامل یا جزئی با شکست مواجه شد (به جز در موارد --control-path، --control-list و --control-show که در آن‌ها چنین خطاهایی مهلک هستند).
2
خطای مهلک یا غیرقابل‌بازگشت به دلیل استفاده نامعتبر از خط فرمان، یا برهم‌کنش‌ها با سیستم، مانند دسترسی به پایگاه‌داده، تخصیص حافظه و غیره.

برنامه‌ای را برای اجرا تعیین می‌کند زمانی که یک دستور از طریق یک پوسته فراخوانی می‌شود (از نسخه dpkg 1.19.2).
دستور صفحه‌بندی‌کننده (pager) مورد استفاده را تعیین می‌کند (از نسخه dpkg 1.19.1)، که با «$SHELL -c» اجرا خواهد شد. اگر SHELL تنظیم نشده باشد، به جای آن از «sh» استفاده می‌شود.

متغیر DPKG_PAGER بر متغیر محیطی PAGER اولویت دارد (از نسخه dpkg 1.19.2). اگر هیچ‌یک از برنامه‌های مشخص‌شده توسط DPKG_PAGER یا PAGER موجود نباشند، برنامه‌های زیر به ترتیب امتحان خواهند شد (از نسخه dpkg 1.22.12): صفحه‌بندی‌کننده پیش‌فرض more، سپس less(1)، more(1) و در نهایت cat(1).

اگر تنظیم شده باشد و گزینه --root مشخص نشده باشد، به عنوان دایرکتوری ریشه سیستم‌فایل استفاده می‌شود (از نسخه dpkg 1.21.0).
اگر تنظیم شده باشد و گزینه --admindir مشخص نشده باشد، به عنوان دایرکتوری داده‌های dpkg استفاده می‌شود.
ماسک اشکال‌زدایی را از یک مقدار هشت‌هشتی (octal) تنظیم می‌کند (از نسخه dpkg 1.21.10). پرچم‌های پذیرفته‌شده فعلی در گزینه dpkg --debug شرح داده شده‌اند، اما ممکن است همه این پرچم‌ها روی این برنامه تأثیرگذار نباشند.
حالت رنگ را تنظیم می‌کند (از نسخه dpkg 1.18.5). مقادیر پذیرفته‌شده فعلی عبارتند از: auto (پیش‌فرض)، always و never.
اگر تنظیم شده باشد، برای تصمیم‌گیری درباره فعال‌سازی پشتیبانی از زبان بومی (Native Language Support)، که به عنوان پشتیبانی بین‌المللی‌سازی (یا i18n) نیز شناخته می‌شود، استفاده خواهد شد (از نسخه dpkg 1.22.7). مقادیر پذیرفته‌شده عبارتند از: 0 و 1 (پیش‌فرض).

توسط dpkg-query هنگام فراخوانی صفحه‌بندی‌کننده روی “-FRSXMQ” تعریف می‌شود، اگر از پیش تنظیم نشده باشد (از نسخه dpkg 1.19.2). برای تغییر رفتار پیش‌فرض، این متغیر را می‌توان از پیش روی مقدار دیگری از جمله یک رشته خالی تنظیم کرد، یا می‌توان متغیرهای PAGER یا DPKG_PAGER را برای غیرفعال کردن گزینه‌های خاص با «-+» تنظیم نمود، برای مثال DPKG_PAGER="less -+F".

عملیات پرس‌وجو هرگز نباید نیازمند دسترسی کاربر ریشه (root) باشد، و واگذاری اجرای آن‌ها به کاربران بدون امتیاز از طریق دستورات ارتقای امتیاز (مانند sudo) می‌تواند پیامدهای امنیتی به همراه داشته باشد (مانند ارتقای غیرمجاز دسترسی)، به عنوان مثال زمانی که یک صفحه‌بندی‌کننده به طور خودکار توسط این ابزار فراخوانی می‌شود.

dpkg(1).

2026-03-06 1.23.7-dirty