您能帮我解决软件依赖问题吗?


12

这是关于编译依赖关系和包管理的规范问题

我有关于在我的* nix服务器上编译端口/软件或安装RPM的问题。当我尝试执行此操作时,会收到很多有关缺少依赖项的消息。

服务器故障社区能否提供帮助?

Answers:


10

欢迎使用服务器故障。通常,这种类型的问题不在此处。可以预期,大多数系统管理员在通过修改自己的工作站成为系统管理员之前就已经面临此问题。但是,来自Windows背景的系统管理员可能没有遇到过此问题,因此需要考虑以下几点:

为什么不使用程序包管理器在服务器上安装软件?

包管理器,例如yumapt为您处理这些依赖项。此外,它们还可以用于管理服务器上软件的更新。大多数* nix版本将默认安装软件包管理器,尤其是在预装有操作系统的VPS上。如果您真的是新手,请在您的生产系统上使用其中之一,并避免在为测试环境编译或安装最新RPM时冒险。

但是,我需要使用比软件包管理器中可用的软件包更新的软件包!

可以将大多数软件包管理器配置为使用不同的存储库-您可能会发现有一个可以提供所需软件包版本的存储库,并且仍然允许您利用软件包管理器的功能。

我需要的软件包无法通过任何存储库或软件包管理器获得

在这种情况下,您可能确实需要弄清依赖项(或者将其弄糟,并使用更稳定/更通用的软件版本)。您可能应该在测试环境中执行以下操作,并仔细记录所做的操作:

  • 确保阅读您正在安装的软件的文档-这可能会列出您首先需要安装的软件,而不是软件所需的软件。
  • 使用包管理器安装所需的东西-在大多数情况下,这些东西可用。
  • 完成此操作后,请尝试安装。
  • 如果仍然看到有关缺少依赖项的消息,请记下所有相关信息,然后再次尝试使用程序包管理器安装尽可能多的信息。
  • 如果找不到依赖项,则必须将其视为子任务并递归处理(查找源tarball,查找依赖项,安装)。
  • 这是一个反复的过程。

我仍然有问题!

如果您已按照上述所有步骤进行操作,但仍然遇到问题,则可能遇到了一些奇怪的问题,其他Server Faulter可能很乐意为您提供帮助。创建一个新问题,详细说明您要安装的软件,版本以及所看到的确切错误消息。

有关主要包装管理系统的具体建议

RPM(RHEL / Fedora和克隆)和DEB(Debian / Ubuntu和克隆)软件包管理

  • yum whatprovides filename是在RHEL类型系统上查找提供特定文件或库的软件包的绝佳方法。
  • 请勿./configure && make && make install盲目使用!出于这个原因发明了程序包管理,以防止由于无法跟踪的许多冲突文件的安装而导致的尴尬和难以维护的混乱。
  • 许多库分为两部分:二进制文件(例如,共享对象)和开发文件(标头)。因此,您需要同时使用libfoo和和libfoo-devel(或-dev)软件包。
  • 考虑使用fpmhttps://github.com/jordansissel/fpm)将tarball转换为整齐的RPM和DEB
  • 如果您要滚动自己的软件包,则由他们负责更新,测试和维护。如果您没有用于此目的的基础架构,那么您的目标肯定是太高了。

通过文件名查找RPM的依赖关系

如果您知道安装过程中抱怨的文件名,则http://rpmfind.net是查找软件包名称的好地方。但是,不建议匹配和混合来自不同发行版的软件包。


我认为提供一个讨论库依赖关系的部分会很有用,这可能会有些棘手,但我对此经验不足,有人愿意贡献吗?
dunxd

我强烈推荐的项目将包括有关src RPM的详细信息以及如何维护自定义本地存储库。建立deb或rpm文件应该是任何必须满足非常规软件包要求的工具带的一部分。
蒂姆·布里格姆

可能值得将其扩展到涉及应用程序堆栈及其陷阱的话题。“最新软件包”的问题使我想起了最近的一个
安德鲁B

这是一个社区Wiki,因此可以随意添加,或者当然可以提供您自己的答案:-)
dunxd
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.