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

这是一个关于编译依赖和包pipe理的典型问题 。

我有一个关于编译端口/软件或在我的* nix服务器上安装RPM的问题。 当我尝试这样做时,会收到很多关于缺less依赖关系的消息。

服务器故障社区可以帮忙吗?

欢迎来到服务器故障。 总的来说,这种types的问题不在这里讨论。 预计大多数系统pipe理员在通过修改自己的工作站成为系统pipe理员之前就已经面临这个问题。 但是,来自Windows背景的系统pipe理员可能不会遇到这个问题,所以这里有一些需要考虑的事情:

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

软件包pipe理器(如yumapt为您处理这些依赖关系。 另外,它们也可以用来pipe理服务器上软件的更新。 大多数* nix的版本都会默认安装一个软件包pipe理器,尤其是在预装操作系统的VPS上。 如果您真的不熟悉这一点,请在您的生产系统上使用其中之一,并在编译或安装testing环境的最新版RPM时节省冒险。

但是我需要使用比我的软件包pipe理器更新的软件包!

大多数软件包pipe理器可以configuration为使用不同的软件仓库 – 您可能会发现有一个软件包提供了您需要的软件包版本,并且仍然允许您利用软件包pipe理器的function。

我需要的软件包不能通过任何回购或软件包pipe理器使用

在这种情况下,您可能需要确定依赖关系(或者吸取它并使用更稳定/通用的软件版本)。 您应该在testing环境中执行以下操作,并仔细logging您的操作:

  • 请务必阅读正在安装的软件的文档 – 这可能会列出您需要首先安装的软件,而不是软件所需的软件。
  • 使用你的软件包pipe理器来安装所需的东西 – 在大多数情况下,这些是可用的。
  • 一旦你完成了这个,尝试安装。
  • 如果您仍然看到有关缺less依赖项的消息,请记下所有这些消息,然后再次尝试使用软件包pipe理器尽可能多地进行安装。
  • 如果没有find依赖关系,则必须将其视为一个子任务,并recursion处理它(find源代码包,find依赖关系,安装)。
  • 这是一个反复的过程。

我仍然有问题!

如果你已经遵循了上述所有步骤,并且仍然遇到麻烦,那么你可能会遇到一些其他服务器故障者可能乐意提供帮助的奇怪问题。 创build一个新的问题,提供您正在尝试安装哪些软件,哪个版本以及您所看到的确切错误消息的详细信息。

针对主要包裹pipe理系统的具体build议

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

  • yum whatprovides文件名是一个很好的方式来find在RHELtypes系统上提供特定文件或库的软件包。
  • 如果可能, ./configure && make && make install不要使用./configure && make && make install ! 软件包pipe理是为了这个原因而发明的,以防止由于难以追踪的安装许多相冲突的文件而导致的笨拙和难以维护的混乱。
  • 许多库分为两部分:二进制(例如共享对象)和开发(头文件)。 因此,你需要libfoolibfoo-devel (或者-dev )包。
  • 考虑使用fpmhttps://github.com/jordansissel/fpm )将tarball转换成整洁的RPM和DEB
  • 如果您正在自行打包,则您是负责更新,testing和维护的人员。 如果你没有这方面的基础设施,那你肯定是瞄得太高。

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

http://rpmfind.net是查找软件包名称的好地方,如果您知道安装过程中抱怨的文件名称。 不过,我们不build议从不同版本的软件包中进行匹配和混合。