• DNF Package Management-CentOS 8


    1. The syntax of the DNF command 语法
    dnf [Option] [Command] [Package_Name]

    2. Location of the DNF Configuration Files 相关配置文件 
    Main Configuration: /etc/dnf/dnf.conf
    Repository: /etc/yum.repos.d/
    Cache Files: /var/cache/dnf

    3. Popular DNF Commands are as follows 常用命令

    +---------------------+-------------------------------------------------------------------------------------------+
    |      Command        |                                         Description                                       |
    +---------------------+-------------------------------------------------------------------------------------------+
    |repolist             | Display the configured software repositories                                              |
    |install              | Install a single or multiple packages on your system                                      |
    |upgrade              | Upgrade a package or packages on your system                                              |
    |upgrade-minimal      | Upgrade, but only 'newest' package match which fixes a problem that affects your system   |
    |list                 | List a package or groups of packages                                                      |
    |info                 | Display details about a package or group of packages                                      |
    |updateinfo           | Display advisories about packages                                                         |
    |search               | Search package details for the given string                                               |
    |check-update         | Check for available package upgrades                                                      |
    |remove               | Remove a package or packages from your system                                             |
    |reinstall            | Reinstall a package                                                                       |
    |downgrade            | Downgrade a package                                                                       |
    |autoremove           | Remove all unneeded packages that were originally installed as dependencies               |
    |distro-sync          | Synchronize installed packages to the latest available versions                           |
    |makecache            | Generate the metadata cache                                                               |
    |repository-packages  | Run commands on top of all packages in given repository                                   |
    |provides             | Find what package provides the given value                                                |
    |group                | Display, or use, the groups information                                                   |
    |history              | Display, or use, the transaction history                                                  |
    |clean                | Remove cached data                                                                        |
    |help                 | Display a helpful usage message                                                           |
    +---------------------+-------------------------------------------------------------------------------------------+

    4. List repositories that are enabled on the system. 查看当前服务器上已启用的repositories
    # dnf repolist

    This provides more detailed information when adding the -v option with the dnf command.
    # dnf repolist -v

    Alternatively, you can run the following command to list the enabled repositories on the system.
    # dnf repolist enabled
    # dnf repolist --enabled

    5. List the disabled repositories on the system. 查看当前已禁用的Repositories
    # dnf repolist disabled
    # dnf repolist --disabled

    6. List all repositories (enabled and disabled) on the system. 查看所有的Repositories,包含启用的和禁用的
    # dnf repolist all
    # dnf repolist --all

    [root@centos8 ~]# dnf repolist
    repo id                                                      repo name
    AppStream                                                    CentOS-8 - AppStream
    BaseOS                                                       CentOS-8 - Base
    extras                                                       CentOS-8 - Extras
    [root@centos8 ~]# dnf repolist all
    repo id                                       repo name                                                                     status
    AppStream                                     CentOS-8 - AppStream                                                          enabled
    AppStream-source                              CentOS-8 - AppStream Sources                                                  disabled
    BaseOS                                        CentOS-8 - Base                                                               enabled
    BaseOS-source                                 CentOS-8 - BaseOS Sources                                                     disabled
    Devel                                         CentOS-8 - Devel WARNING! FOR BUILDROOT USE ONLY!                             disabled
    HighAvailability                              CentOS-8 - HA                                                                 disabled
    PowerTools                                    CentOS-8 - PowerTools                                                         disabled
    base-debuginfo                                CentOS-8 - Debuginfo                                                          disabled
    c8-media-AppStream                            CentOS-AppStream-8 - Media                                                    disabled
    c8-media-BaseOS                               CentOS-BaseOS-8 - Media                                                       disabled
    centosplus                                    CentOS-8 - Plus                                                               disabled
    centosplus-source                             CentOS-8 - Plus Sources                                                       disabled
    cr                                            CentOS-8 - cr                                                                 disabled
    extras                                        CentOS-8 - Extras                                                             enabled
    extras-source                                 CentOS-8 - Extras Sources                                                     disabled
    fasttrack                                     CentOS-8 - fasttrack                                                          disabled
    [root@centos8 ~]# 

    7. Install a Package or Packages Using the dnf Command. 使用dnf命令来安装软件包
    To install a single package 安装单个软件包
    #dnf install nano

    To install multiple packages 安装多个软件包
    #dnf install MariaDB-server MariaDB-client

    Add the -y option with dnf to install a package without your confirmation. 加-y参数直接安装,无须确认
    #dnf install nano -y 

    在安装一个软件包之前,可以使用下面的命令先查看是否已安装过。

    [root@centos8 ~]# dnf list installed | grep nano
    nano.x86_64                                        2.9.8-1.el8                                    @anaconda 

    或者:

    [root@centos8 ~]# dnf list firefox 已安装,并且给出可用的更新包
    Last metadata expiration check: 1:12:24 ago on Sat 08 Aug 2020 05:00:31 PM +04.
    Installed Packages
    firefox.x86_64                                              68.7.0-2.el8_1                                                @AppStream
    Available Packages
    firefox.x86_64                                              68.10.0-1.el8_2                                               AppStream 
    [root@centos8 ~]# dnf list installed firefox 只显示已安装的软件包
    Installed Packages
    firefox.x86_64                                               68.7.0-2.el8_1                                               @AppStream
    [root@centos8 ~]# dnf list installed mysql 只显示未安装mysql
    Error: No matching Packages to list
    [root@centos8 ~]# dnf list mysql 显示未安装,并且给出可用的软件包
    Last metadata expiration check: 1:13:18 ago on Sat 08 Aug 2020 05:00:31 PM +04.
    Available Packages
    mysql.x86_64                                     8.0.17-3.module_el8.0.0+181+899d6349                                      AppStream
    [root@centos8 ~]# dnf list htop 显示没有相关的软件包。表明Repositories中并不包含htop相关的软件包
    Last metadata expiration check: 1:13:38 ago on Sat 08 Aug 2020 05:00:31 PM +04.
    Error: No matching Packages to list

    Install a package from a specific repository. 使用指定的Repository来安装软件包
    In this case, we are installing the “htop” package from the EPEL repository.
    # dnf --disablerepo="*" --enablerepo=epel install htop

    To install local rpm file. 安装本地的rpm软件包
    #dnf install /path/to/file.rpm

    To install an rpm package directly from the URL. 安装URL指定的软件包
    #dnf install https://xxx.com/file.rpm

    To install a package that provides /usr/bin/[xxx] file.  安装能提供某个文件的软件包
    #dnf install /usr/bin/xxx

    先使用dnf provides来查看哪个Package提供所需文件:
    The dnf provides command will find packages that provide the given file. This is useful if you want to find out which package (installed or not) provides this file.
    # dnf provides xxx

    [root@centos8 ~]# dnf provides /usr/sbin/httpd
    Last metadata expiration check: 0:35:35 ago on Sat 08 Aug 2020 05:00:31 PM +04.
    httpd-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64 : Apache HTTP Server
    Repo        : @System
    Matched from:
    Filename    : /usr/sbin/httpd
    
    httpd-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64 : Apache HTTP Server
    Repo        : AppStream
    Matched from:
    Filename    : /usr/sbin/httpd

    8. Remove a Package or Packages. 删除软件包
    # dnf remove nano -y

    Dletes the old version of the duplicate packages. 删除旧版本的软件包
    # dnf remove --duplicates

    Remove All “leaf” Packages.
    This removes all the packages that were originally installed as dependencies for other packages that are no longer needed. 删除已安装的不需要的依赖包
    # dnf autoremove

    先使用下面的命令来查看哪些Packages将会被自动清除
    List packages which will be removed by dnf auto-remove command.
    # dnf list autoremove

    9. Update a Package or Packages. 更新软件包
    Update all installed packages to the latest available version. 更新所有软件包,通常情况下,在系统刚安装完成之后,使用该命令dnf upgrade -y 来更新系统。更新完成之后,使用命令dnf check-update 或者dnf list updates 来查看。
    # dnf upgrade 

    The below command performs similar functions as above. This will install all available updates on your computer. 同上,更新所有软件包。
    # dnf distro-sync

    Update a given package or packages to the latest available version. 更新指定的软件包
    # dnf upgrade [Package_Name]
    # dnf upgrade nano

    Upgrade a given package or packages to the specified versions. 更新指定的软件包到某一版本
    # dnf upgrade [Package_Version]
    # dnf upgrade nano-2.9.8-1

    10. Check Information about Update Advisories 查看更新建议
    The below commands will display information about update advisories. This shows how many package updates are available for Security, Bug Fixes and Enhancement. 

    These packages can be upgraded through “dnf upgrade” command.

    Run the command below to display the number of advisory types.  查看建议更新的汇总信息
    # dnf updateinfo summary

    Displays list of advisories. 查看建议更新的详细信息
    # dnf updateinfo list

    Displays detailed information about the given advisory ID.  根据上述列出来的Advisory ID查看建议更新的详细信息
    # dnf updateinfo info [advisory ID] 

    11. Update Only Advisories. 只更新建议的软件包
    Updates each package to the latest version that provides a bugfix, enhancement or security fix. 更新所有建议的软件包
    # dnf upgrade-minimal

    Updates the given package or packages to the latest version that provides a bugfix, enhancement or security fix. 更新指定的软件包
    # dnf upgrade-minimal [Package_Name]

    12. Check Available Package Updates查看可更新的软件包
    This command checks weather any package updates are available on the system. 查看所有可更新的软件包
    # dnf check-update 
    # dnf list updates

    Check available updates to the specified package. 查看某个软件包是否可以更新
    # dnf check-update [Package_Name]
    # dnf check-update nano

    Run the following command if you want to quickly check what changes have been made to the given package before updating. 这个命令很有用。在更新前某个软件包前,可以先查看有哪些变更。

    # dnf check-update firefox.x86_64 --changelog

    [root@centos8 ~]# dnf check-update firefox.x86_64 --changelog 
    Last metadata expiration check: 0:49:45 ago on Sat 08 Aug 2020 05:00:31 PM +04.
    
    firefox.x86_64                                               68.10.0-1.el8_2                                               AppStream
    Changelogs for firefox-68.10.0-1.el8_2.x86_64
    * Mon Jul 06 12:00:00 AM 2020 CentOS Sources <bugs@centos.org> - 68.10.0-1.el8.centos
    - Apply debranding changes
    
    * Fri Jun 26 12:00:00 AM 2020 Jan Horak <jhorak@redhat.com>
    - Update to 68.10.0 build1
    
    * Fri May 29 12:00:00 AM 2020 Jan Horak <jhorak@redhat.com>
    - Update to 68.9.0 build1
    - Added patch for pipewire 0.3
    
    * Mon May 11 12:00:00 AM 2020 Jan Horak <jhorak@redhat.com>
    - Added s390x specific patches
    
    * Wed Apr 29 12:00:00 AM 2020 Jan Horak <jhorak@redhat.com>
    - Update to 68.8.0 build1
    
    * Thu Apr 23 12:00:00 AM 2020 Martin Stransky <stransky@redhat.com> - 68.7.0-3
    - Added fix for rhbz#1821418

    This command checks the local packaging and generates information on any issues it has detected. You can limit the “packagedb” check by passing the options --dependencies, --duplicates, --obsoleted or --provides. 检查已安装的软件包是否有问题。
    # dnf check

    13.List Installed Packages 查看已安装的软件包
    Run the below command to list all packages, present in the RPMDB, in a repo or in both.该命令查看所有存在于RPMDB以及Repositories中的软件包(即已安装的以及可用的软件包)
    # dnf list
    or
    # dnf list all 

    [root@centos8 ~]# dnf list | wc -l
    6712
    [root@centos8 ~]# dnf list all | wc -l
    6712

    Run the below command to list only installed packages in RPMDB. 查看当前服务器上已安装的软件包
    # dnf list installed

    [root@centos8 ~]# dnf list installed | wc -l
    1698

    在安装一个软件包之前,可以先用该命令查看是否已经安装过:

    [root@centos8 ~]# dnf list installed | grep htop
    [root@centos8 ~]# dnf list installed | grep firefox
    firefox.x86_64                                     68.7.0-2.el8_1                                 @AppStream
    [root@centos8 ~]# 

    Run the below command to list available packages from repos, excluding installed packages.列出repository里所有可用的安装包,排除已经安装的软件包,但是不排除可更新的软件包。
    # dnf list available

    [root@centos8 ~]# dnf list installed | grep firefox
    firefox.x86_64                                     68.7.0-2.el8_1                                 @AppStream
    [root@centos8 ~]# dnf list available | grep firefox
    firefox.x86_64                                       68.10.0-1.el8_2                                  AppStream
    [root@centos8 ~]# dnf list available | wc -l
    5014

    dnf list all 结果等于dnf list installed 加上dnf list available

    Run the command below to see if a given package is installed. If yes, it shows an output like the one below. Otherwise, it displays the following error message “Error: No matching packages to list” 列出已安装的软件 包。
    # dnf list installed httpd

    List packages installed on the system that are obsoleted. 列出无效的软件包

    # dnf list obsoletes

    List packages recently added into the repositories. 列出最近安装的软件包
    # dnf list recent

    List upgrades available for the installed packages. 查看当前服务器上已安装的所有软件包中,哪些可以进行更新升级
    # dnf list upgrades

    [root@centos8 ~]# dnf list upgrades | wc -l
    89
    [root@centos8 ~]# dnf list upgrades | grep firefox
    firefox.x86_64                                68.10.0-1.el8_2                            AppStream
    [root@centos8 ~]# 

    list packages which will be removed by dnf auto-remove command. 查看服务器上的哪些软件包会被自动清除。
    # dnf list autoremove

    14. Search a Package 查询软件包
    #dnf search [KeyWords]

    [root@centos8 ~]# dnf search httpd
    Last metadata expiration check: 1:51:17 ago on Sat 08 Aug 2020 05:00:31 PM +04.
    =================================================== Name Exactly Matched: httpd ====================================================
    httpd.x86_64 : Apache HTTP Server
    ================================================== Name & Summary Matched: httpd ===================================================
    centos-logos-httpd.noarch : CentOS-related icons and pictures used by httpd
    keycloak-httpd-client-install.noarch : Tools to configure Apache HTTPD as Keycloak client
    python3-keycloak-httpd-client-install.noarch : Tools to configure Apache HTTPD as Keycloak client
    ======================================================= Name Matched: httpd ========================================================
    httpd-tools.x86_64 : Tools for use with the Apache HTTP Server
    httpd-devel.x86_64 : Development interfaces for the Apache HTTP server
    httpd-manual.noarch : Documentation for the Apache HTTP server
    libmicrohttpd.i686 : Lightweight library for embedding a webserver in applications
    libmicrohttpd.x86_64 : Lightweight library for embedding a webserver in applications
    httpd-filesystem.noarch : The basic directory layout for the Apache HTTP server
    ====================================================== Summary Matched: httpd ======================================================
    mod_dav_svn.x86_64 : Apache httpd module for Subversion server
    mod_auth_mellon.x86_64 : A SAML 2.0 authentication module for the Apache Httpd Server
    [root@centos8 ~]# dnf search fuck
    Last metadata expiration check: 1:51:22 ago on Sat 08 Aug 2020 05:00:31 PM +04.
    No matches found.

    15. Display Installed Package Information 查看已安装的软件包信息
    # dnf info httpd

    [root@centos8 ~]# dnf info httpd
    Last metadata expiration check: 1:52:20 ago on Sat 08 Aug 2020 05:00:31 PM +04.
    Installed Packages
    Name         : httpd
    Version      : 2.4.37
    Release      : 21.module_el8.2.0+382+15b0afa8
    Architecture : x86_64
    Size         : 4.9 M
    Source       : httpd-2.4.37-21.module_el8.2.0+382+15b0afa8.src.rpm
    Repository   : @System
    From repo    : AppStream
    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.
    
    [root@centos8 ~]# dnf info firefox
    Last metadata expiration check: 1:52:27 ago on Sat 08 Aug 2020 05:00:31 PM +04.
    Installed Packages
    Name         : firefox
    Version      : 68.7.0
    Release      : 2.el8_1
    Architecture : x86_64
    Size         : 342 M
    Source       : firefox-68.7.0-2.el8_1.src.rpm
    Repository   : @System
    From repo    : AppStream
    Summary      : Mozilla Firefox Web browser
    URL          : https://www.mozilla.org/firefox/
    License      : MPLv1.1 or GPLv2+ or LGPLv2+
    Description  : Mozilla Firefox is an open-source web browser, designed for standards
                 : compliance, performance and portability.
    
    Available Packages
    Name         : firefox
    Version      : 68.10.0
    Release      : 1.el8_2
    Architecture : x86_64
    Size         : 94 M
    Source       : firefox-68.10.0-1.el8_2.src.rpm
    Repository   : AppStream
    Summary      : Mozilla Firefox Web browser
    URL          : https://www.mozilla.org/firefox/
    License      : MPLv1.1 or GPLv2+ or LGPLv2+
    Description  : Mozilla Firefox is an open-source web browser, designed for standards
                 : compliance, performance and portability.

    16. Use the “dnf makecache” Command
    Makecache is used to download and make usable all the metadata for the currently enabled repository on your system.
    # dnf makecache

    [root@centos8 ~]# dnf makecache
    CentOS-8 - AppStream                                                                                6.2 kB/s | 4.3 kB     00:00    
    CentOS-8 - Base                                                                                     4.0 kB/s | 3.9 kB     00:00    
    CentOS-8 - Extras                                                                                   2.1 kB/s | 1.5 kB     00:00    
    Metadata cache created.

    17. Downgrade a Package 下载一个软件包
    # dnf downgrade nano 

    18. Re-Install a Package 重新安装某个软件包
    This command is used to reinstall if they package has already installed. If it’s not installed, you will be getting the following message.

    Package nano available, but not installed.
    No match for argument: nano
    Error: No packages marked for reinstall.

    Run the following command to re-install the given package.
    # dnf reinstall nano

    19. List Package Groups 列出软件包组
    # dnf group list
    or
    # dnf grouplist

    [root@centos8 ~]# dnf group list
    Last metadata expiration check: 0:02:40 ago on Sat 08 Aug 2020 06:54:02 PM +04.
    Available Environment Groups:
       Server
       Minimal Install
       Workstation
       Virtualization Host
       Custom Operating System
    Installed Environment Groups:
       Server with GUI
    Installed Groups:
       Container Management
       Development Tools
       Graphical Administration Tools
       Headless Management
       Scientific Support
       Security Tools
       System Tools
    Available Groups:
       .NET Core Development
       RPM Development Tools
       Legacy UNIX Compatibility
       Network Servers
       Smart Card Support

    20. How to View Summary of Groups
    This display overview of how many groups are installed and available on your system. 
    # dnf group summary

    [root@centos8 ~]# dnf group summary
    Last metadata expiration check: 0:03:32 ago on Sat 08 Aug 2020 06:54:02 PM +04.
    Installed Groups: 7
    Available Groups: 5

    To View a Specified Group Info. 查看指定的软件包组信息
    This command displays the list of packages available in this group.
    Each group has three parts and the details are as follows:
    Mandatory Packages
    Default Packages
    Optional Packages

    # dnf group info 'Development Tools'

    [root@centos8 ~]# dnf group info 'Development Tools'
    Last metadata expiration check: 0:04:37 ago on Sat 08 Aug 2020 06:54:02 PM +04.
    
    Group: Development Tools
     Description: A basic development environment.
     Mandatory Packages:
       autoconf
       automake
       binutils
       bison
       flex
       gcc
       gcc-c++
       gdb
       glibc-devel
       libtool
       make
       pkgconf
       pkgconf-m4
       pkgconf-pkg-config
       redhat-rpm-config
       rpm-build
       rpm-sign
       strace
     Default Packages:
       asciidoc
       byacc
       ctags
       diffstat
       git
       intltool
       jna
       ltrace
       patchutils
       perl-Fedora-VSP
       perl-generators
       pesign
       source-highlight
       systemtap
       valgrind
       valgrind-devel
     Optional Packages:
       cmake
       expect
       rpmdevtools
       rpmlint

    21. Install a Package Group 安装某一个软件包组
    # dnf group install 'Development Tools' -y
    or
    # dnf groupinstall 'Development Tools' -y

    22. Update a Package Group 升级某个软件包组
    # dnf group update 'Development Tools' -y
    or
    # dnf groupupdate 'Development Tools' -y

    23. Remove a Package Group 删除某个软件包组
    # dnf group remove 'Development Tools'
    or
    # dnf group erase 'Development Tools'

    24. Clear Cached Data 删除缓存数据
    By default dnf will cache data such as package and repository metadata to the “/var/cache/dnf” directory when you perform varies dnf operation. This cache can take up a lot space over the period of time. This will allow you to remove all cached data.

    Run the below command to remove cache files generated from the repository metadata.
    # dnf clean dbcache

    Run the below command to mark the repository metadata expired.
    # dnf clean expire-cache

    Run the below command to remove repository metadata.
    # dnf clean metadata

    Run the below command to remove any cached packages from the system.
    # dnf clean packages

    This command does all of the above action in one go.
    # dnf clean all

    [root@centos8 ~]# dnf clean all
    29 files removed
    [root@centos8 ~]# dnf makecache
    CentOS-8 - AppStream                                                                                1.6 MB/s | 5.8 MB     00:03    
    CentOS-8 - Base                                                                                     646 kB/s | 2.2 MB     00:03    
    CentOS-8 - Extras                                                                                   6.1 kB/s | 7.0 kB     00:01    
    Metadata cache created.

    25. Print dnf History 查看dnf 历史记录
    The dnf history command allows the user to view what action has happened in past transactions. All transactions showed in a table.
    # dnf history
    # dnf history list

    It shows you detailed information about the given transactions. When no transaction is specified, describe what happened during the latest transaction.
    # dnf history info 3

    Repeat the same action for the specified transaction ID.
    # dnf history redo 3

    Perform the opposite operation to all operations performed in the specified transaction.
    # dnf history undo 3

    Undo all transactions performed after the specified transaction.
    # dnf history rollback 7

    26. Enable DNF Automatic Updates 启用自动更新
    You can enable automatic package update by installing the dnf-automatic package. 先安装dnf-automatic软件包
    # dnf install dnf-automatic

    After installaing the pacakge, make sure you edit the /etc/dnf/automatic.conf file and replace apply_updates = yes instead of apply_updates = no. 安装完成之后,修改配置文件参数为yes. 

    Enable the “dnf-automatic-timer” service once you made the changes in the configuration file. 设置该服务自动启动。
    # systemctl enable dnf-automatic.timer 

    Finally start the service. 启动该服务
    #systemctl start dnf-automatic.timer

    27. Mark/Un-Mark a Package
    The dnf mark command allows you to always keep the specified package on the system, and doesn’t remove this package from the system when the auto-removal command is running.

    Run the following command to mark the specified packages as installed by user.
    # dnf mark install nano
    nano-2.9.8-1.el8.x86_64 marked as user installed.

    Run the following command to unmark the specified packages as installed by user.
    # dnf mark remove nano
    nano-2.9.8-1.el8.x86_64 unmarked as user installed.

    28. Query a Package From the Enabled Repos 
    It searches the given package on the enabled repositories and displays the information. This is equivalent to the rpm “-q” command.
    # dnf repoquery httpd

    29. dnf帮助命令
    # dnf -help
    or
    # man dnf

  • 相关阅读:
    2019-08-27-Seo如何做好关键词布局
    layui 表格格式化时间
    js 获取ip
    layui 表格删除多行
    Flask JWT Extended 的令牌和刷新令牌
    解决ubuntu下深度音乐和wine程序托盘图标的问题
    ubuntu 阅读caj文件(cajviewer)
    django 结合 xlwt 实现数据导入excel 并下载
    ubuntu 安装Xournal
    pyQt5 计算器
  • 原文地址:https://www.cnblogs.com/rusking/p/13460981.html
Copyright © 2020-2023  润新知