使用dnf管理软件包
DNF是Fedora 22新默认的包管理器。DNF从Yum分支出来,使用专注于性能的C语言库hawkey进行依赖关系解析工作,大幅度提升包管理操作效率并降低内存消耗。DNF替代Yum的原因如下:
Yum不能“Python 3 as default”,而DNF支持Python 2和Python3
启动DNF项目的原因是Yum的三个陷阱:
undocumented API、broken dependency solving algorithm和inability to refactor internal functions。Yum插件可以在Yum代码中使用任何method,这会造成Yum utility因一些细小变化而突然崩溃。DNF目标是为了避免Yum执行的错误。从一开始所有暴露的API都被适当的记录,且测试几乎包含了每一次新的提交。这个项目采用了敏捷开发,会提供用户一些优先级功能实现。
安装DNF包管理器
DNF 并未默认安装在 RHEL 或 CentOS 7系统中,但是 Fedora 22 已经默认使用 DNF
在RHEL/CentOS 7中安装DNF需要先安装
epel-release
yum install epel-release然后安装
DNF包
yum install dnfDNF包管理器使用
c
dnf --version查看系统中可用的DNF软件库
dnf repolist查看系统中可用的和不可用的所有的DNF软件库
dnf repolist all例如在Fedora 23中显示输出
Last metadata expiration check: 1:59:42 ago on Tue Jul 19 00:50:27 2016.
repo id repo name status
*fedora Fedora 23 - x86_64 enabled: 46,074
fedora-debuginfo Fedora 23 - x86_64 - Debug disabled
fedora-source Fedora 23 - Source disabled
*updates Fedora 23 - x86_64 - Updates enabled: 19,985
updates-debuginfo Fedora 23 - x86_64 - Updates - Debug disabled
updates-source Fedora 23 - Updates Source disabled
updates-testing Fedora 23 - x86_64 - Test Updates disabled
updates-testing-debuginfo Fedora 23 - x86_64 - Test Updates Debu disabled
updates-testing-source Fedora 23 - Test Updates Source disabled列出所有RPM包
dnf list列出所哟安装了RPM包
dnf list installed列出所有可供安装的RPM包(包括了所有可用软件库的可供安装的软件包)
dnf list available搜索软件库中的软件包
dnf search syslog-ng查找某个文件的提供者
dnf provides /bin/bash查看软件包的详情
dnf info bash安装软件包
dnf install nano升级软件包
dnf update systmed检查软件包的更新 - 检查系统中所有软件包的更新
dnf check-update升级系统中所有可以升级的软件包
dnf update 或 dnf upgrade删除软件包
dnf remove nano删除无用鼓励的软件包:当没有软件再依赖时,某些用于解决特定软件依赖的软件包可以清理掉
dnf autoremove删除缓存的无用软件包
dnf clean all获取某条命令的使用帮助
dnf help clean查看所有的DNF命令及用途
dnf help查看DNF命令的执行历史
dnf history查看所有的软件包组
dnf grouplist安装一个软件包组
dnf groupinstall 'Educational Software'升级一个软件包组中的软件包
dnf groupupdate 'Educational Software'删除一个软件包组
dnf groupremove 'EDucational Software'从特定的软件包安装特定的软件
dnf --enablerepo=epel install phpmyadmin更新软件包都最新的稳定发行版:这个命令可以通过所有可用的软件源更新系统中所有已经安装的软件包到最新的稳定版本
dnf distro-sync重装特定软件包
def reinstall nano回滚某个特定的软件版本
dnf downgrade acpidyum和dnf命令差异在 DNF 中没有
--skip-broken命令,并且没有替代命令供选择在 DNF 中没有判断哪个包提供了指定依赖的
resolvedep命令在 DNF 中没有用来列出某个软件依赖包的 deplist 命令。
当你在 DNF 中排除了某个软件库,那么该操作将会影响到你之后所有的操作,不像在 YUM 下那样,你的排除操作只会在升级和安装软件时才起作用。
DNF插件和高级命令
DNF通过一些插件提供了安装debuginfo包或下载仓库中RPM的功能
YUM command
DNF command
提供的软件包
debuginfo-install
dnf debuginfo-install
dnf-plugins-core
repoquery
dnf repoquery
dnf-plugins-core
yum-builddep
dnf builddep
dnf-plugins-core
yum-config-manager
dnf config-manager
dnf-plugins-core
yumdownloader
dnf download
dnf-plugins-core
repo-graph
dnf repograph
dnf-plugins-extras-repograph
删除软件包同时清理系统中不再需要的依赖包
当删除某个不需要的软件包的时候,如何清理掉系统中因这个软件包而安装的一系列依赖软件包?
yum-utils工具package-cleanup提供了列出"leaf nodes"软件包的功能,这些依赖软件可以通过以下命令清理
package-cleanup --leaves从Fedora 18开始,可以简化成yum autoremove或者yum remove --setopt=clean_requirements_on_remove=1。所以最简单的命令方法是yum autoremove <package>
实际上,dnf提供了这个autoremove功能:
dnf autoremove <package>参考
Last updated
Was this helpful?