คู่มือฉบับย่อสำหรับ DNF Package Manager
เผยแพร่แล้ว: 2020-06-06DNF เป็นระบบจัดการแพ็คเกจเริ่มต้นบนลีนุกซ์รุ่นที่ใช้ RPM ส่วนใหญ่ในขณะนี้
DNF ดาวน์โหลดแพ็กเกจจากที่เก็บ ติดตั้ง ถอนการติดตั้ง และอัพเดตแพ็กเกจ ดำเนินการแก้ไขปัญหาการพึ่งพาอัตโนมัติสำหรับแพ็คเกจที่คุณกำลังติดตั้ง อัพเดต หรือลบและติดตั้งแพ็คเกจทั้งหมดที่จำเป็นเพื่อให้เป็นไปตามข้อกำหนดการพึ่งพา
บน Fedora มันเป็นตัวจัดการแพ็คเกจเริ่มต้นตั้งแต่ Fedora 22 สำหรับ RHEL 8.x ตอนนี้มันเป็นตัวจัดการแพ็คเกจเริ่มต้น
DNF ให้การจัดการแพ็คเกจที่ปลอดภัยโดยเปิดใช้งานการตรวจสอบลายเซ็น GPG บนแพ็คเกจที่ลงนาม GPG DNF จะไม่ติดตั้งแพ็คเกจใด ๆ ที่ไม่ได้ลงนามด้วยคีย์ที่ถูกต้องสำหรับที่เก็บนั้น
สำหรับความเข้ากันได้ย้อนหลัง RHEL 8.x มีคำสั่ง YUM ด้วย แม้ว่าจะเป็นลิงก์ไปยัง DNF
ทำไมต้อง DNF?
DNF หรือ Danified YUM คือ YUM รุ่นต่อไป เมื่อเปรียบเทียบกับ YUM แล้ว DNF มีการใช้หน่วยความจำที่ดีกว่า การจัดการการพึ่งพาที่ได้รับการปรับปรุง และความสามารถในการเรียกใช้โดยใช้ทั้ง Python 2 และ Python 3
การจัดการแพ็คเกจด้วย DNF
คุณต้องมีสิทธิ์ superuser เพื่อใช้คำสั่ง DNF เพื่อติดตั้ง อัพเดต หรือลบแพ็คเกจ ต่อไปนี้เป็นชุดคำสั่ง DNF ที่ใช้บ่อยโดยผู้ดูแลระบบ
ค้นหาแพ็คเกจ
หากต้องการค้นหาแพ็คเกจที่ติดตั้งหรือพร้อมใช้งานในที่เก็บทั้งหมด ให้ ใช้
$ sudo dnf search <em>package_name</em>
ตัวอย่างการค้นหาแพ็คเกจ Nmap:
$ sudo dnf search nmap
Last metadata expiration check: 0:05:14 ago on Tue 02 Jun 2020 08:38:09 PM UTC. ==================================== Name Exactly Matched: nmap ===================================== nmap.x86_64 : Network exploration tool and security scanner =================================== Name & Summary Matched: nmap ==================================== nmap-ncat.x86_64 : Nmap's Netcat replacement
รายการแพ็คเกจ
หากต้องการดูรายการแพ็คเกจที่ติดตั้งและพร้อมใช้งานทั้งหมด:
$ sudo dnf list all
Installed Packages GConf2.x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-tui.x86_64 1:1.22.8-4.el8 ...
ในการแสดงรายการแพ็คเกจที่ติดตั้งทั้งหมด:
$ sudo dnf list installed
Installed Packages NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-tui.x86_64 1:1.22.8-4.el8 @anaconda PackageKit.x86_64 1.1.12-4.el8 @AppStream PackageKit-glib.x86_64 1.1.12-4.el8 @AppStream WALinuxAgent.noarch 2.2.38-1.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms abattis-cantarell-fonts.noarch 0.0.25-4.el8 @AppStream acl.x86_64 2.2.53-1.el8 @anaconda ...
ในการแสดงรายการแพ็คเกจที่มีทั้งหมด:
$ sudo dnf list available
Last metadata expiration check: 1:15:10 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages CUnit.i686 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms CUnit.x86_64 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms CUnit-devel.i686 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms CUnit-devel.x86_64 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms ...
ตัวอย่างเช่น หากต้องการแสดงรายการแพ็คเกจ MySQL ทั้งหมดที่มีอยู่:
$ sudo dnf list available "mysql*"
Last metadata expiration check: 1:17:04 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages mysql.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-common.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-devel.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-errmsg.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-libs.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-server.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-test.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
แสดงข้อมูลแพ็คเกจ
ในการแสดงข้อมูลเกี่ยวกับแพ็คเกจ:
$ sudo dnf info <em>package_name </em>
ตัวอย่างเช่น หากต้องการแสดงข้อมูลเกี่ยวกับเซิร์ฟเวอร์ httpd:
$ sudo dnf info httpd
Last metadata expiration check: 0:15:04 ago on Mon 01 Jun 2020 11:23:11 PM UTC. Available Packages Name : httpd Version : 2.4.37 Release : 21.module+el8.2.0+5008+cca404a3 Architecture : x86_64 Size : 1.4 M Source : httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.src.rpm Repository : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Summary : Apache HTTP Server URL : https://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.
การติดตั้งแพ็คเกจ
การติดตั้งแพ็คเกจเดียว
ในการติดตั้งแพ็คเกจเดียวและการพึ่งพาที่ไม่ได้ติดตั้งทั้งหมด:
$ sudo dnf install package_name
ตัวอย่างเช่น ในการติดตั้ง Nginx:
$ sudo dnf install nginx
Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k Installing dependencies: gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k jbigkit-libs x86_64 2.1-14.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 55 k ..
สิ่งนี้จะติดตั้ง Nginx และข้อกำหนดการพึ่งพาที่ไม่ได้ติดตั้งทั้งหมด
การติดตั้งหลายแพ็คเกจ
คุณยังสามารถติดตั้งหลายแพ็คเกจโดยเพิ่มชื่อแพ็คเกจในคำสั่งนี้ ตัวอย่างเช่น หากต้องการติดตั้งเซิร์ฟเวอร์ Nginx, PHP & MySQL ให้ป้อน:
$ sudo dnf install nginx php mysql-server
Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: mysql-server x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms 22 M nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k php x86_64 7.2.24-1.module+el8.2.0+4601+7c76a223 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.5 M Installing dependencies: apr x86_64 1.6.3-9.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 125 k apr-util x86_64 1.6.1-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 105 k gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k httpd x86_64 2.4.37-21.module+el8.2.0+5008+cca404a3 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.4 M httpd-filesystem noarch 2.4.37-21.module+el8.2.0+5008+cca404a3 ...
การติดตั้งแพ็คเกจด้วยชื่อไฟล์ไบนารี
หากคุณทราบชื่อไฟล์ไบนารีที่จะติดตั้ง แต่ไม่ทราบชื่อแพ็คเกจ นั่นก็เพียงพอที่จะติดตั้งแพ็คเกจที่เกี่ยวข้องได้

