irpas技术客

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

未知 3723

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仓库。

yum install epel-release 或 yum install epel-release -y

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

yum install dnf

1、检查DNF版本

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

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

2、列出使能的DNF仓库

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

[root@instance-z6rhwz8d ~]# dnf repolist Extra Packages for Enterprise Linux 7 - x86_64 78 MB/s | 17 MB 00:00 CentOS-7 - Base 58 MB/s | 10 MB 00:00 CentOS-7 - Updates 59 MB/s | 20 MB 00:00 CentOS-7 - Extras 11 MB/s | 331 kB 00:00 repo id repo name status base CentOS-7 - Base 10,072 epel Extra Packages for Enterprise Linux 7 - x86_64 13,757 extras CentOS-7 - Extras 512 updates CentOS-7 - Updates 4,050 3、列出所有使能和禁用的DNF仓库

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

[root@instance-z6rhwz8d ~]# dnf repolist all Last metadata expiration check: 0:00:46 ago on Tue 19 Jul 2022 09:02:35 PM CST. repo id repo name status C7.0.1406-base CentOS-7.0.1406 - Base disabled ... C7.8.2003-updates CentOS-7.8.2003 - Updates disabled base CentOS-7 - Base enabled: 10,072 base-debuginfo CentOS-7 - Debuginfo disabled ... epel Extra Packages for Enterprise Linux 7 enabled: 13,757 ... updates CentOS-7 - Updates enabled: 4,050 updates-source CentOS-7 - Updates Sources disabled 4、使用列出所有可用和安装的包

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

[root@instance-z6rhwz8d ~]# dnf list Last metadata expiration check: 0:04:02 ago on Tue 19 Jul 2022 09:02:35 PM CST. Installed Packages GeoIP.x86_64 1.5.0-14.el7 @System NetworkManager.x86_64 1:1.18.8-1.el7 @System NetworkManager-libnm.x86_64 1:1.18.8-1.el7 @System NetworkManager-team.x86_64 1:1.18.8-1.el7 @System NetworkManager-tui.x86_64 1:1.18.8-1.el7 ... zziplib-utils.x86_64 0.13.62-12.el7 base 5、使用DNF列出所有安装的包

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

[root@instance-z6rhwz8d ~]# dnf list installed Installed Packages GeoIP.x86_64 1.5.0-14.el7 @System NetworkManager.x86_64 1:1.18.8-1.el7 @System NetworkManager-libnm.x86_64 1:1.18.8-1.el7 @System ... zlib.x86_64 1.2.7-18.el7 @System 6、使用DNF列出所有可用包

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

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

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

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

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

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

[root@instance-z6rhwz8d ~]# dnf provides "/bin/bash" Last metadata expiration check: 16:45:33 ago on Tue 19 Jul 2022 09:02:35 PM CST. bash-4.2.46-35.el7_9.x86_64 : The GNU Bourne Again shell Repo : @System Matched from: Provide : /bin/bash bash-4.2.46-34.el7.x86_64 : The GNU Bourne Again shell Repo : base Matched from: Provide : /bin/bash bash-4.2.46-35.el7_9.x86_64 : The GNU Bourne Again shell Repo : updates Matched from: Provide : /bin/bash 9、使用DNF获取一个包的详细情况

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

[root@instance-z6rhwz8d ~]# dnf info nano Last metadata expiration check: 16:48:45 ago on Tue 19 Jul 2022 09:02:35 PM CST. Installed Packages Name : nano Version : 2.3.1 Release : 10.el7 Arch : x86_64 Size : 1.6 M Source : nano-2.3.1-10.el7.src.rpm Repo : @System Summary : A small text editor URL : http://www.nano-editor.org License : GPLv3+ Description : GNU nano is a small and friendly text editor. 10、用DNF安装一个包

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

[root@instance-z6rhwz8d ~]# dnf install nano Last metadata expiration check: 16:52:33 ago on Tue 19 Jul 2022 09:02:35 PM CST. Dependencies resolved. ============================================================================================================================================================= Package Arch Version Repository Size ============================================================================================================================================================= Installing: nano x86_64 2.3.1-10.el7 base 440 k ... Installed: nano-2.3.1-10.el7.x86_64 Complete! 11、使用DNF更新一个包

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

[root@instance-z6rhwz8d ~]# dnf update systemd Last metadata expiration check: 16:54:56 ago on Tue 19 Jul 2022 09:02:35 PM CST. Dependencies resolved. Nothing to do. Complete! 12、使用DNF检查系统更新

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

[root@instance-z6rhwz8d ~]# dnf check-update Last metadata expiration check: 16:57:06 ago on Tue 19 Jul 2022 09:02:35 PM CST. NetworkManager.x86_64 1:1.18.8-2.el7_9 updates NetworkManager-libnm.x86_64 1:1.18.8-2.el7_9 updates NetworkManager-team.x86_64 1:1.18.8-2.el7_9 updates NetworkManager-tui.x86_64 1:1.18.8-2.el7_9 updates at.x86_64 3.1.13-25.el7_9 updates 13、使用DNF更新所有系统包

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

