dpkg-divert(1) dpkg suite dpkg-divert(1)

dpkg-divert - جایگزینی و تغییر مسیر نسخه بسته از یک فایل

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

dpkg-divert ابزاری است که برای برپایی و به‌روزرسانی فهرست تغییر مسیرها (انحراف‌ها) استفاده می‌شود.

تغییر مسیر فایل‌ها روشی است برای وادار کردن dpkg(1) به نصب نکردن یک فایل در مکان اصلی آن، بلکه در یک مکان منحرف‌شده. تغییر مسیرها می‌توانند توسط اسکریپت‌های نگه‌دارنده بسته جهت کنار گذاشتن یک فایل هنگام بروز تداخل به کار روند. همچنین مدیران سیستم می‌توانند از آن برای جایگزینی فایل پیکربندی یک بسته، یا در هر زمانی که لازم است برخی فایل‌ها (که به عنوان “conffiles” علامت‌گذاری نشده‌اند) در حین نصب نسخه جدیدتری از بسته حاوی آن فایل‌ها توسط dpkg دست‌نخورده حفظ شوند، استفاده کنند.

[--add] file
افزودن یک تغییر مسیر برای file. در حال حاضر نام فایل تغییر داده نمی‌شود، گزینه --rename را ببینید.
حذف یک تغییر مسیر برای file. در حال حاضر نام فایل تغییر داده نمی‌شود، گزینه --rename را ببینید.
فهرست کردن تمام تغییر مسیرها، یا مواردی که با الگوی glob-pattern مطابقت دارند.
چاپ نام بسته‌ای که file را تغییر مسیر می‌دهد (از dpkg 1.15.0 به بعد). اگر file به‌صورت محلی تغییر مسیر یافته باشد عبارت LOCAL و اگر فایل تغییر مسیر نیافته باشد هیچ چیزی چاپ نمی‌کند.
چاپ نام واقعی یک فایل تغییرمسیریافته.

تنظیم دایرکتوری مدیریتی به directory. در صورتی که DPKG_ADMINDIR مقداردهی نشده باشد، مقدار پیش‌فرض «/var/lib/dpkg» خواهد بود.
تنظیم دایرکتوری نصب، که به دایرکتوری محل نصب بسته‌ها اشاره دارد (از dpkg 1.19.2 به بعد). در صورتی که DPKG_ROOT مقداردهی نشده باشد، مقدار پیش‌فرض «/» خواهد بود.
تنظیم دایرکتوری ریشه به directory، که در صورت تعیین نشدن DPKG_ROOT دایرکتوری نصب را روی «directory» و دایرکتوری مدیریتی را روی «directory/var/lib/dpkg» تنظیم می‌کند (از dpkg 1.19.2 به بعد).
divert-to مکانی است که نسخه‌های file، آن‌چنان که توسط بسته‌های دیگر ارائه می‌شوند، به آنجا تغییر مسیر داده خواهند شد.
مشخص می‌کند که نسخه‌های تمام بسته‌ها از این فایل تغییر مسیر داده شوند. این بدان معناست که هیچ استثنایی وجود ندارد و هر بسته‌ای نصب شود، این فایل منحرف خواهد شد. مدیر سیستم می‌تواند از این گزینه برای نصب نسخه اصلاح‌شده محلی استفاده کند.
package نام بسته‌ای است که نسخه آن از file تغییر مسیر داده نخواهد شد؛ به این معنی که file برای تمام بسته‌ها به جز package تغییر مسیر می‌یابد.
حالت بی‌صدا؛ یعنی خروجی پرگویی تولید نشود.
فایل را واقعاً به کناری (یا به جای قبلی‌اش) منتقل می‌کند. در صورتی که فایل مقصد از قبل وجود داشته باشد، dpkg-divert عملیات را لغو خواهد کرد. این رفتار رایجی است که برای تغییر مسیر فایل‌های مربوط به مجموعه بسته‌های غیرضروری (غیر-Essential) به کار می‌رود (برای جزئیات بیشتر گزینه --no-rename را ببینید).
مشخص می‌کند که هنگام افزودن یا حذف تغییر مسیر در پایگاه‌داده، نام فایل نباید تغییر داده شود (از dpkg 1.19.1 به بعد). این گزینه برای تغییر مسیر فایل‌های مجموعه بسته‌های ضروری (Essential) در نظر گرفته شده است، جایی که ناپدید شدن موقت فایل اصلی غیرقابل‌قبول است چرا که می‌تواند سیستم را از کار بیندازد. این رفتار پیش‌فرض است، که پس از پایان استفاده کاربران شناخته‌شده تغییر خواهد کرد، اما زودتر از چرخه انتشار dpkg 1.23.x نخواهد بود.
حالت آزمایشی؛ تغییری در عمل اعمال نمی‌شود و فقط مراحل به نمایش درمی‌آیند.
-?, --help
نمایش پیام راهنمای نحوه استفاده و خروج.
نمایش نگارش و خروج.

0
عملیات درخواستی با موفقیت انجام شد.
2
خطای مهلک یا غیرقابل‌جبران به دلیل استفاده نادرست در خط فرمان، یا برهم‌کنش با سیستم مانند دسترسی به پایگاه‌داده، تخصیص حافظه و غیره.

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

/var/lib/dpkg/diversions
فایلی که حاوی فهرست کنونی تغییر مسیرهای سیستم است. این فایل در دایرکتوری مدیریتی dpkg، همراه با دیگر فایل‌های مهم برای dpkg نظیر status یا available قرار دارد.

نکته: dpkg-divert پیش از جایگزینی این فایل با نسخه جدید، نسخه پیشین را با پسوند -old نگه‌داری می‌کند.

هنگام افزودن، حالت پیش‌فرض --local و --divert original.distrib است. هنگام حذف، در صورت مشخص شدن --package یا --local و --divert، مقادیر آن‌ها باید مطابقت داشته باشند.

دایرکتوری‌ها نمی‌توانند توسط dpkg-divert تغییر مسیر داده شوند.

هنگام تغییر مسیر کتابخانه‌های مشترک (shared libraries) باید دقت شود؛ چرا که ldconfig(8) پیوند نمادین را بر اساس فیلد DT_SONAME تعبیه‌شده در کتابخانه ایجاد می‌کند. از آنجا که ldconfig به تغییر مسیرها اهمیتی نمی‌دهد (فقط dpkg از آن‌ها تبعیت می‌کند)، اگر یک کتابخانه تغییرمسیریافته دارای همان SONAME کتابخانه تغییرمسیرنیافته باشد، ممکن است در نهایت پیوند نمادین به کتابخانه تغییرمسیریافته اشاره کند.

برای تغییر مسیر تمام نسخه‌های /usr/bin/example به /usr/bin/example.foo، یعنی هدایت تمام بسته‌های ارائه‌دهنده /usr/bin/example به نصب آن به عنوان /usr/bin/example.foo، با تغییر نام در صورت نیاز:

dpkg-divert --divert /usr/bin/example.foo --rename /usr/bin/example

برای حذف آن تغییر مسیر:

dpkg-divert --rename --remove /usr/bin/example

برای تغییر مسیر هر بسته‌ای که قصد نصب /usr/bin/example را دارد به /usr/bin/example.foo، به جز بسته اختصاصی خودتان به نام wibble:

dpkg-divert --package wibble --divert /usr/bin/example.foo \
   --rename /usr/bin/example

برای حذف آن تغییر مسیر:

dpkg-divert --package wibble --rename --remove /usr/bin/example

dpkg(1).

2026-03-06 1.23.7-dirty