DNF مدیریت بسته ای میباشد که بوسیله آن میتوان بسته های نرم افزاری را نصب, حذف, بروزرسانی , و در کل مدیریت کرد.DNF از YUM که یک مدیر بسته میباشد fork شده است. گفتنی است که DNF از فدورا ۱۸ در مخزن های فدورا وجود داشت و قابل استفاده بود که با انتشار فدورا۲۲ مدیر بسته پیش فرض و جایگزین YUM شد. کار با DNF به همان سادگی کار با YUM میباشد و بیشتر دستورها یکسان هستند و تنها کافیست به جای دستور YUM از دستور DNF استفاده کنید. برای نصب DNF کافیست تا این دستور را اجرا کنید, البته همانطور که گفته شد برای نسخه های فدورا ۲۲ به بعد نیازی به نصب نیست.
sudo yum install dnf
برای مشاهده نسخه dnf نصب شده بر روی سیستم خود از دستور زیر استفاده کنید:
-> $dnf --version 2.7.5 Installed: dnf-0:2.7.5-2.fc27.noarch at Sun Dec 10 17:28:28 2017 Built : Fedora Project at Wed Nov 29 09:48:50 2017 Installed: rpm-0:4.14.1-1.fc27.x86_64 at Fri Feb 9 07:29:04 2018 Built : Fedora Project at Thu Feb 1 11:45:18 2018
در ادامه مهمترین و پرکاربردترین دستورات dnf توضیح داده خواهد شد. دستور کلی استفاده از dnf بصورت زیر میباشد:
dnf [options]<command>[<args>...]
از گزینه repolist با دستور dnf استفاده میشود
dnf repolist
خروجی دستور بالا:
-> $dnf repolist Last metadata expiration check: 0:56:59 ago on Fri Apr 6 15:40:51 2018. repo id repo name status MEGAsync MEGAsync 18 code Visual Studio Code 31 *fedora Fedora 27 - x86_64 54801 *rpmfusion-free RPM Fusion for Fedora 27 - Free 574 *rpmfusion-free-updates RPM Fusion for Fedora 27 - Free - Updates 221 *rpmfusion-nonfree RPM Fusion for Fedora 27 - Nonfree 205 *rpmfusion-nonfree-updates RPM Fusion for Fedora 27 - Nonfree - Updates 68 *updates Fedora 27 - x86_64 - Updates 13224
از دستور زیر استفاده میشود
dnf repolist all
خروجی دستور بالا:
-> $dnf repolist all Last metadata expiration check: 0:59:24 ago on Fri Apr 6 15:40:51 2018. repo id repo name status MEGAsync MEGAsync enabled: 18 code Visual Studio Code enabled: 31 *fedora Fedora 27 - x86_64 enabled: 54801 fedora-cisco-openh264 Fedora 27 openh264 (From Cisco) - x86_64 disabled fedora-cisco-openh264-debuginfo Fedora 27 openh264 (From Cisco) - x86_64 - Debug disabled fedora-debuginfo Fedora 27 - x86_64 - Debug disabled fedora-source Fedora 27 - Source disabled *rpmfusion-free RPM Fusion for Fedora 27 - Free enabled: 574 rpmfusion-free-debuginfo RPM Fusion for Fedora 27 - Free - Debug disabled rpmfusion-free-source RPM Fusion for Fedora 27 - Free - Source disabled *rpmfusion-free-updates RPM Fusion for Fedora 27 - Free - Updates enabled: 221 rpmfusion-free-updates-debuginfo RPM Fusion for Fedora 27 - Free - Updates Debug disabled rpmfusion-free-updates-source RPM Fusion for Fedora 27 - Free - Updates Source disabled rpmfusion-free-updates-testing RPM Fusion for Fedora 27 - Free - Test Updates disabled rpmfusion-free-updates-testing-debuginfo RPM Fusion for Fedora 27 - Free - Test Updates Debug disabled rpmfusion-free-updates-testing-source RPM Fusion for Fedora 27 - Free - Test Updates Source disabled *rpmfusion-nonfree RPM Fusion for Fedora 27 - Nonfree enabled: 205 rpmfusion-nonfree-debuginfo RPM Fusion for Fedora 27 - Nonfree - Debug disabled rpmfusion-nonfree-source RPM Fusion for Fedora 27 - Nonfree - Source disabled *rpmfusion-nonfree-updates RPM Fusion for Fedora 27 - Nonfree - Updates enabled: 68 rpmfusion-nonfree-updates-debuginfo RPM Fusion for Fedora 27 - Nonfree - Updates Debug disabled rpmfusion-nonfree-updates-source RPM Fusion for Fedora 27 - Nonfree - Updates Source disabled rpmfusion-nonfree-updates-testing RPM Fusion for Fedora 27 - Nonfree - Test Updates disabled rpmfusion-nonfree-updates-testing-debuginfo RPM Fusion for Fedora 27 - Nonfree - Test Updates Debug disabled rpmfusion-nonfree-updates-testing-source RPM Fusion for Fedora 27 - Nonfree - Test Updates Source disabled *updates Fedora 27 - x86_64 - Updates enabled: 13224 updates-debuginfo Fedora 27 - x86_64 - Updates - Debug disabled updates-source Fedora 27 - Updates Source disabled updates-testing Fedora 27 - x86_64 - Test Updates disabled updates-testing-debuginfo Fedora 27 - x86_64 - Test Updates Debug disabled updates-testing-source Fedora 27 - Test Updates Source disabled
از دستور زیر استفاده میکنیم
dnf install <package name>
dnf install -y <package name>
برای حذف یک بسته از این دستور استفاده میشود
dnf remove <package name>
dnf list
خروجی دستور بالا:
zxing-javase.noarch 3.2.1-7.fc28 fedora zxing-parent.noarch 3.2.1-7.fc28 fedora zynaddsubfx.x86_64 3.0.2-2.fc28 fedora zynaddsubfx-common.noarch 3.0.2-2.fc28 fedora zynaddsubfx-dssi.x86_64 3.0.2-2.fc28 fedora zynaddsubfx-lv2.x86_64 3.0.2-2.fc28 fedora zynaddsubfx-vst.x86_64 3.0.2-2.fc28 fedora zynjacku.x86_64 6-19.fc28 fedora zypp-common.noarch 17.2.0-1.fc28 fedora zypp-plugins.noarch 17.2.0-1.fc28 fedora zypp-tools.x86_64 17.2.0-1.fc28 fedora zypper.x86_64 1.14.3-1.fc28 fedora zypper-aptitude.noarch 1.14.3-1.fc28 fedora zypper-log.noarch 1.14.3-1.fc28 fedora zziplib.i686 0.13.68-1.fc28 fedora zziplib.x86_64 0.13.68-1.fc28 fedora zziplib-devel.i686 0.13.68-1.fc28 fedora zziplib-devel.x86_64 0.13.68-1.fc28 fedora zziplib-utils.x86_64 0.13.68-1.fc28 fedora zzuf.x86_64
dnf list installed
dnf list available
dnf grouplist
خروجی دستور بالا:
-> $dnf grouplist Last metadata expiration check: 0:00:00 ago on Fri Jul 6 16:09:58 2018. Available Environment Groups: Fedora Custom Operating System Minimal Install Fedora Server Edition Fedora Workstation Fedora Cloud Server KDE Plasma Workspaces Xfce Desktop LXDE Desktop LXQt Desktop Cinnamon Desktop MATE Desktop Sugar Desktop Environment Development and Creative Workstation Web Server Infrastructure Server Basic Desktop Installed Groups: Administration Tools Fonts Hardware Support Available Groups: 3D Printing Ansible node Audio Production Authoring and Publishing Books and Guides C Development Tools and Libraries Cloud Infrastructure Cloud Management Tools Compiz Container Management D Development Tools and Libraries Design Suite Development Tools Domain Membership Fedora Eclipse Editors Educational Software Electronic Lab Engineering and Scientific FreeIPA Server Headless Management LibreOffice MATE Applications Medical Applications Milkymist Network Servers Office/Productivity Python Classroom Python Science Robotics RPM Development Tools Security Lab Text-based Internet Window Managers GNOME Desktop Environment Graphical Internet KDE (K Desktop Environment) Games and Entertainment Sound and Video System Tools
dnf groupinstall <group-name>
dnf groupremove <group-name>
dnf --enablerepor=epel install phpadmin
dnf distro-sync
dnf reinstall <package-name>
dnf downgrade <package-name>
dnf search <package-name>
برای اینکه ببینید که یک مسیر فایل مشخص به چه بسته هایی بر روی سیستم تان تعلق دارد میتوانید از گزینه provides
دستور dnf استفاده نمایید برای مثال در اینجا قصد داریم بدانیم نام بسته که از فایل bin/bash/
استفاده میکند
-> $dnf provides /bin/bash Last metadata expiration check: 0:20:18 ago on Fri Jul 6 16:09:58 2018. bash-4.4.23-1.fc28.x86_64 : The GNU Bourne Again shell Repo : @System Matched from: Provide : /bin/bash bash-4.4.23-1.fc28.x86_64 : The GNU Bourne Again shell Repo : updates Matched from: Provide : /bin/bash bash-4.4.19-2.fc28.x86_64 : The GNU Bourne Again shell Repo : fedora Matched from: Provide : /bin/bash
dnf update
dnf check-update
dnf update <package-name>
dnf history
dnf info <package-name>
dnf install fedora-repos-modular
dnf module list
خروجی دستور بالا:
-> $dnf module list Last metadata expiration check: 0:31:55 ago on Fri Jul 6 16:09:58 2018. Fedora Modular 28 - x86_64 Name Stream Version Profiles reviewboard 2.5 [d] 20180206144254 default, server Fedora Modular 28 - x86_64 - Updates Name Stream Version Profiles ant 1.10 20180411122322 default avocado latest 20180614184418 default, minimal container-tools 2017.0 20180313063358 default cri-o 2017.0 20180313134242 default django 1.6 20180409143454 default, python2_development docker 2017.0 20180314032736 default flatpak-runtime f28 20180307202408 buildroot, runtime, ... gimp 2.10 [e] 20180523092110 default [i], devel golang 1.10 20180327174614 default golang-ecosystem 2017.0 20180312141905 default hub pre-release 20180613180542 default mariadb 10.1 20180419160707 client, default, ... maven 3.5 20180411112402 default mysql 5.6 20180507203856 client, default, ... mysql 8.0 20180507133324 client, default, ... nodejs 10 20180510163433 default, development, ... nodejs 6 20180614180859 default, development, ... nodejs 8 20180604172846 default, development, ... nodejs 9 20180614205456 default, development, ... postgresql 9.6 20180429200004 client, default, ... reviewboard 3.0 20180607124319 default, server squid 4.0 20180604145326 default Hint: [d]efault, [e]nabled, [i]nstalled, [l]ocked
مثلا ما میخواهیم nodejs
نسخه ۶
را نصب کنیم
dnf module install nodejs:6/default
اول ماژول هارو فعال و بعد اقدام به نصب میکنیم
dnf dnf module enable nodejs:6 dnf install nodejs
در دستورات زیر ما میرورهای آمریکا و اروپا رو اضافه میکنیم پس به ترتیب دستورات زیر را در ترمینال وارد کنید
sudo -i sed "s|=\$basearch$|=\$basearch\&country=US,DE,CA,FR,global|" /etc/yum.repos.d/* -i
به آدرس زیر مراجعه کنید
cd /etc/yum.repos.d/
مخزن مورد نظر خودتون رو با دستور rm حذف کنید
sudo rm repo_name
systemctl disable dnf-makecache.timer
با تنظیمات پیش رو میتوانید سرعت میرورهای را افزایش دهید ۳ روش برای افزایش سرعت وجود داره که من در ادامه به اون میپردازم
مطمئنن اگر که منوال پیج dnf.conf
و مشاهده کرده باشید با آپشن fastestmirror
مواجه شده اید وظیفه این آپشن انتخاب سریع ترین میرور برای شماست که شامل ۲ متغیر ورودی از نوع boolean است true و false
در صورتی که true انتخاب شده باشد به معنی روشن بودن این آپشن و در صورت استفاده از false یعنی این آپشن غیرفعال است به عنوان مثال آپشن در این حالت فعال است
fastestmirror=true
قرار دادن کشورها در اولویت به این معنی که مثلا شما بعضی از کشورهایی که میرورهای سریع دارند را به اولویت سرعت در لیست قرار میدهید که در صورت افت سرعت سریعا به میرور بعدی منتقل شوید برای این منظور باید دستور زیر را استفاده کنید که در لیست زیر ما از کشورهای فرانسه - آمریکا و … استفاده کردیم
برای انجام این مرحله ریپوزیتوری های درون etc/yum.repos.d/
ویرایش خواهد شد
sed "s|=\$basearch$|=\$basearch\&country=US,DE,CA,FR,global|" /etc/yum.repos.d/* -i
در این روش کاربر خودش میرور را انتخاب و در مخازن etc/yum.repos.d/
قرار میدهد همانطور که بالاتر هم ذکر کردیم تمام مخازن در آدرس etc/yum.repos.d/
قرار دارند برای این منظور باید ۳ مرحله رو انجام بدیم
برای این منظور تنها کافی است به آدرس زیر مراجعه بکنید
https://admin.fedoraproject.org/mirrormanager/mirrors/Fedora/29/x86_64
با استفاده از دستور ping اقدام به بررسی میرورها میکنیم و در صورت داشتن سریع ترین پاسخگویی همان میرور را انتخاب میکنیم بر فرض مثال من تصمیم دارم سایت linuxfedora را از لحاظ پینگ بررسی بکنم برای این منظور من دستور زیر را در ترمینال تایپ و اینتر میزنم
ping linuxfedora.ir
خروجی چیزی مشابه زیر میباشد
PING linuxfedora.ir (185.49.84.27) 56(84) bytes of data. 64 bytes from sepehr.mrservers.net (185.49.84.27): icmp_seq=1 ttl=54 time=47.2 ms 64 bytes from sepehr.mrservers.net (185.49.84.27): icmp_seq=2 ttl=54 time=52.7 ms 64 bytes from sepehr.mrservers.net (185.49.84.27): icmp_seq=3 ttl=54 time=49.8 ms 64 bytes from sepehr.mrservers.net (185.49.84.27): icmp_seq=4 ttl=54 time=45.8 ms 64 bytes from sepehr.mrservers.net (185.49.84.27): icmp_seq=5 ttl=54 time=46.1 ms
در گزارش فوق ما فقط به بخش time نیاز داریم که به ما مقدار زمان پاسخ از سرور رو نمایش میده که برای من بین 46 الی ۵۲ میلی ثانیه طول کشیده که سایت ما سرعت خوبی برای پاسخگویی دارد و شما هم باید میرورهارو به ترتیب بررسی و میروری که بالاترین سرعت را دارد انتخاب کنید
به مخزنی که قرار هست میرور را برای آن اعمال کنید مراحعه میکنید به عنوان مثال ما به میرور fedor.repo مراجعه میکنم بعد از مراجعه شما با دو آپشن مواجه خواهید شد metalink و baseurl که در ادامه به صورت کامل هر آپشن را توضیح خواهم داد
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
روش سوم دقیقا باید در همین بخش باید انجام شود و شما اگر میرور رو پیدا کرده اید باید در اینجا قرار دهید به مثال زیر دقت کنید میرور انتخابی ما آدرس زیر هست
http://fedora.inode.at/
پس علامت کامنت را بر میداریم # و آدرس را بعد از baseurl قرار میدهیم همانند مثال زیر
baseurl=http://fedora.inode.at/releases/29/Everything/x86_64/os/
هر مخزن آدرس baseurl آن متفاوت است پس حتما فراموش نکنید طبق baseurl آن که کامند می باشد از میرور آدرس را پیدا کنید
به همین راحتی میرور دلخواه خودمان را اضافه کردیم در صورت هرگونه سوال در ارتباط با موارد ذکر شده حتما در انجمن مرتبط به همین صفحه سوالات خود را بپرسید
در بسیاری از موارد اتفاق افتاده که ما موقع اتصال به میرور و یا اتصال مستقیم به مخزن دچار مشکل شدیم مثلا: به خاطر سرعت پایین مون یا پهنای باند ضعیف مون موقع اتصال به میرور دچار ارور timeout شدیم و اتصال مون قطع شده و به میرور جدید انتقال پیدا کردیم و باعث شده که دانلود از سر گرفته بشه یا فایل مورد نظر ما خراب بشه یا هزاران مسئله دیگه برای این موضوع ۲ تا راه حل وجود دارد
که خوب در بسیاری از موارد ما به خاطر هزینه های بالا توان خرید پهنای باند بهتر و اینترنت بهتر و نداریم
به لطف متخصص های خوبی که در شرکت فدورا وجود داره و به لطف همکاری های شرکت ردهت اینترپرایس با فدورا مقدار زیادی دستور العمل های خیلی خوبی در dnf و yum میتونیم مشاهده کنیم که با خوندن man dnf.conf یا man yum.conf میتونیم به این اطلاعات با ارزش دست پیدا کنیم
خوب برای این کار در توزیع فدورا و پکیج منیجر dnf به این ادرس میرویم etc/dnf/dnf.con/
اضافه میکنیم بعد از مراجعه به آدرس فوق دستور زیر را به آن اضافه میکنیم
timeout=440
برای yum در centos نیز به مسیر etc/yum.conf/
مراجعه میکنیم و خط بالا رو در أن قرار دهید.
دستور بالا به این معناست که شما به dnf میگید که به مدت زمان( 440 ثانیه ) اتصال خودت رو حفظ کن در هر صورت باز به دانلود کردن ادامه بده و کاربردش برای مواردی که سرعت دانلود ما پایین هست و یا پهنای باند خوبی نداریم بسیار بدرد بخوره.
ابتدا نیاز است که بسته dnf-automatic را نصب کنید :
sudo dnf install dnf-automatic
بعد از نصب بسته ، فایل کانفیگی به ادرس etc/dnf/
تحت عنوان automatic.conf اضافه خواهد شد. با دسترسی root این فایل را باز کنید :
sudo vim/etc/dnf/automatic.conf
شما باید ۳ متغیر را در این فایل به شکل زیر تغییر دهید :
upgrade_type = security download_updates = yes apply_updates = yes
سپس فایل را save کنید و خارج شوید. برای این که این فعالیت اتوماتیک صورت گیرد باید سرویس dnf-automatic.timer
را فعال نمایید.
sudo systemctl enable --now dnf-automatic.timer
برای بررسی این که همه چیز درست کانفیگ شده است دستور dnf-automatic را وارد کنید.
sudo dnf-automatic