• 在Linux中用于RPM包管理的‘DNF‘命令


    DNF即Dandified YUM是用于基于RPM发行版的下一代包管理器。首先在Fedora 18中引入它,并且它已经在Fedora 22发行版中替代了YUM工具。DNF以改进YUM瓶颈为目标,即:性能、内存使用,依赖关系解析,速度以及大量其它原因。DNF使用RPM,libsolv和hawkey库进行包管理。虽然它没有在你能够yum,dnf和与yum一起使用它的CentOS和RHEL 7中预装。

    DNF的安装

    DNF没有在RHEL/CentOS7的默认仓库中。但Fedora 22发布时附带了官方实现的DNF。要在RHEL/CentOS系统上按照DNF,你需要首先安装和使能epel-release仓库。

    1. yum install epel-release
    2. yum install epel-release -y

    如果这对你无关紧要,你可以预yum一起使用"-y"来自动安装每样东西,而不要用户的干预。下一步,使用yum命令从epel-release仓库安装DNF包。

    yum install dnf

    1、检查DNF版本

    检查在你系统上安装的DNF版本。

    1. [root@instance-z6rhwz8d ~]# dnf --version
    2. 4.0.9
    3. Installed: dnf-0:4.0.9.2-2.el7_9.noarch at Tue 19 Jul 2022 12:41:29 PM CST
    4. Built : CentOS BuildSystem at Wed 07 Apr 2021 03:52:38 PM CST
    5. Installed: rpm-0:4.11.3-45.el7.x86_64 at Tue 26 Jan 2021 11:42:43 AM CST
    6. Built : CentOS BuildSystem <http://bugs.centos.org> at Wed 30 Sep 2020 05:30:03 PM CST

    2、列出使能的DNF仓库

    dnf命令的"repolist"选项,将显示你系统下所有使能的仓库。

    1. [root@instance-z6rhwz8d ~]# dnf repolist
    2. Extra Packages for Enterprise Linux 7 - x86_64 78 MB/s | 17 MB 00:00
    3. CentOS-7 - Base 58 MB/s | 10 MB 00:00
    4. CentOS-7 - Updates 59 MB/s | 20 MB 00:00
    5. CentOS-7 - Extras 11 MB/s | 331 kB 00:00
    6. repo id repo name status
    7. base CentOS-7 - Base 10,072
    8. epel Extra Packages for Enterprise Linux 7 - x86_64 13,757
    9. extras CentOS-7 - Extras 512
    10. updates CentOS-7 - Updates 4,050

    3、列出所有使能和禁用的DNF仓库

    选项"repolist all"将打印在你系统下所有使能/禁用的仓库。

    1. [root@instance-z6rhwz8d ~]# dnf repolist all
    2. Last metadata expiration check: 0:00:46 ago on Tue 19 Jul 2022 09:02:35 PM CST.
    3. repo id repo name status
    4. C7.0.1406-base CentOS-7.0.1406 - Base disabled
    5. ...
    6. C7.8.2003-updates CentOS-7.8.2003 - Updates disabled
    7. base CentOS-7 - Base enabled: 10,072
    8. base-debuginfo CentOS-7 - Debuginfo disabled
    9. ...
    10. epel Extra Packages for Enterprise Linux 7 enabled: 13,757
    11. ...
    12. updates CentOS-7 - Updates enabled: 4,050
    13. updates-source CentOS-7 - Updates Sources disabled

    4、使用列出所有可用和安装的包

    命令"dnf list"将来自所有仓库的所有可用包和在你Linux系统上安装的包。

    1. [root@instance-z6rhwz8d ~]# dnf list
    2. Last metadata expiration check: 0:04:02 ago on Tue 19 Jul 2022 09:02:35 PM CST.
    3. Installed Packages
    4. GeoIP.x86_64 1.5.0-14.el7 @System
    5. NetworkManager.x86_64 1:1.18.8-1.el7 @System
    6. NetworkManager-libnm.x86_64 1:1.18.8-1.el7 @System
    7. NetworkManager-team.x86_64 1:1.18.8-1.el7 @System
    8. NetworkManager-tui.x86_64 1:1.18.8-1.el7
    9. ...
    10. zziplib-utils.x86_64 0.13.62-12.el7 base

    5、使用DNF列出所有安装的包

     当"dnf list"命令显示来自所有仓库的所有可用的/安装的软件包。但,你使用"list installed"选择只列出安装的包。

    1. [root@instance-z6rhwz8d ~]# dnf list installed
    2. Installed Packages
    3. GeoIP.x86_64 1.5.0-14.el7 @System
    4. NetworkManager.x86_64 1:1.18.8-1.el7 @System
    5. NetworkManager-libnm.x86_64 1:1.18.8-1.el7 @System
    6. ...
    7. zlib.x86_64 1.2.7-18.el7 @System

    6、使用DNF列出所有可用包

    "list avallable"选项将列出来自所有使能的仓库可用于安装的所有包。

    1. [root@instance-z6rhwz8d ~]# dnf list available
    2. Last metadata expiration check: 16:41:17 ago on Tue 19 Jul 2022 09:02:35 PM CST.
    3. Available Packages
    4. 0ad.x86_64 0.0.22-1.el7 epel
    5. 0ad-data.noarch 0.0.22-1.el7 epel
    6. 0install.x86_64 2.11-1.el7 epel
    7. 2048-cli.x86_64 0.9.1-1.el7 epel
    8. 2048-cli-nocurses.x86_64 0.9.1-1.el7 epel
    9. 2ping.noarch 3.2.1-2.el7 epel
    10. 389-admin.x86_64 1.1.46-4.el7 epel
    11. ...

    7、使用DNF搜索包

    如果你不知道你想要安装的包,在这种情况中,你可以预dnf命令一起使用'search'选项来搜索配置单词或字符串的包。

    1. [root@instance-z6rhwz8d ~]# dnf search nano
    2. Last metadata expiration check: 16:42:36 ago on Tue 19 Jul 2022 09:02:35 PM CST.
    3. ================================================================ Name Exactly Matched: nano =================================================================
    4. nano.x86_64 : A small text editor
    5. nano.x86_64 : A small text editor
    6. =============================================================== Name & Summary Matched: nano ================================================================
    7. nanomsg-doc.x86_64 : Documentation for nanomsg
    8. nanomsg-devel.x86_64 : Development files for nanomsg
    9. ==================================================================== Name Matched: nano =====================================================================
    10. nanomsg.x86_64 : Socket library that provides several common communication patterns
    11. =================================================================== Summary Matched: nano ===================================================================
    12. perl-Time-Clock.noarch : Twenty-four hour clock object with nanosecond precision

    8、查看什么提供了一个文件/子包?

    dnf选项"provides"查找提供特定文件/子包的包名。例如,如果你想要在你的系统上查找什么提供了"/bin/bash"。

    1. [root@instance-z6rhwz8d ~]# dnf provides "/bin/bash"
    2. Last metadata expiration check: 16:45:33 ago on Tue 19 Jul 2022 09:02:35 PM CST.
    3. bash-4.2.46-35.el7_9.x86_64 : The GNU Bourne Again shell
    4. Repo : @System
    5. Matched from:
    6. Provide : /bin/bash
    7. bash-4.2.46-34.el7.x86_64 : The GNU Bourne Again shell
    8. Repo : base
    9. Matched from:
    10. Provide : /bin/bash
    11. bash-4.2.46-35.el7_9.x86_64 : The GNU Bourne Again shell
    12. Repo : updates
    13. Matched from:
    14. Provide : /bin/bash

    9、使用DNF获取一个包的详细情况

    假设在系统上安装一个包前,你想知道它的信息,你使用"info"选项获取一个包的详细信息。

    1. [root@instance-z6rhwz8d ~]# dnf info nano
    2. Last metadata expiration check: 16:48:45 ago on Tue 19 Jul 2022 09:02:35 PM CST.
    3. Installed Packages
    4. Name : nano
    5. Version : 2.3.1
    6. Release : 10.el7
    7. Arch : x86_64
    8. Size : 1.6 M
    9. Source : nano-2.3.1-10.el7.src.rpm
    10. Repo : @System
    11. Summary : A small text editor
    12. URL : http://www.nano-editor.org
    13. License : GPLv3+
    14. Description : GNU nano is a small and friendly text editor.

    10、用DNF安装一个包

    要安装一个称为nano的包,只要运行以下命令,它将自动解析并且按照nano包所有i需要的依赖。

    1. [root@instance-z6rhwz8d ~]# dnf install nano
    2. Last metadata expiration check: 16:52:33 ago on Tue 19 Jul 2022 09:02:35 PM CST.
    3. Dependencies resolved.
    4. =============================================================================================================================================================
    5. Package Arch Version Repository Size
    6. =============================================================================================================================================================
    7. Installing:
    8. nano x86_64 2.3.1-10.el7 base 440 k
    9. ...
    10. Installed:
    11. nano-2.3.1-10.el7.x86_64
    12. Complete!

    11、使用DNF更新一个包

    你可以只更新一特定包并且保持在系统上所有东西不变。

    1. [root@instance-z6rhwz8d ~]# dnf update systemd
    2. Last metadata expiration check: 16:54:56 ago on Tue 19 Jul 2022 09:02:35 PM CST.
    3. Dependencies resolved.
    4. Nothing to do.
    5. Complete!

    12、使用DNF检查系统更新

    检查被安装进系统的所有系统包的更新。

    1. [root@instance-z6rhwz8d ~]# dnf check-update
    2. Last metadata expiration check: 16:57:06 ago on Tue 19 Jul 2022 09:02:35 PM CST.
    3. NetworkManager.x86_64 1:1.18.8-2.el7_9 updates
    4. NetworkManager-libnm.x86_64 1:1.18.8-2.el7_9 updates
    5. NetworkManager-team.x86_64 1:1.18.8-2.el7_9 updates
    6. NetworkManager-tui.x86_64 1:1.18.8-2.el7_9 updates
    7. at.x86_64 3.1.13-25.el7_9 updates

    13、使用DNF更新所有系统包

    你可以用以下命令更新整个系统,包括所有安装的包。

    1. [root@instance-z6rhwz8d ~]# dnf update
    2. [root@instance-z6rhwz8d ~]# dnf upgrade

    14、使用DNF移除/擦除一个包

    要移除或者擦除任何不想要的包,你可以与dnf命令一起使用"remove"或"erase"选项来移除它。

    1. [root@instance-z6rhwz8d ~]# dnf remove nano
    2. Dependencies resolved.
    3. ==============================================================================================================
    4. Package Arch Version Repository Size
    5. ==============================================================================================================
    6. Removing:
    7. nano x86_64 2.3.1-10.el7 @base 1.6 M
    8. ...
    9. Removed:
    10. nano-2.3.1-10.el7.x86_64
    11. Complete!

    15、使用DNF移除孤儿包

    被安装来满足依赖关系的那些包,如果未被其它程序使用,它们是无用的。要移除那些孤儿包,执行以下命令。

    1. [root@instance-z6rhwz8d ~]# dnf autoremove
    2. Last metadata expiration check: 17:07:12 ago on Tue 19 Jul 2022 09:02:35 PM CST.
    3. Dependencies resolved.
    4. Nothing to do.
    5. Complete!

    16、使用DNF移除缓存的包

    我们很多时候遇到了过时的头以及未完成的事务,在执行dnf时,这导致了错误。我们可以清除包含远程包信息的所有缓存的包和头。

    1. [root@instance-z6rhwz8d ~]# dnf clean all
    2. 147 files removed

    17、获取有关特定DNF命令的帮助

    只要执行以下命令,你可以得到任何特定的DNF命令的帮助。

    [root@instance-z6rhwz8d ~]# dnf help info

    18、列出所有DNF命令和选项

    要列出有关所有可用dnf命令和选项的帮助,只要输入。

    1. [root@instance-z6rhwz8d ~]# dnf help
    2. usage: dnf [options] COMMAND
    3. List of Main Commands:
    4. alias List or create command aliases
    5. autoremove remove all unneeded packages that were originally installed as dependencies
    6. check check for problems in the packagedb
    7. check-update check for available package upgrades
    8. clean remove cached data
    9. deplist List package's dependencies and what packages provide them
    10. distro-sync synchronize installed packages to the latest available versions
    11. downgrade Downgrade a package
    12. group display, or use, the groups information
    13. help display a helpful usage message
    14. history display, or use, the transaction history
    15. info display details about a package or group of packages
    16. install install a package or packages on your system
    17. list list a package or groups of packages
    18. makecache generate the metadata cache
    19. mark mark or unmark installed packages as installed by user.
    20. module Interact with Modules.
    21. provides find what package provides the given value
    22. reinstall reinstall a package
    23. remove remove a package or packages from your system
    24. repolist display the configured software repositories
    25. repoquery search for packages matching keyword
    26. repository-packages run commands on top of all packages in given repository
    27. search search package details for the given string
    28. shell run an interactive DNF shell
    29. swap run an interactive dnf mod for remove and install one spec
    30. updateinfo display advisories about packages
    31. upgrade upgrade a package or packages on your system
    32. upgrade-minimal upgrade, but only 'newest' package match which fixes a problem that affects your system

    19、查看DNF历史

    你可以调用dnf历史查看已经执行的dnf命令的列表。你用这种方式知道了带时间戳地安装/移除什么。

    1. [root@instance-z6rhwz8d ~]# dnf history
    2. ID | Command line | Date and time | Action(s) | Altered
    3. -------------------------------------------------------------------------------
    4. 4 | remove nano | 2022-07-20 14:06 | Removed | 1 <
    5. 3 | update | 2022-07-20 14:00 | I, U | 121 >#
    6. 2 | install nano | 2022-07-20 13:55 | Install | 1
    7. 1 | remove nano | 2022-07-20 13:55 | Removed | 1

    20、列出所有包组

    命令"dnf grouplist"将打印所有可用或安装地包,如果什么也没有提到,它将列出所有已知组。

    1. [root@instance-z6rhwz8d ~]# dnf grouplist
    2. Last metadata expiration check: 0:00:28 ago on Wed 20 Jul 2022 02:23:54 PM CST.
    3. Available Environment Groups:
    4. Minimal Install
    5. Compute Node
    6. Infrastructure Server
    7. File and Print Server
    8. Cinnamon Desktop
    9. MATE Desktop
    10. Basic Web Server
    11. Virtualization Host
    12. Server with GUI
    13. GNOME Desktop
    14. KDE Plasma Workspaces
    15. Development and Creative Workstation
    16. Available Groups:
    17. Cinnamon
    18. Educational Software
    19. Electronic Lab
    20. Fedora Packager
    21. General Purpose Desktop
    22. Haskell
    23. LXQt Desktop
    24. MATE
    25. Milkymist
    26. TurboGears application framework
    27. Xfce
    28. Compatibility Libraries
    29. Console Internet Tools
    30. Development Tools
    31. Graphical Administration Tools
    32. Legacy UNIX Compatibility
    33. Scientific Support
    34. Security Tools
    35. Smart Card Support
    36. System Administration Tools
    37. System Management

    21、使用DNF安装一个包组

    要按照一个捆绑在一起的包组为一个组包。

    1. [root@instance-z6rhwz8d ~]# dnf groupinstall 'Educational Software'
    2. Last metadata expiration check: 1:28:02 ago on Wed 20 Jul 2022 02:23:54 PM CST.
    3. Dependencies resolved.
    4. ==============================================================================================================
    5. Package Arch Version Repository Size
    6. ==============================================================================================================
    7. Installing Groups:
    8. Educational Software
    9. Transaction Summary
    10. ==============================================================================================================
    11. Is this ok [y/N]: y
    12. Complete!

    22、更新一个组包

    通过执行以下命令更新一个组包。

    1. [root@instance-z6rhwz8d ~]# dnf groupupdate 'Educational Software'
    2. Last metadata expiration check: 1:29:58 ago on Wed 20 Jul 2022 02:23:54 PM CST.
    3. Dependencies resolved.
    4. ==============================================================================================================
    5. Package Arch Version Repository Size
    6. ==============================================================================================================
    7. Installing Groups:
    8. Educational Software
    9. Transaction Summary
    10. ==============================================================================================================
    11. Is this ok [y/N]: y
    12. Complete!

    23、移除一个组包

    我们可以移除这个组包。

    1. [root@instance-z6rhwz8d ~]# dnf groupremove 'Educational Software'
    2. Dependencies resolved.
    3. ==============================================================================================================
    4. Package Arch Version Repository Size
    5. ==============================================================================================================
    6. Removing Groups:
    7. Educational Software
    8. Transaction Summary
    9. ==============================================================================================================
    10. Is this ok [y/N]: y
    11. Complete!

    24、从一个特定仓库安装一个包

    DNF使得从一个repo(epel)安装任何特定包成为可能。

    [root@instance-z6rhwz8d ~]# dnf --enablerepo=epel install phpmyadmin

    25、同步安装的包到稳定发行版

    命令"dnf distro-sync"将提供必要选项来同步所有安装的包到来自任何使能的仓库可用的最新稳定版本。如果没有选择包,同步所有安装的包。

    1. [root@instance-z6rhwz8d ~]# dnf distro-sync
    2. Last metadata expiration check: 1:49:18 ago on Wed 20 Jul 2022 02:23:54 PM CST.
    3. Dependencies resolved.
    4. Nothing to do.
    5. Complete!

    26、重新安装一个包

    命令"dnf reinstall nano"将重新安装一个安装过的包。

    [root@instance-z6rhwz8d ~]# dnf reinstall nano

    27、降级一个包

    如果可能,选项"downgrade"将降级指定名称的包到更低版本。

    1. [root@instance-z6rhwz8d ~]# dnf downgrade acpid
    2. Last metadata expiration check: 1:54:15 ago on Wed 20 Jul 2022 02:23:54 PM CST.
    3. Package acpid of lowest version already installed, cannot downgrade it.
    4. Error: No packages marked for downgrade.
  • 相关阅读:
    【JavaSE专栏87】线程终止问题,什么情况下需要终止线程,如何终止Java线程?
    R语言使用epiDisplay包的dotplot函数通过点图的形式可视化不同区间数据点的频率、使用pch参数自定义指定点图数据点的形状
    SSM+电商背景下精品茶网站 毕业设计-附源码191732
    MATLAB算法实战应用案例精讲-【图像处理】SLAM技术详解
    一段代码实现WordPress彩色标签云
    Spring Batch入门学习
    [Mac软件]Infuse 7 PRO v7.6.3 一个强大的视频播放器(激活版)
    Unity 编辑器扩展 一键替换指定物体下的所有材质球
    ESP32 S3 vscode+idf搭建
    母婴类目电商平台数据分析
  • 原文地址:https://blog.csdn.net/yuyuyuliang00/article/details/125880438