ตัวอย่างเช่น หากคุณป้อน:
$ sudo dnf install /usr/sbin/named
Last metadata expiration check: 1:21:25 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Installing: bind x86_64 32:9.11.13-5.el8_2 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 2.1 M Transaction Summary ===================================================================================================== Install 1 Package Total download size: 2.1 M Installed size: 4.5 M Is this ok [y/N]:
DNF ค้นหาและพบแพ็คเกจที่มีชื่อ /usr/sbin/
และแจ้งให้คุณติดตั้ง
ค้นหาแพ็คเกจที่เป็นเจ้าของไฟล์
หากคุณทราบชื่อไฟล์และต้องการค้นหาแพ็คเกจที่ให้บริการ (ติดตั้งหรือไม่) ให้ใช้:
$ sudo dnf provides <em>file_name</em>
ตัวอย่างเช่น หากต้องการค้นหาว่าแพ็กเกจใดระบุชื่อ ไบนารีสำหรับเซิร์ฟเวอร์ DNS จะใช้:
$ sudo dnf provides named
Last metadata expiration check: 1:27:30 ago on Mon 01 Jun 2020 11:23:11 PM UTC. bind-32:9.11.4-16.P2.el8.x86_64 : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) : server Repo : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Matched from: Filename : /usr/sbin/named
การลบแพ็คเกจ
ในการลบแพ็คเกจ:
sudo dnf remove <em>package_name</em>
แต่โปรดระวัง DNF ไม่สามารถลบแพ็คเกจโดยไม่ลบแพ็คเกจที่ขึ้นอยู่กับมันด้วย หากต้องการลบแพ็คเกจ nmap ให้ใช้:
$ sudo dnf remove nmap Dependencies resolved. ===================================================================================================== Package Architecture Version Repository Size ===================================================================================================== Removing: nmap x86_64 2:7.70-5.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 24 M Transaction Summary ===================================================================================================== Remove 1 Package Freed space: 24 M Is this ok [y/N]:
การจัดการกลุ่มแพ็คเกจ
กลุ่มแพ็คเกจคือชุดของแพ็คเกจที่เกี่ยวข้องอย่างใกล้ชิดและให้บริการตามวัตถุประสงค์ทั่วไป การติดตั้งกลุ่มแพ็คเกจจะติดตั้งชุดของแพ็คเกจ ซึ่งช่วยประหยัดเวลาได้มาก
แสดงรายการกลุ่มแพ็คเกจทั้งหมด
ในการแสดงรายการกลุ่มแพ็คเกจทั้งหมด:
$ sudo dnf group list
Available Environment Groups: Server with GUI Server Workstation Custom Operating System Virtualization Host Installed Environment Groups: Minimal Install Installed Groups: Security Tools Container Management Available Groups: Legacy UNIX Compatibility Development Tools Scientific Support .NET Core Development Graphical Administration Tools Headless Management RPM Development Tools Network Servers System Tools Smart Card Support
แสดงรายการแพ็คเกจทั้งหมดในกลุ่ม
ในการแสดงรายการแพ็คเกจทั้งหมดในกลุ่ม:
$ sudo dnf group info <em>package_name</em>
ตัวอย่างเช่น หากต้องการดูแพ็คเกจในกลุ่ม Security Tools:
$ sudo dnf group info “security tools”
Group: Security Tools Description: Security tools for integrity and trust verification. Default Packages: scap-security-guide Optional Packages: aide hmaccalc openscap openscap-engine-sce openscap-utils scap-security-guide-doc scap-workbench tpm-quote-tools tpm-tools tpm2-tools trousers
การติดตั้งกลุ่มแพ็คเกจ
การติดตั้งกลุ่มจะติดตั้งแพ็คเกจทั้งหมดในกลุ่ม ในการติดตั้งกลุ่มแพ็คเกจให้ใช้:
sudo dnf group install <em>package_group_name</em>
ตัวอย่างเช่น ในการติดตั้งกลุ่ม "เซิร์ฟเวอร์เครือข่าย":
$ sudo dnf group install “Network Servers”
Last metadata expiration check: 1:40:14 ago on Wed 03 Jun 2020 05:53:11 PM UTC. Dependencies resolved. =========================================================================================== Package Architecture Version Repository Size =========================================================================================== Installing Groups: Network Servers Transaction Summary =========================================================================================== Is this ok [y/N]:
การลบกลุ่มแพ็คเกจ
ในการลบกลุ่มแพ็คเกจ:
sudo dnf remove <em>package_name</em>
ดังนั้น หากต้องการลบกลุ่มแพ็คเกจ "Security Tools":
$ sudo dnf group remove "security tools"
Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Removing: scap-security-guide noarch 0.1.48-7.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 182 M Removing unused dependencies: GConf2 x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 6.3 M libxslt x86_64 1.1.32-4.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 734 k openscap x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 58 M openscap-scanner x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 137 k xml-common noarch 0.6.3-50.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 78 k Removing Groups: Security Tools Transaction Summary ===================================================================================================== Remove 6 Packages Freed space: 247 M Is this ok [y/N]:
กำลังปรับปรุงแพ็คเกจ
อัพเดทแพ็คเกจทั้งหมด
ในการอัปเดตแพ็คเกจทั้งหมดและการพึ่งพาคุณสามารถใช้:
$ sudo dnf upgrade
Last metadata expiration check: 1:09:31 ago on Tue 02 Jun 2020 08:38:09 PM UTC. Dependencies resolved. Nothing to do. Complete!
ซึ่งจะติดตั้งการอัปเดตทั้งหมดที่สามารถติดตั้งได้ ทั้งการ อัปเกรด dnf และการอัปเดต dnf มีผลเหมือนกัน แต่แนะนำให้อัปเกรด dnf
การอัปเดตแพ็คเกจเดียว
หากต้องการอัพเดตแพ็คเกจเดียว ให้รัน:
$ sudo dnf upgrade package_name
ตัวอย่างเช่น หากต้องการอัพเดตแพ็คเกจไพธอน:
$ sudo dnf upgrade python
บทสรุป
การเรียนรู้ DNF สามารถให้รางวัลได้เนื่องจากมักเป็นวิธีที่เร็วที่สุดในการดำเนินงานด้านการดูแลระบบ หากสนใจที่จะเรียนรู้ RHEL 8 คุณสามารถดูหลักสูตร Udemy นี้