为了让用户不必担心这些程序代码之间的复杂的互相依赖关系, Linux 使用 包管理系统package management system 来跟踪哪些应用程序需要哪些库,哪些库或应用程序有安全或功能更新,以及每个软件会附带安装哪些额外的数据文件。包管理器本质上是一个安装向导。它们易于使用,提供了图形界面和基于终端的界面,让你的生活更轻松。你越了解你的发行版的包管理器,你的生活就会越轻松。
在 Linux 上安装应用程序
如果你在使用 Linux 桌面时,偶尔想要安装一个应用程序,那么你可能正在寻找 GNOME “软件”,它是一个桌面应用程序浏览器。
在安装应用程序之前,你可能需要确认它是否存在于你的发行版的服务器上。通常,使用 dnf搜索应用程序的通用名称就足够了。例如,假设你最近阅读了一篇关于 Cockpit 的文章,并决定尝试一下。你可以搜索cockpit验证该发行版是否包含它:
$ dnf search cockpit Last metadata expiration check: 0:01:46 ago on Tue 18 May 2021 19:18:15 NZST. ==== Name Exactly Matched: cockpit ==== cockpit.x86_64 : Web Console for Linux servers==== Name & Summary Matched: cockpit == cockpit-bridge.x86_64 : Cockpit bridge server-side component cockpit-composer.noarch : Composer GUI for use with Cockpit [...]
有一个精确的匹配。上面列出的匹配的软件包名为 cockpit.x86_64,但名称中的.x86_64部分仅表示它兼容该 CPU 架构。默认情况下,你的系统会安装适配当前 CPU 架构的软件包,因此你可以忽略该扩展名。所以你确认你要查找的软件包确实简称为cockpit。
如果你觉得你的搜索已 接近想要的结果,但还不确定,查看软件包的元数据通常会有所帮助,例如项目的网址和描述。要获取此信息,请使用顾名思义的dnf info命令:
$ dnf info terminatorAvailable PackagesName : terminatorVersion : 1.92Release : 2.el8Architecture : noarchSize : 526 kSource : terminator-1.92-2.el8.src.rpmRepository : epelSummary : Store and run multiple GNOME terminals in one windowURL : https://github.com/gnome-terminatorLicense : GPLv2Description : Multiple GNOME terminals in one window. This is a project to produce : an efficient way of filling a large area of screen space with : terminals. This is done by splitting the window into a resizeable : grid of terminals. As such, you can produce a very flexible : arrangements of terminals for different tasks.
这个信息告诉你可用软件包的版本、在你系统中注册的哪一个存储库提供了它、该项目的网站以及详细的功能描述。
哪个软件包提供的这个文件?
软件包名称并不总是与你要查找的内容相匹配。例如,假设你正在阅读的文档告诉你必须安装名为 qmake-qt5的东西:
$ dnf search qmake-qt5No matches found.
dnf数据库非常广泛,因此你不要局限于搜索完全匹配的内容。你可以使用dnf provides命令来了解你正在寻找的东西是否作为某个更大的软件包的一部分而提供:
$ dnf provides qmake-qt5qt5-qtbase-devel-5.12.5-8.el8.i686 : Development files for qt5-qtbaseRepo : appstreamMatched from:Filename : /usr/bin/qmake-qt5qt5-qtbase-devel-5.15.2-3.el8.x86_64 : Development files for qt5-qtbaseRepo : appstreamMatched from:Filename : /usr/bin/qmake-qt5
可以确认应用程序 qmake-qt5是名为qt5-qtbase-devel的软件包的一部分。它还告诉你,该应用程序会安装到/usr/bin,因此你知道了安装后它的确切位置。