RPM 是编译好的文件包,使用起来很方便。问题是有些 RPM需要很多依赖这很烦人。我必须搜索并下载依赖项 RPM。
或者,我可以下载源代码,然后使用 ' ./configure
' -> ' make
' -> ' make install
' 进行安装。make
与 RPM 相比,' ' 过程有点麻烦,但 ' make
' 解决了依赖性问题。
你能从安装角度告诉我 RPM 安装和 ' ' 源代码之间的区别吗make
?谢谢!
编辑:例如,我正在安装RabbitMQ在 RH 中。我无法从 RPM 安装它,因为它需要很多依赖项。但我设法通过“make”源代码安装了它。所以差异让我感到困惑。
答案1
configure
维护由、make
、处理的软件make install
是不可能维护的。你看不到它在那里,你不知道哪些文件属于它,你通常无法删除它,升级它也很麻烦(你必须记住它,检查站点以获取更新并一遍又一遍地重复所有这些操作)。
只要有可能,就使用发行版存储库或第三方存储库中的软件包,如果不可能,则构建自己的 RPM 文件并安装它们。如果您使用存储库软件包,则无需担心依赖关系,它们会自动被拉入,并且更新非常简单,yum update
您就大功告成了。
此外,如果您从源代码安装的软件具有 RPM 形式的某些依赖项,并且在从源代码安装时没有满足这些依赖项,则可能会缺少软件包维护者认为足够重要以保证依赖项的功能。例如,您可以构建一个数据库 CLI 界面,无论mysql
是否psql
安装readline
,但您会错过此库提供的所有历史记录和编辑功能。然而,在许多/大多数情况下,构建将失败,因为依赖项不是可选的而是强制性的。
答案2
假设是 RHEL/CentOS,尝试 yum local install,它会为您拉下依赖项,而 rpm -Uvh 则不会。
回答你的问题,makefile 通常从源代码编译和安装,而 rpm 包是预编译的二进制文件。Make 不会为你“解决”依赖关系问题,但是源包可能包含一些分发包可能不包含的依赖关系。
这是因为针对特定操作系统编译的软件包应使用可用的发行版软件包。例如,当软件包包含系统提供的库的自有版本时,Debian 通常会拒绝该软件包。这是为了减轻维护负担,鼓励良好的软件开发实践,并避免依赖地狱 - 即一个系统上有多个相互冲突的同一软件包版本。
通用 Linux 软件包不知道它将安装在哪个系统上,因此它要么包含更多依赖项,要么提供依赖项列表,您也必须安装这些依赖项。后一种情况更常见,您可以看到这种情况会变得多么难以处理。
当您使用 rpm 安装 Rabbitmq 时,您不会安装其任何依赖项。您需要使用包管理器(例如 CentOS 上的 yum),它将为您管理依赖项。
我强烈建议使用 rpm 包。