Solaris IPS:pkg依赖性错误与实际问题没有关系/如何最好地诊断IPS依赖性失败?

我正在运行Solaris 11.3(目前来自非合同发行回购)。 我有大量的Solaris 10的经验,但我是11更新,并仍在努力获得与IPS的信心。

我的问题是,我经常发现我有严重的问题诊断程序包依赖性失败,因为pkg install的输出似乎与实际问题没有关系。 事实上,我现在想知道这是否是由一些错误或存储库问题引起的,我将在最后解释。

下面是我遇到的最近的两个问题,其中一个失败的pkg命令的输出与真正的问题完全无关。 在第一个例子中,这使我花了几天的时间追逐红鲱鱼,直到我最终偶然发现了所需的修复。

全局版本是Oracle Solaris 11.3.1.5.1( pkg/entire版本0.5.11-0.175.3.1.0.5.1 。)全局是从USB文本安装程序安装,从那时起我有版本解锁和更新所有在默认情况下安装在全球的FOSS软件包(按照这里的Oracle文档 ),另外安装了一些额外的支持软件包( vimscreentmux等)

在写这篇文章的时候,我重新创build了一个新安装的solaris-small-server区域的例子,没有任何其他的变化。 我上面描述的FOSS更新只发生在全局,而不是在用来重新运行下面的例子并捕获错误输出的区域。 下面列出的命令实际上是从默认区域AI清单创build后在testing区域中运行的第一个命令。

示例1 :我一直在尝试在非全局区域中安装工作的Gnome桌面,而不必在我的全局中安装软件包,我始终希望保持精简和清洁。

  1. zlogin zone pkg install --accept -v solaris-desktop :因为driver/audio/audio-usb表示它也必须安装在全局区域中。
  2. 我创build了一个名为solaris-desktop-zonesolaris-desktop的自定义版本,它删除了所有driver/*软件包,以及任何依赖于全局的软件包(我通过一个脚本在每个软件包上调用了pkg contents -mr删除了任何引用的feature/package/dependency/self 。)我将它安装到我的本地回购,这是一个pkg/mirror克隆http://pkg.oracle.com/solaris/release/
  3. 安装修改后的软件包会导致这个pastebin中显示的依赖性失败的长列表,这些列表似乎大部分与Python包相关。
  4. 我花了一天的时间来处理这些错误:手动和recursion地分析各种Python包和它们的依赖关系,并删除我在solaris-desktop-zone包中可以find的任何提示。 最后,我只好把包中的软件包删除,直到find能够通过Solver阶段的版本,然后从那里开始工作,找出一个软件包,并最终了解原因。

解决scheme? x11/server/xorg/driver/xorg-video ,它依赖于一个NVidia驱动,它也具有feature/package/dependency/self依赖。 事后看来,我可以更快地find这个自我依赖的recursionsearch – 即不仅检查我的solaris-desktop-zone软件包所依赖的所有软件包,还检查它们的所有依赖关系。 但是当然,我还是陷入了困境之中,认为这个问题是由Python程序包或者依赖于它们的包所造成的。

例2gcc-5

zlogin testdesktop pkg install --accept -nv gcc-5产生这个输出 。

又一次奇怪的Python错误列表,再次解决scheme是完全不相关的:我需要解锁一些版本相关的GCC:

 pkg change-facet version-lock.system/library/gcc/gcc-c-runtime=false \ version-lock.system/library/gcc/gcc-c++-runtime=false \ version-lock.system/library/gcc/gcc-gfortran-runtime=false \ version-lock.system/library/gcc/gcc-gobjc-runtime=false 

这个我很幸运地通过Google( 这里是在Unix的StackExchange上 )find的。 但我仍然感到困惑,因为回答者所描述的诊断与我所看到的不符 – 他在post中列出的心电图错误给出了一个可以理解的问题描述( Reason: This version is excluded by installed incorporation.. )。 我的这些无关的Python错误又一次!

现在当我写这篇文章的时候,我想知道是否在Solaris 11.3发行版中有一些奇怪的事情发生,也许是在我得到合同之前,我不能访问的SRU修复的。 也许这就是为什么我得到这些奇怪的错误,而不是可以理解的,可debugging的?

在这方面,我注意到可能有与Dbus Python有关的错误 – 我在这两个例子中看到的错误之一涉及到python-dbus-27 ,我注意到现在是一个过时的包,它只包含对dbus-python-27的依赖dbus-python-27 。 但是dbus-python-27不存在于回购中。 所以这可能是一个回购问题。

但即使如此,当我还有其他一些完全不相关的问题时,为什么我只能看到这些错误呢? 这是由回购问题引起的错误?

对于是否属于这种情况,我将不胜感激,一般来说,要了解有关debugging和解决软件包相关性问题的build议方法和工具的更多信息。 鉴于我得到的错误,我可以解决这个更快,而不诉诸每一个依赖软件包的蛮力检查?

提前致谢。

首先,一些configuration需要将软件包安装到全局区域(如果它们安装在非全局区域中)。 这是通过使用“父”依赖关系完成的,正如我在另一个回复中提到的: Solaris 11.3非全局区域不会inheritanceIPS方面更改(对版本locking)

对于solaris-desktop软件包的依赖性来说,这通常是正确的,因为它依赖于只有全局区域才能运行的服务(因为只有全局区域有实际的内核),例如驱动程序,NFS或其他特定服务。

'没有版本''可以find'错误是相当字面的; 它基本上意味着没有满足包依赖的版本在configuration库中。

不幸的是,您似乎发现了一些评估软件包的问题。 你没有做错什么,现在不行。 这是必须首先在内部解决的。

我不认为任何人已经testing了基本版本11.3与评估软件包的组合,并试图同时安装“solaris-desktop”。 这需要一些时间来解决,所以请耐心等待。

同时,如果您需要桌面configuration的系统,则最好的select是不要试图使用评估软件包,并首先在全局区域中安装solaris-desktop,然后再在非全局区域中安装solaris-desktop。 这是迄今为止最简单的select。

目前解决这个问题的唯一办法就是修改和重新发布给你提供问题的软件包,但目前我还不能指导你完成这个过程。 只要说一下,就需要在每个要修改的包上使用pkgrecv –raw,然后使用pkgsend将每个包重新发布到你自己的本地仓库。