[root@instance-z6rhwz8d ~]# dnf update 或 [root@instance-z6rhwz8d ~]# dnf upgrade 14、使用DNF移除/擦除一个包

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

[root@instance-z6rhwz8d ~]# dnf remove nano Dependencies resolved. ============================================================================================================== Package Arch Version Repository Size ============================================================================================================== Removing: nano x86_64 2.3.1-10.el7 @base 1.6 M ... Removed: nano-2.3.1-10.el7.x86_64 Complete! 15、使用DNF移除孤儿包

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

[root@instance-z6rhwz8d ~]# dnf autoremove Last metadata expiration check: 17:07:12 ago on Tue 19 Jul 2022 09:02:35 PM CST. Dependencies resolved. Nothing to do. Complete! 16、使用DNF移除缓存的包

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

[root@instance-z6rhwz8d ~]# dnf clean all 147 files removed 17、获取有关特定DNF命令的帮助

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

[root@instance-z6rhwz8d ~]# dnf help info 18、列出所有DNF命令和选项

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

[root@instance-z6rhwz8d ~]# dnf help usage: dnf [options] COMMAND List of Main Commands: alias List or create command aliases autoremove remove all unneeded packages that were originally installed as dependencies check check for problems in the packagedb check-update check for available package upgrades clean remove cached data deplist List package's dependencies and what packages provide them distro-sync synchronize installed packages to the latest available versions downgrade Downgrade a package group display, or use, the groups information help display a helpful usage message history display, or use, the transaction history info display details about a package or group of packages install install a package or packages on your system list list a package or groups of packages makecache generate the metadata cache mark mark or unmark installed packages as installed by user. module Interact with Modules. provides find what package provides the given value reinstall reinstall a package remove remove a package or packages from your system repolist display the configured software repositories repoquery search for packages matching keyword repository-packages run commands on top of all packages in given repository search search package details for the given string shell run an interactive DNF shell swap run an interactive dnf mod for remove and install one spec updateinfo display advisories about packages 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 19、查看DNF历史

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

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

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

[root@instance-z6rhwz8d ~]# dnf grouplist Last metadata expiration check: 0:00:28 ago on Wed 20 Jul 2022 02:23:54 PM CST. Available Environment Groups: Minimal Install Compute Node Infrastructure Server File and Print Server Cinnamon Desktop MATE Desktop Basic Web Server Virtualization Host Server with GUI GNOME Desktop KDE Plasma Workspaces Development and Creative Workstation Available Groups: Cinnamon Educational Software Electronic Lab Fedora Packager General Purpose Desktop Haskell LXQt Desktop MATE Milkymist TurboGears application framework Xfce Compatibility Libraries Console Internet Tools Development Tools Graphical Administration Tools Legacy UNIX Compatibility Scientific Support Security Tools Smart Card Support System Administration Tools System Management 21、使用DNF安装一个包组

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

[root@instance-z6rhwz8d ~]# dnf groupinstall 'Educational Software' Last metadata expiration check: 1:28:02 ago on Wed 20 Jul 2022 02:23:54 PM CST. Dependencies resolved. ============================================================================================================== Package Arch Version Repository Size ============================================================================================================== Installing Groups: Educational Software Transaction Summary ============================================================================================================== Is this ok [y/N]: y Complete! 22、更新一个组包

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

[root@instance-z6rhwz8d ~]# dnf groupupdate 'Educational Software' Last metadata expiration check: 1:29:58 ago on Wed 20 Jul 2022 02:23:54 PM CST. Dependencies resolved. ============================================================================================================== Package Arch Version Repository Size ============================================================================================================== Installing Groups: Educational Software Transaction Summary ============================================================================================================== Is this ok [y/N]: y Complete! 23、移除一个组包

我们可以移除这个组包。

[root@instance-z6rhwz8d ~]# dnf groupremove 'Educational Software' Dependencies resolved. ============================================================================================================== Package Arch Version Repository Size ============================================================================================================== Removing Groups: Educational Software Transaction Summary ============================================================================================================== Is this ok [y/N]: y Complete! 24、从一个特定仓库安装一个包

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

[root@instance-z6rhwz8d ~]# dnf --enablerepo=epel install phpmyadmin 25、同步安装的包到稳定发行版

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

[root@instance-z6rhwz8d ~]# dnf distro-sync Last metadata expiration check: 1:49:18 ago on Wed 20 Jul 2022 02:23:54 PM CST. Dependencies resolved. Nothing to do. Complete! 26、重新安装一个包

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

[root@instance-z6rhwz8d ~]# dnf reinstall nano 27、降级一个包

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

[root@instance-z6rhwz8d ~]# dnf downgrade acpid Last metadata expiration check: 1:54:15 ago on Wed 20 Jul 2022 02:23:54 PM CST. Package acpid of lowest version already installed, cannot downgrade it. Error: No packages marked for downgrade.


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Linux #DNF