从RPM软件包安装软件

了解如何从Linux中的RPM软件包安装软件。 您还将学习如何在系统上升级,删除和管理RPM软件包。

什么是RPM >

RPM代表Red Hat Package Manager。 但是,这些天RPM不仅限于Red Hat,因为许多其他Linux发行版都使用RPM来管理其软件。 例如,Mandriva和SuSE都使用RPM进行软件管理。 使用RPM,您可以在Linux上安装,升级和卸载软件,以及跟踪系统上已经安装的RPM软件包。 之所以可以这样做是因为RPM保留了与之一起安装的所有软件的数据库。

RPM使用具有(惊喜)的软件包 .rpm 延期。 RPM软件包包含安装的实际软件,可能是软件的一些附加文件,软件及其文件安装位置的信息,以及系统上需要运行此特定文件的其他文件列表软件

当您使用RPM安装软件包时,RPM会检查您的系统是否适合RPM软件包所包含的软件,找出软件包提供的文件的安装位置,将其安装到您的系统上,并将该软件添加到其中。已安装RPM包的数据库。

请注意,不同的Linux发行版可能会将其软件以及与该软件相关的文件保存在不同的目录中。 因此,使用为您的发行版制作的RPM软件包很重要。 例如,如果您在Red Hat系统上安装了SuSE特定的软件包,则RPM可能会将来自该软件包的文件放入错误的目录中。 在最坏的情况下,结果是该程序找不到所需的所有文件,并且无法正常运行。

有一些用于安装RPM软件包的好的图形程序,但是在此tuXfile中,我将讨论用于安装软件的简单命令行方法。 请注意,在Linux中安装软件时,您需要是root用户。 拥有root特权后,您可以使用 rpm 命令以及适当的选项来管理RPM软件包。

安装和升级RPM软件包 >

要安装软件包,请使用 rpm 命令与 -i 选项(代表“安装”)。 例如,要安装一个名为 software-2.3.4.rpm:
rpm -i software-2.3.4.rpm

如果您已在系统上安装了某个版本并希望将其升级到新版本,则使用 -U 选项(代表“升级”)。 例如,如果您有 software-2.3.3.rpm 已安装并想升级它:
rpm -U software-2.3.4.rpm

如果一切顺利,您的软件包中的文件将安装到您的系统中,您可以愉快地运行您的新程序。 但是你的新计划在哪里? 注意 rpm 通常不会为软件包的文件创建特殊目录。 而是将软件包中的其他文件放入Linux系统上适当的现有目录中。 使用rpm安装后,可执行程序通常进入/ bin,/ usr / bin,/ usr / X11 / bin或/ usr / X11R6 / bin。

但是,如果您不知道可执行文件在哪里,如何运行新程序? 有时该程序会自动添加到菜单中,但是通常您可以通过在命令提示符下键入其名称来运行该程序。 在大多数情况下,您不必知道程序的安装位置,因为在运行程序时不必键入整个路径,只需要程序的名称即可。

错误:依赖项失败 >

发行 rpm -i or rpm -U 安装该软件,您就可以开始使用它了。 RPM在工作时非常容易。 但是,RPM在不起作用时可能会成为魔鬼。 安装软件出错的原因有很多,但通常是因为 失败的依赖.

你看,许多Linux程序需要其他文件或程序才能正常工作。 换句话说,某个软件 依靠 在其他软件上。 当您尝试安装RPM软件包时,RPM会自动检查其数据库中是否有正在安装的软件所需的其他文件。 如果RPM在其数据库中找不到这些文件,它将停止安装该软件并抱怨依赖项失败。

当您遇到依赖性错误时,RPM会发出程序需要的文件列表。 看一下清单。 列表中的文件可能是系统上没有的文件,或者是文件但版本错误。 当您收到可怕的依赖错误时,您将必须找到RPM抱怨的文件,首先安装或升级这些文件,然后尝试首先安装要安装的软件包。

但是,有时RPM只是愚蠢的。 你看,只有安装的软件 RPM 被添加到已安装软件的数据库中。 这意味着,如果您使用其他方法来安装某个程序,则RPM不知道该程序存在于系统中。 在这种情况下,即使系统上确实存在所需的程序并且没有失败的依赖项,RPM也会抱怨依赖项失败!

如果你 知道 所需的文件在那里,RPM只是愚蠢的,你可以忽略依赖。 使用 --nodeps 如果您想在安装软件包之前告诉RPM不检查任何依赖项,请执行以下选项:
rpm -i software-2.3.4.rpm --nodeps

这迫使RPM忽略依赖项错误并仍然安装软件,但是请注意,如果仍然缺少所需的文件,则该程序将无法正常运行或根本无法正常工作。 使用 --nodeps 仅当您知道自己在做什么或足够头脑头脑时才选择😉

删除随RPM安装的软件 >

要删除使用RPM安装的软件,请使用 -e 选项(代表“擦除”):
rpm -e software-2.3.4

请注意,当 安装 在软件中,您必须键入RPM包的名称。 但当 删除 软件,则不必键入包含该软件的软件包的全名。 您不必输入 .rpm 扩展时删除软件。 也许您也不必键入版本号,因此这与上面的操作完全相同:
rpm -e software

本篇 rpm -e 命令使用RPM数据库检查安装了与该软件相关的所有文件的位置,然后自动删除所有这些文件。 删除程序文件后,它还会从已安装软件的数据库中删除该程序。

这就是为什么您从不手动删除RPM软件(例如,使用以下命令删除单个文件)如此重要的原因 rm)。 如果您只是在系统中随机删除RPM安装的文件,那么您将摆脱该软件,但RPM不知道该软件,也不会从其数据库中删除该软件包。 结果是RPM仍然认为该程序已安装在您的系统上,以后可能会遇到依赖性问题。

如果您使用RPM安装某个软件,请使用RPM删除该软件!

查询RPM数据库 >

如您所知,RPM数据库包含系统上所有已安装RPM包的列表。 您可以查询此数据库以获取Linux系统上的软件包的信息。 要查询单个包,请使用 -q 选项。 例如,查询名称为“ software”的软件包:
rpm -q software

发出此命令后, rpm 要么告诉您软件包的版本,要么未安装该软件包。

如果要获取系统上已安装的所有软件包的列表,则必须使用 -qa:
rpm -qa

此列表很可能很长,因此您需要一种滚动它的方法。 最好的方法是将列表传递到 less:
rpm -qa | less

如果要查找名称包含特定单词的软件包,则可以使用 grep 查找那些软件包。 例如,要获取名称中包含“ kde”一词的所有已安装RPM软件包的列表,可以执行以下操作:
rpm -qa | grep kde

上面的命令使 rpm 列出其数据库中的所有包并将列表传递给 grep。 然后 grep 检查每一行是否包含“ kde”,最后向您显示所有包含“ kde”一词的行。

如果你不知道是什么 grep 或管道,请查看“重定向标准输入和输出tuXfile”。