如何使用DNF安装和删除包
DNF(Dandified Yum)可以被视为yum utility的更新版本。
DNF实用程序在内存使用情况下,CPU利用率和各种其他与性能相关的因素方面远比其他包管理员更好。
在本教程中,让我们讨论如何使用DNF包管理工具使用示例安装和删除包。
如何安装包
在开始安装包之前,谨慎才能搜索和验证包是否可用。
我们使用"搜索"选项执行此操作,如下所示。
dnf search package-name
在此示例中,我们搜索HTTPD包是否可用于安装。
dnf search httpd
示例输出
# dnf search httpd Last metadata expiration check: 0:15:31 ago on Sun 04 Nov 2016 02:36:58 PM UTC. ===================================================================== Name Exactly Matched: httpd ====================================================================== httpd.x86_64 : Apache HTTP Server ==================================================================== Summary & Name Matched: httpd ===================================================================== radicale-httpd.noarch : httpd config for Radicale drupal8-httpd.noarch : HTTPD integration for drupal8 owncloud-httpd.noarch : Httpd integration for ownCloud openqa-httpd.noarch : openQA httpd (Apache) integration iipsrv-httpd-fcgi.noarch : Apache HTTPD files for iipsrv nextcloud-httpd.noarch : Httpd integration for NextCloud libmicrohttpd-doc.noarch : Documentation for libmicrohttpd anyterm-httpd.x86_64 : Httpd proxy configuration for anyterm gambas3-gb-httpd.x86_64 : Gambas3 component package for httpd mingw32-libmicrohttpd.noarch : MinGW package for libmicrohttpd mingw64-libmicrohttpd.noarch : MinGW package for libmicrohttpd libmicrohttpd-devel.i686 : Development files for libmicrohttpd libmicrohttpd-devel.x86_64 : Development files for libmicrohttpd httpdtap.noarch : Tool for querying httpd using SystemTap scripts
在上面的输出中,我们可以获得突出显示的包httpd的所有可能性。
要安装包,请以root用户身份登录并在下面运行该命令。
在此示例中,我们正在安装Apache Web服务器。
$sudo dnf install httpd
如何从特定存储库安装包
使用dnf命令,我们还可以为包安装选择特定的存储库。
让我们首先通过运行以下命令,请参阅Fedora 27系统中安装的可用存储库。
dnf repolist
输出
Last metadata expiration check: 0:56:19 ago on Sun 04 Nov 2016 02:36:58 PM UTC. repo id repo name status *fedora Fedora 27 - x86_64 54,801 *updates Fedora 27 - x86_64 - Updates 10,909
现在让我们从* fedora存储库安装一个名为nano的包。
$sudo dnf --enablerepo=*fedora install nano
如何删除包
DNF还使我们能够删除计算机上不再需要的包。
类似于安装命令,我们需要做的就是标识包然后在终端中运行命令:
$sudo dnf remove httpd
此后,将删除与httpd相关的包。
注意:或者,我们可以使用"erase"选项代替删除,也可以从系统中取消安装软件包。
dnf erase httpd
上面的命令删除了与httpd相关的所有包,输出将是相同的。
如何从选定的存储库中删除所有包
要从特定存储库中删除所有包,我们首先需要获取其存储库ID。
为此,我们运行以下命令
dnf -v repolist
示例输出
Last metadata expiration check: 0:16:19 ago on Thu 08 Nov 2016 11:11:11 AM EAT. Repo-id : fedora Repo-name : Fedora 27 - x86_64 Repo-revision: 1509861107 Repo-updated : Sun 05 Nov 2016 08:51:47 AM EAT Repo-pkgs : 54,801 Repo-size : 57 G Repo-metalink: https://mirrors.fedoraproject.org/metalink?repo=fedora-27&arch=x86_64 Updated : Thu 08 Nov 2016 11:11:11 AM EAT Repo-baseurl : http://mirror.liquidtelecom.com/fedora/fedora/linux/releases/27/Everything/x86_64/os/(9 more) Repo-expire : 604,800 second(s) (last: Thu 08 Nov 2016 11:11:11 AM EAT) Repo-filename: /etc/yum.repos.d/fedora.repo Repo-id : updates Repo-name : Fedora 27 - x86_64 - Updates Repo-revision: 1518007515 Repo-updated : Wed 07 Nov 2016 04:11:08 PM EAT Repo-pkgs : 11,334 Repo-size : 21 G Repo-metalink: https://mirrors.fedoraproject.org/metalink?repo=updates-released-f27&arch=x86_64 Updated : Thu 08 Nov 2016 11:10:29 AM EAT Repo-baseurl : http://mirror.wbs.co.za/fedora-enchilada/updates/27/x86_64/(246 more) Repo-expire : 21,600 second(s) (last: Thu 08 Nov 2016 11:10:29 AM EAT) Repo-filename: /etc/yum.repos.d/fedora-updates.repo Total packages: 66,135
正如我们在上面的输出中看到的,我们有2个repo-ids -fedora和更新。
现在,我们可以使用以下命令继续从特定存储库中删除所有包
dnf repository-packages repo-id remove
例如,如果我们要从Fedora存储库中删除所有包,我们运行
dnf repository-packages fedora remove
其中Fedora是repo-id。
说明:
对于父repo-id的,我们将在终端中获得警报某些软件包是受保护的系统。
例如
dnf repository-packages fedora remove
示例输出
Problem 1: The operation would result in removing the following protected packages: dnf, kernel-core, systemd, systemd-udev Problem 2: The operation would result in removing the following protected packages: dnf, kernel-core, systemd, systemd-udev Problem 3: The operation would result in removing the following protected packages: dnf, kernel-core, systemd, systemd-udev Problem 4: The operation would result in removing the following protected packages: dnf, kernel-core, systemd, systemd-udev
如何列出和删除包
我们可以使用dnf列表命令获取已安装和可用包的列表。
要生成已安装的包列表,请运行以下命令:
$sudo dnf list installed | cat -n
参数'cat -n'用于编号终端输出上的软件包。
示例输出
1 Last metadata expiration check: 1:22:04 ago on Sun 04 Nov 2016 02:36:58 PM UTC. 2 Installed Packages 3 GeoIP.x86_64 1.6.11-3.fc27 @anaconda 4 GeoIP-GeoLite-data.noarch 2016.10-1.fc27 @anaconda 5 acl.x86_64 2.2.52-18.fc27 @anaconda 6 apr.x86_64 1.6.3-1.fc27 @updates 7 apr-util.x86_64 1.6.1-2.fc27 @updates 8 audit.x86_64 2.7.8-1.fc27 @anaconda 9 audit-libs.x86_64 2.7.8-1.fc27 @anaconda 10 audit-libs-python3.x86_64 2.7.8-1.fc27 @anaconda 11 basesystem.noarch 11-4.fc27 @anaconda 12 bash.x86_64 4.4.12-12.fc27 @anaconda 13 bind99-libs.x86_64 9.9.11-2.fc27 @anaconda 14 bind99-license.noarch 9.9.11-2.fc27 @anaconda 15 bzip2.x86_64 1.0.6-24.fc27 @anaconda 16 bzip2-libs.x86_64 1.0.6-24.fc27 @anaconda 17 c-ares.x86_64 1.13.0-3.fc27 @anaconda
但是,如果要列出用于安装的可用软件包,请运行以下命令:
$sudo dnf list available | cat -n
同样,参数'cat -n'用于编号终端输出的包。
示例输出
1 Last metadata expiration check: 0:08:29 ago on Mon 05 Nov 2016 02:04:09 PM EAT. 2 Available Packages 3 0ad.x86_64 0.0.22-2.fc27 fedora 4 0ad-data.noarch 0.0.22-1.fc27 fedora 5 0install.x86_64 2.12.1-1.fc27 fedora 6 0xFFFF.x86_64 0.3.9-15.fc26 fedora 7 2048-cli.x86_64 0.9.1-4.fc27 fedora 8 2048-cli-nocurses.x86_64 0.9.1-4.fc27 fedora 9 2048-cli-sdl.x86_64 0.9.1-4.fc27 fedora 10 2ping.noarch 4.1-1.fc27 fedora 11 389-admin.i686 1.1.46-1.fc27.3 fedora 12 389-admin.x86_64 1.1.46-1.fc27.3 fedora 13 389-admin-console.noarch 1.1.12-3.fc27 fedora 14 389-admin-console-doc.noarch 1.1.12-3.fc27 fedora 15 389-adminutil.i686 1.1.23-4.fc27 fedora
自动重复选项
"自动重叠"选项用于卸载唯一安装的软件包作为已安装软件包的依赖项,但不再需要此类软件包。
要卸载依赖项,请运行以下命令:
$dnf autoremove