UNPKG

8.58 kBMarkdownView Raw
1dnf
2===
3
4新一代的RPM软件包管理器
5
6## 补充说明
7
8**DNF** 是新一代的rpm软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近,它取代了yum,正式成为 Fedora 22 的包管理器。
9
10DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。DNF使用 RPM, libsolv 和 hawkey 库进行包管理操作。尽管它没有预装在 CentOS 和 RHEL 7 中,但你可以在使用 YUM 的同时使用 DNF 。你可以在这里获得关于 DNF 的更多知识:《 DNF 代替 YUM ,你所不知道的缘由》
11
12DNF 的最新稳定发行版版本号是 1.0,发行日期是2015年5月11日。 这一版本的额 DNF 包管理器(包括在他之前的所有版本) 都大部分采用 Python 编写,发行许可为GPL v2.
13
14### 安装 DNF 包管理器
15
16DNF 并未默认安装在 RHEL 或 CentOS 7系统中,但是 Fedora 22 已经默认使用 DNF .
17
181、为了安装 DNF ,您必须先安装并启用 epel-release 依赖。
19
20在系统中执行以下命令:
21
22```shell
23yum install epel-release
24```
25
26或者
27
28```shell
29yum install epel-release -y
30```
31
32其实这里并没有强制使用”-y”的理由,相反的,在不使用”-y”的情况下,用户可以在安装过程中查看到底有哪些东西被安装进了系统。但对于没有这个需求的用户,您可以在 YUM 中使用”-y”参数来自动安装所有东西。
33
342、使用 epel-release 依赖中的 YUM 命令来安装 DNF 包。在系统中执行以下命令:
35
36```shell
37yum install dnf
38```
39
40然后, DNF 包管理器就被成功的安装到你的系统中了。接下来,是时候开始我们的教程了!在这个教程中,您将会学到27个用于 DNF 包管理器的命令。使用这些命令,你可以方便有效的管理您系统中的 RPM 软件包。现在,让我们开始学习 DNF 包管理器的27条常用命令吧!
41
42**查看 DNF 包管理器版本**
43
44用处:该命令用于查看安装在您系统中的 DNF 包管理器的版本
45
46```shell
47dnf –version
48```
49
50!Check-DNF-Version
51
52**查看系统中可用的 DNF 软件库**
53
54用处:该命令用于显示系统中可用的 DNF 软件库
55
56```shell
57dnf repolist
58```
59
60**查看系统中可用和不可用的所有的 DNF 软件库**
61
62用处:该命令用于显示系统中可用和不可用的所有的 DNF 软件库
63
64```shell
65dnf repolist all
66```
67
68**列出所有 RPM 包**
69
70用处:该命令用于列出用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包
71
72```shell
73dnf list
74```
75
76**列出所有安装了的 RPM 包**
77
78用处:该命令用于列出所有安装了的 RPM 包
79
80```shell
81dnf list installed
82```
83
84**列出所有可供安装的 RPM 包**
85
86用处:该命令用于列出来自所有可用软件库的可供安装的软件包
87
88```shell
89dnf list available
90```
91
92**搜索软件库中的 RPM 包**
93
94用处:当你不知道你想要安装的软件的准确名称时,你可以用该命令来搜索软件包。你需要在”search”参数后面键入软件的部分名称来搜索。(在本例中我们使用”nano”)
95
96```shell
97dnf search nano
98```
99
100**查找某一文件的提供者**
101
102用处:当你想要查看是哪个软件包提供了系统中的某一文件时,你可以使用这条命令。(在本例中,我们将查找”/bin/bash”这个文件的提供者)
103
104```shell
105dnf provides /bin/bash
106```
107
108**查看软件包详情**
109
110用处:当你想在安装某一个软件包之前查看它的详细信息时,这条命令可以帮到你。(在本例中,我们将查看”nano”这一软件包的详细信息)
111
112```shell
113dnf info nano
114```
115
116**安装软件包**
117
118用处:使用该命令,系统将会自动安装对应的软件及其所需的所有依赖(在本例中,我们将用该命令安装nano软件)
119
120```shell
121dnf install nano
122```
123
124**升级软件包**
125
126用处:该命令用于升级制定软件包(在本例中,我们将用命令升级”systemd”这一软件包)
127
128```shell
129dnf update systemd
130```
131
132**检查系统软件包的更新**
133
134用处:该命令用于检查系统中所有软件包的更新
135
136```shell
137dnf check-update
138```
139
140**升级所有系统软件包**
141
142用处:该命令用于升级系统中所有有可用升级的软件包
143
144```shell
145dnf update 或 dnf upgrade
146```
147
148**删除软件包**
149
150用处:删除系统中指定的软件包(在本例中我们将使用命令删除”nano”这一软件包)
151
152```shell
153dnf remove nano 或 dnf erase nano
154```
155
156**删除无用孤立的软件包**
157
158用处:当没有软件再依赖它们时,某一些用于解决特定软件依赖的软件包将会变得没有存在的意义,该命令就是用来自动移除这些没用的孤立软件包。
159
160```shell
161dnf autoremove
162```
163
164**删除缓存的无用软件包**
165
166用处:在使用 DNF 的过程中,会因为各种原因在系统中残留各种过时的文件和未完成的编译工程。我们可以使用该命令来删除这些没用的垃圾文件。
167
168```shell
169dnf clean all
170```
171
172**获取有关某条命令的使用帮助**
173
174用处:该命令用于获取有关某条命令的使用帮助(包括可用于该命令的参数和该命令的用途说明)(本例中我们将使用命令获取有关命令”clean”的使用帮助)
175
176```shell
177dnf help clean
178```
179
180**查看所有的 DNF 命令及其用途**
181
182用处:该命令用于列出所有的 DNF 命令及其用途
183
184```shell
185dnf help
186```
187
188**查看 DNF 命令的执行历史**
189
190用处:您可以使用该命令来查看您系统上 DNF 命令的执行历史。通过这个手段您可以知道在自您使用 DNF 开始有什么软件被安装和卸载。
191
192```shell
193dnf history
194```
195
196**查看所有的软件包组**
197
198用处:该命令用于列出所有的软件包组
199
200```shell
201dnf grouplist
202```
203
204**安装一个软件包组**
205
206用处:该命令用于安装一个软件包组(本例中,我们将用命令安装”Educational Software”这个软件包组)
207
208```shell
209dnf groupinstall ‘Educational Software’
210```
211
212**升级一个软件包组中的软件包**
213
214用处:该命令用于升级一个软件包组中的软件包(本例中,我们将用命令升级”Educational Software”这个软件包组中的软件)
215
216```shell
217dnf groupupdate ‘Educational Software’
218```
219
220**删除一个软件包组**
221
222用处:该命令用于删除一个软件包组(本例中,我们将用命令删除”Educational Software”这个软件包组)
223
224```shell
225dnf groupremove ‘Educational Software’
226```
227
228**从特定的软件包库安装特定的软件**
229
230用处:该命令用于从特定的软件包库安装特定的软件(本例中我们将使用命令从软件包库 epel 中安装 phpmyadmin 软件包)
231
232```shell
233dnf –enablerepo=epel install phpmyadmin
234```
235
236**更新软件包到最新的稳定发行版**
237
238用处:该命令可以通过所有可用的软件源将已经安装的所有软件包更新到最新的稳定发行版
239
240```shell
241dnf distro-sync
242```
243
244**重新安装特定软件包**
245
246用处:该命令用于重新安装特定软件包(本例中,我们将使用命令重新安装”nano”这个软件包)
247
248```shell
249dnf reinstall nano
250```
251
252**回滚某个特定软件的版本**
253
254用处:该命令用于降低特定软件包的版本(如果可能的话)(本例中,我们将使用命令降低”acpid”这个软件包的版本)
255
256```shell
257dnf downgrade acpid
258```
259
260样例输出:
261
262```shell
263Using metadata from Wed May 20 12:44:59 2015
264No match for available package: acpid-2.0.19-5.el7.x86_64
265Error: Nothing to do.
266```
267
268原作者注:在执行这条命令的时候, DNF 并没有按照我期望的那样降级指定的软件(“acpid”)。该问题已经上报。
269
270### 总结
271
272DNF 包管理器作为 YUM 包管理器的升级替代品,它能自动完成更多的操作。但在我看来,正因如此,所以 DNF 包管理器不会太受那些经验老道的 Linux 系统管理者的欢迎。举例如下:
273
2741. 在 DNF 中没有 –skip-broken 命令,并且没有替代命令供选择。
2752. 在 DNF 中没有判断哪个包提供了指定依赖的 resolvedep 命令。
2763. 在 DNF 中没有用来列出某个软件依赖包的 deplist 命令。
2774. 当你在 DNF 中排除了某个软件库,那么该操作将会影响到你之后所有的操作,不像在 YUM 下那样,你的排除操作只会咋升级和安装软件时才起作用。
278
279
280<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
\No newline at end of file