如何使用DNF安装和删除包

时间:2020-03-05 15:30:14  来源:igfitidea点击:

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