| YUM2DNF(8) | DNF | YUM2DNF(8) |
نام (NAME)
yum2dnf - تغییرات DNF در مقایسه با YUM
گزینه --SKIP-BROKEN (--SKIP-BROKEN)
برای دستور install:
گزینه --skip-broken یک نام مستعار (alias) برای --setopt=strict=0 است. هر دو گزینه را میتوان در DNF استفاده کرد تا تمام بستههای در دسترسنبوده یا بستههای با وابستگیهای خرابِ دادهشده به DNF بدون ایجاد خطایی که کل عملیات را با شکست مواجه کند، نادیده گرفته شوند. این رفتار را میتوان به عنوان پیشفرض در فایل dnf.conf تنظیم کرد. گزینه پیکربندی strict را ببینید <#strict-label>.
برای دستور upgrade:
رفتاری که قرار بود در YUM با --skip-broken فعال شود، اکنون به طور پیشفرض برای dnf update ساده تنظیم شده است. نیازی به استفاده از --skip-broken همراه با دستور dnf upgrade نیست. برای استفاده از تنها جدیدترین نگارش بستهها در تراکنشها، گزینه خط فرمان --best وجود دارد.
یکسان بودن دستورات UPDATE و UPGRADE (UPDATE AND UPGRADE COMMANDS ARE THE SAME)
اجرای dnf update یا dnf upgrade در تمام اشکال آنها، تأثیر یکسانی در DNF دارد و مورد دوم ترجیح داده میشود. در YUM دستور yum upgrade دقیقاً مشابه yum --obsoletes update بود.
فعال بودن پیشفرض CLEAN_REQUIREMENTS_ON_REMOVE (CLEAN_REQUIREMENTS_ON_REMOVE ON BY DEFAULT)
گزینه clean_requirements_on_remove <#clean-requirements-on-remove-label> در DNF به طور پیشفرض روشن (فعال) است. بنابراین مقایسه نتایج عملیات "remove" بین DNF و YUM ممکن است گمراهکننده باشد، زیرا DNF به طور پیشفرض اغلب بستههای بیشتری را حذف خواهد کرد.
نبود دستور RESOLVEDEP (NO RESOLVEDEP COMMAND)
نسخه YUM این دستور صرفاً به دلایل سازگاری با نسخههای قدیمی (legacy) حفظ شده است. کاربر میتواند به سادگی از dnf provides استفاده کند تا دریابد چه بستهای یک پرونده خاص را ارائه میدهد.
نبود دستور DEPLIST (NO DEPLIST COMMAND)
یک جایگزین برای دستور deplist در YUM جهت پیدا کردن وابستگیهای یک بسته، dnf repoquery --deplist با استفاده از دستور repoquery است <#repoquery-command-label>.
نکته:
اعمال استثناها و استثناهای مخازن بر تمام عملیاتها (EXCLUDES AND REPO EXCLUDES APPLY TO ALL OPERATIONS)
ابزار YUM استثناها (excludes) را فقط در هنگام نصب و ارتقا اعمال میکند. DNF این مورد را به تمام عملیاتها، از جمله حذف (erasing) و فهرستگیری (listing) تعمیم میدهد. اگر برای مثال میخواهید فهرستی از تمام بستههای نصبشده python-f* به جز بستههای Flask را مشاهده کنید، دستور زیر کار خواهد کرد:
dnf -x '*flask*' list installed 'python-f*'
حذف گزینه INCLUDE (THE INCLUDE OPTION HAS BEEN REMOVED)
گنجاندن (include کردن) سایر فایلهای پیکربندی در فایل پیکربندی اصلی دیگر پشتیبانی نمیشود.
عدم پشتیبانی کامل DNF PROVIDES /BIN/<FILE> (DNF PROVIDES /BIN/<FILE> IS NOT FULLY SUPPORTED)
پس از مهاجرت UsrMove https://fedoraproject.org/wiki/Features/UsrMove، دایرکتوری /bin در سیستمهای فدورا وجود ندارد و هیچ فایلی در آنجا نصب نمیشود؛ /bin صرفاً یک پیوند نمادین (symlink) ایجادشده توسط بسته filesystem است که به /usr/bin اشاره دارد. تبدیل پیوندهای نمادین به مسیر واقعی آنها تنها این احساس نادرست را به کاربر میداد که این دستور به درستی کار میکند، در حالی که در واقع درخواستهای provides با استفاده از الگوها (globs) مانند:
dnf provides /b*/<file>
همچنان با شکست مواجه خواهند شد (همانطور که اکنون در YUM نیز چنین است). برای پیدا کردن بستهای که یک فایل باینری خاص را ارائه میدهد، از مسیر واقعی باینریها در فدورا استفاده کنید:
dnf provides /usr/bin/<file>
همچنین گزارش باگهای مربوطه در فدورا به شمارههای 982947 https://bugzilla.redhat.com/show_bug.cgi?id=982947 و 982664 https://bugzilla.redhat.com/show_bug.cgi?id=982664 را ببینید.
احتمال فعال بودن پیشفرض SKIP_IF_UNAVAILABLE (SKIP_IF_UNAVAILABLE COULD BE ENABLED BY DEFAULT)
در برخی توزیعها، DNF همراه با skip_if_unavailable=True در فایل پیکربندی DNF عرضه میشود <#conf-ref-label>. دلیل این تغییر آن است که مخازن شخص ثالث اغلب ممکن است در دسترس نباشند. بدون این تنظیم در فایل پیکربندی مخزن مربوطه، YUM بلافاصله هنگام بروز خطای همگامسازی مخزن متوقف میشود که این امر موجب سردرگمی و ناراحتی کاربر میگردد.
گزارش باگ مرتبط در فدورا به شماره 984483 را ببینید https://bugzilla.redhat.com/show_bug.cgi?id=984483.
حذف OVERWRITE_GROUPS و عملکرد توابع COMPS مانند حالت همیشه غیرفعال (OVERWRITE_GROUPS DROPPED, COMPS FUNCTIONS ACTING AS IF ALWAYS DISABLED)
این گزینه پیکربندی حذف شده است. هنگامی که DNF چندین گروه با شناسه گروهی (group ID) یکسان را مشاهده میکند، محتویات گروهها را با یکدیگر ادغام میکند.
حذف MIRRORLIST_EXPIRE (MIRRORLIST_EXPIRE DROPPED)
جهت سادهسازی امور برای کاربر، DNF از metadata_expire هم برای انقضای فراداده (متادیتا) و هم برای انقضای فایل فهرست آینهها (mirrorlist - که خود نوعی متادیتا است) استفاده میکند.
عدم شناسایی METALINK در گزینه مخزن MIRRORLIST (METALINK NOT RECOGNIZED IN THE MIRRORLIST REPO OPTION)
بخش زیر از yum.conf(5) دیگر برای گزینه mirrorlist اعمال نمیشود:
فایلهای پیکربندی مخازن مربوطه برای رعایت این موضوع اصلاح شدهاند؛ گزارش باگ مرتبط در فدورا به شماره 948788 را ببینید https://bugzilla.redhat.com/show_bug.cgi?id=948788.
حذف ALWAYSPROMPT (ALWAYSPROMPT DROPPED)
جهت سادهسازی پیکربندی، پشتیبانی از این گزینه متوقف شده است.
حذف UPGRADE_REQUIREMENTS_ON_INSTALL (UPGRADE_REQUIREMENTS_ON_INSTALL DROPPED)
حذف این گزینه پیکربندی با معناشناسی مبهم، موجب سادهسازی پیکربندی شده است. DNF به گونهای عمل میکند که گویی این گزینه غیرفعال است. اگر کاربر میخواست همه چیز را به آخرین نسخه ارتقا دهد، به سادگی از dnf upgrade استفاده میکرد.
حذف بررسی بازگردانی تاریخچه DNF (DNF HISTORY ROLLBACK CHECK DROPPED)
از آنجا که DNF استفاده همزمان از سایر مدیرهای بسته را مجاز میداند، این احتمال وجود دارد که تمام تغییرات اعمالشده در پایگاه داده RPM (RPMDB) در تاریخچه تراکنشها ثبت نشده باشند. بنابراین، DNF در صورت مواجهه با چنین شرایطی دچار خطا و توقف نمیشود و در نتیجه گزینه force دیگر مورد نیاز نیست.
جایگزینی بستهها بدون YUM SWAP (PACKAGES REPLACEMENT WITHOUT YUM SWAP)
گاهی اوقات نیاز است که یک بسته نصبشده حذف شده و با بسته دیگری که همان قابلیتها را ارائه میدهد جایگزین شود، در حالی که بستههای دیگر وابسته به این قابلیتها همچنان نصب بمانند. برای انجام این کار بدون از بین بردن (موقت) یکپارچگی پایگاه داده بستهها، میتوان عملیات حذف و نصب را در قالب یک تراکنش واحد انجام داد. روش معمول برای تنظیم چنین تراکنشی در DNF استفاده از dnf shell یا استفاده از گزینه --allowerasing است.
برای مثال فرض کنید میخواهید بسته A (ارائهدهنده P) را با بسته B (که آن هم ارائهدهنده P است و با A تداخل دارد) جایگزین کنید بدون اینکه در این فرایند بسته C (که نیازمند P است) حذف شود. از دستور زیر استفاده کنید:
dnf --allowerasing install B
این دستور معادل yum swap A B است.
ابزار DNF دستور swap را ارائه میدهد اما تنها ساختار دستوری dnf swap A B پشتیبانی میشود.
عدم نمایش جزئیات پردازش وابستگیها در خط فرمان (DEPENDENCY PROCESSING DETAILS ARE NOT SHOWN IN THE CLI)
در طول مرحله حل وابستگیها (depsolving)، ابزار YUM خطوطی مشابه موارد زیر چاپ میکند:
---> Package rubygem-rhc.noarch 0:1.16.9-1.fc19 will be an update --> Processing Dependency: rubygem-net-ssh-multi >= 1.2.0 for package: rubygem-rhc-1.16.9-1.fc19.noarch
ابزار DNF چنین اطلاعاتی را در خروجی نمایش نمیدهد. دلیل فنی این است که حلکننده وابستگی زیربنایی DNF همیشه تمام وابستگیها را برای کاندیداهای بهروزرسانی بررسی میکند و خروجی بسیار طولانی خواهد شد. ثانیاً، حتی در YUM نیز این خروجی بهسرعت بسیار گیجکننده میشد (بهویژه برای تراکنشهای بزرگ) و بنابراین آسیب آن بیش از فایدهاش بود.
گزارش باگ مرتبط در فدورا به شماره 1044999 را ببینید https://bugzilla.redhat.com/show_bug.cgi?id=1044999.
انطباق DNF PROVIDES با مستندات اصلی دستور در YUM (DNF PROVIDES COMPLIES WITH THE YUM DOCUMENTATION OF THE COMMAND)
هنگامی که دستوری مانند زیر اجرا میشود:
yum provides sandbox
ابزار YUM راهکارهای اکتشافی (heuristics) اضافهای را اعمال میکند تا متوجه شود منظور کاربر از sandbox چه بوده است؛ به عنوان مثال مقادیر متغیر محیطی PATH را به صورت متوالی به ابتدای آن اضافه میکند تا بررسی کند آیا با فایلی که توسط بستهای ارائه شده مطابقت دارد یا خیر. این یک رفتار مستندنشده است که DNF از آن تقلید نمیکند. برای رسیدن به نتایج مشابه معمولاً به سادگی از این دستور استفاده کنید:
dnf provides /usr/bin/sandbox
یا حتی:
dnf provides '*/sandbox'
تا نتایج مشابهی به دست آورید.
محدودسازی پهنای باند (BANDWIDTH LIMITING)
ابزار DNF از گزینههای throttle و bandwidth که از YUM شناخته شدهاند پشتیبانی میکند. بر خلاف YUM، هنگامی که چندین دانلود به طور همزمان اجرا میشوند، سرعت کل دانلود محدود میشود. این کار در YUM امکانپذیر نبود زیرا فرایندهای دانلودکننده در پروسههای متفاوتی اجرا میشدند.
گزینه پیکربندی INSTALLONLYPKGS (INSTALLONLYPKGS CONFIG OPTION)
در مقایسه با YUM، ابزار DNF مقادیر فهرستشده از گزینه پیکربندی installonlypkgs را به مقادیر پیشفرض DNF الحاق (append) میکند، در حالی که YUM مقادیر پیشفرض را با مقادیر این گزینه بازنویسی و جایگزین میکند.
استفاده از فایلهای DELTA RPM (THE USAGE OF DELTA RPM FILES)
گزینه بولی deltarpm مشخص میکند که آیا از فایلهای دلتا آرپیام (delta RPM) استفاده شود یا خیر. در مقایسه با YUM، ابزار DNF از گزینه deltarpm_percentage پشتیبانی نمیکند و در عوض مقدار بهینهای از نسبت DRPM/RPM را انتخاب میکند تا تصمیم بگیرد آیا استفاده از deltarpm در شرایط مشخصشده منطقی است یا خیر.
مدیریت فایلهای SRPM. و بستههای ناموجود (HANDLING .SRPM FILES AND NON-EXISTENT PACKAGES)
اگر دستوری اجرا شود که درخواست عملیات نصب روی یک فایل محلی .srpm را داشته باشد، DNF با خطا زودتر متوقف خواهد شد:
$ dnf install fdn-0.4.17-1.fc20.src.rpm tour-4-6.noarch.rpm Error: Will not install a source rpm package (fdn-0.4.17-1.fc20.src).
همین موضوع برای مشخصات بستههایی که با هیچ بسته موجودی مطابقت ندارند نیز صدق میکند.
ابزار YUM در این حالت تنها یک هشدار صادر کرده و به نصب بسته "tour" ادامه میدهد. منطق پشت این رفتار در DNF این است که یک برنامه در صورتی که نتواند دستور خط فرمان را بهطور کامل اجرا کند، باید با خطا متوقف شود.
ارتقای بسته دانلودی/نصبی به بستهای که آن را منسوخ میکند (PROMOTING PACKAGE TO INSTALL TO A PACKAGE THAT OBSOLETES IT)
اگر بسته Y بسته X را منسوخ (obsolete) کند، DNF به طور جادویی درخواست نصب بسته X را به نصب بسته Y تغییر نمیدهد. ابزار YUM در صورت فعال بودن گزینه پیکربندی obsoletes این کار را انجام میدهد، اما این رفتار به درستی مستند نشده و میتواند آسیبرسان باشد.
گزارش باگ مرتبط در فدورا به شماره 1096506 https://bugzilla.redhat.com/show_bug.cgi?id=1096506 و دستورالعملهای تغییر نام و منسوخسازی بستهها در فدورا را ببینید http://fedoraproject.org/wiki/Upgrade_paths_%E2%80%94_renaming_or_splitting_packages.
رفتار گزینه INSTALLROOT-- (BEHAVIOR OF --INSTALLROOT OPTION)
ابزار DNF رفتار قابل پیشبینیتری برای installroot ارائه میدهد. DNF مسیر را نسبت به گزینه خط فرمان --config متفاوت مدیریت میکند، جایی که این مسیر همیشه وابسته به سیستم میزبان (host) است (YUM این مسیر را با installroot ترکیب میکرد). مدیریت Reposdir نیز اندکی متفاوت است؛ اگر یکی از مسیرهای reposdirs در داخل installroot وجود داشته باشد، آنگاه مخازن دقیقاً از installroot دریافت میشوند (YUM هر مسیر را از reposdir به طور جداگانه بررسی میکرد و در صورت وجود، از مسیر installroot استفاده میکرد). توضیحات تفصیلی مربوط به گزینه --installroot <#installroot-label> را ببینید.
اعلان متفاوت پس از جدول تراکنش (DIFFERENT PROMPT AFTER TRANSACTION TABLE)
ابزار DNF پس از نمایش جدول تراکنش قابلیت دانلود را ارائه نمیدهد. این ابزار فقط از کاربر میپرسد که آیا تراکنش ادامه یابد یا خیر. اگر فردی بخواهد بستهها را دانلود کند، میتواند از دستور 'download' استفاده کند.
دستور LIST تمام گزینههای موجود در مخازن را نشان میدهد (LIST COMMAND SHOWS ALL REPO ALTERNATIVES)
ابزار DNF تمام بستهها را از تمام مخازن فهرست میکند، به این معنی که ممکن است نام بستههای تکراری (با نام مخزن متفاوت) وجود داشته باشد. این به منظور فراهم کردن امکان انتخاب مخزن دلخواه برای کاربران است.
حذف زیردستورهای YUM-LANGPACKS (YUM-LANGPACKS SUBCOMMANDS HAVE BEEN REMOVED)
ترجمهها به بخشی از هسته اصلی DNF تبدیل شدهاند و دیگر نیازی به مدیریت بستههای زبان به صورت جداگانه نیست.
زیردستورهای زیر حذف شدهاند:
- langavailable
- langinstall
- langremove
- langlist
- langinfo
زیردستورهای LIST و INFO در DNF HISTORY در صورت عدم یافتن تراکنش مقدار 0 برمیگردانند (DNF HISTORY SUBCOMMANDS LIST AND INFO RETURN 0 WHEN TRANSACTIONS NOT FOUND)
دستورات dnf history list و dnf history info در DNF زمانی که نتوانند تراکنشهایی را برای بسته مشخصشده پیدا کنند، وضعیت خروج صفر (zero exit status) بازمیگردانند.
این رفتار متفاوت از دستورات معادل در YUM یعنی yum history package-list و yum history list است که هر دو در صورت عدم یافتن تراکنش برای بسته مشخصشده، وضعیت خروج غیرصفر بازمیگردانند.
| ابزار اصلی YUM | دستور/گزینه DNF | بسته |
| yum check | dnf repoquery <#repoquery-command-label> --unsatisfied | dnf |
| yum-langpacks | dnf | |
| yum-plugin-aliases | dnf alias <#alias-command-label> | dnf |
| yum-plugin-auto-update-debug-info | گزینه در debuginfo-install.conf | dnf-plugins-core |
| yum-plugin-changelog | dnf-plugins-core | |
| yum-plugin-copr | dnf copr https://dnf-plugins-core.readthedocs.io/en/latest/copr.html | dnf-plugins-core |
| yum-plugin-fastestmirror | گزینه fastestmirror در dnf.conf https://dnf.readthedocs.io/en/latest/conf_ref.html | dnf |
| yum-plugin-fs-snapshot | dnf-plugins-extras-snapper | |
| yum-plugin-local | dnf-plugins-core | |
| yum-plugin-merge-conf | dnf-plugins-extras-rpmconf | |
| yum-plugin-post-transaction-actions | dnf-plugins-core | |
| yum-plugin-priorities | گزینه priority در dnf.conf https://dnf.readthedocs.io/en/latest/conf_ref.html | dnf |
| yum-plugin-remove-with-leaves | dnf autoremove <#autoremove-command-label> | dnf |
| yum-plugin-show-leaves | dnf-plugins-core | |
| yum-plugin-tmprepo | گزینه --repofrompath | dnf |
| yum-plugin-tsflags | گزینه tsflags در dnf.conf https://dnf.readthedocs.io/en/latest/conf_ref.html | dnf |
| yum-plugin-versionlock | python3-dnf-plugin-versionlock | |
| yum-rhn-plugin | dnf-plugin-spacewalk |
پلاگینهایی که هنوز منتقل (پورت) نشدهاند:
yum-plugin-filter-data, yum-plugin-keys, yum-plugin-list-data, yum-plugin-protectbase, yum-plugin-ps, yum-plugin-puppetverify, yum-plugin-refresh-updatesd, yum-plugin-rpm-warm-cache, yum-plugin-upgrade-helper, yum-plugin-verify
اگر به قابلیت خاصی نیاز دارید، میتوانید یک درخواست ویژگی جدید (RFE) https://github.com/rpm-software-management/dnf/wiki/Bug-Reporting#new-feature-request ثبت کنید.
تمامی ابزارهای پورتشده YUM اکنون به عنوان پلاگینهای DNF پیادهسازی شدهاند.
| ابزار اصلی YUM | دستور جدید DNF | بسته |
| debuginfo-install | dnf debuginfo-install https://dnf-plugins-core.readthedocs.io/en/latest/debuginfo-install.html | dnf-plugins-core |
| find-repos-of-install | dnf list installed https://dnf.readthedocs.io/en/latest/command_ref.html | dnf |
| needs-restarting | dnf tracer https://dnf-plugins-extras.readthedocs.io/en/latest/tracer.html | dnf-plugins-extras-tracer |
| package-cleanup | dnf list <#list-command-label>, dnf repoquery <#repoquery-command-label> | dnf, dnf-plugins-core |
| repoclosure | dnf repoclosure https://dnf-plugins-core.readthedocs.io/en/latest/repoclosure.html | dnf-plugins-extras-repoclosure |
| repodiff | dnf repodiff https://dnf-plugins-core.readthedocs.io/en/latest/repodiff.html | dnf-plugins-core |
| repo-graph | dnf repograph https://dnf-plugins-core.readthedocs.io/en/latest/repograph.html | dnf-plugins-extras-repograph |
| repomanage | dnf repomanage https://dnf-plugins-core.readthedocs.io/en/latest/repomanage.html | dnf-plugins-extras-repomanage |
| repoquery | dnf repoquery <#repoquery-command-label> | dnf |
| reposync | dnf reposync https://dnf-plugins-core.readthedocs.io/en/latest/reposync.html | dnf-plugins-core |
| repotrack | dnf download https://dnf-plugins-core.readthedocs.io/en/latest/download.html --resolve --alldeps | dnf-plugins-core |
| yum-builddep | dnf builddep https://dnf-plugins-core.readthedocs.io/en/latest/builddep.html | dnf-plugins-core |
| yum-config-manager | dnf config-manager https://dnf-plugins-core.readthedocs.io/en/latest/config_manager.html | dnf-plugins-core |
| yum-debug-dump | dnf debug-dump https://dnf-plugins-core.readthedocs.io/en/latest/debug.html | dnf-plugins-extras-debug |
| yum-debug-restore | dnf debug-restore https://dnf-plugins-core.readthedocs.io/en/latest/debug.html | dnf-plugins-extras-debug |
| yumdownloader | dnf download https://dnf-plugins-core.readthedocs.io/en/latest/download.html | dnf-plugins-core |
جدول تفصیلی جایگزینی برای package-cleanup:
| package-cleanup --dupes | dnf repoquery --duplicates |
| package-cleanup --leaves | dnf repoquery --unneeded |
| package-cleanup --orphans | dnf repoquery --extras |
| package-cleanup --problems | dnf repoquery --unsatisfied |
| package-cleanup --cleandupes | dnf remove --duplicates |
| package-cleanup --oldkernels | dnf remove --oldinstallonly |
| package-cleanup --oldkernels --keep=2 | dnf remove $(dnf repoquery --installonly --latest-limit=-2) |
دستورهای YUM-UPDATEONBOOT و YUM-CRON (YUM-UPDATEONBOOT AND YUM-CRON)
ابزار DNF جایگزین مستقیمی برای دستورات yum-updateonboot و yum-cron ندارد. با این حال، نتیجه مشابه را میتوان با استفاده از دستور dnf automatic به دست آورد (به DNF Automatic <> مراجعه کنید).
میتوانید از میانبر زیر استفاده کنید:
$ systemctl enable --now dnf-automatic-install.timer
یا گزینه apply_updates را در فایل /etc/dnf/automatic.conf روی True تنظیم کرده و از واحد تایمر عمومی استفاده کنید:
$ systemctl enable --now dnf-automatic.timer
تایمر در هر دو حالت، ۱ ساعت پس از بوت شدن سیستم فعال شده و سپس بهطور تکرارشونده هر ۲۴ ساعت یکبار اجرا میشود. همچنین یک تاخیر تصادفی به مدت ۵ دقیقه روی این تایمرها تنظیم شده است. این مقادیر را میتوان از طریق فایلهای پیکربندی dnf-automatic*.timer واقع در دایرکتوری /usr/lib/systemd/system/ تغییر داد.
ابزارهایی که هنوز منتقل (پورت) نشدهاند (UTILITIES THAT HAVE NOT BEEN PORTED YET)
repo-rss, show-changed-rco, show-installed, verifytree, yum-groups-manager
به بخش پرسشهای متداول (FAQ) https://dnf.readthedocs.io/en/latest/user_faq.html درباره مهاجرت از YUM به DNF نگاهی بیندازید. اگر به قابلیتی نیاز دارید که هنوز وجود ندارد، میتوانید یک درخواست ویژگی جدید (RFE) https://github.com/rpm-software-management/dnf/wiki/Bug-Reporting#new-feature-request ثبت کنید.
نویسنده (AUTHOR)
فایل AUTHORS را در توزیع کد منبع DNF ببینید.
حق نشر (COPYRIGHT)
2012-2020, Red Hat, تحت مجوز GPLv2+
| December 17, 2025 | 4.24.0 |