AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 854940
Accepted
TheBloke
TheBloke
Asked: 2017-06-10 11:59:49 +0800 CST2017-06-10 11:59:49 +0800 CST 2017-06-10 11:59:49 +0800 CST

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

  • 772

我正在运行 Solaris 11.3(目前来自非合同版本 repo)。我有大量的 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 docs here),并额外安装了一些额外的支持包(vim、screen、tmux等)

在写这篇文章时,我从新安装的solaris-small-server区域的位置重新创建了两个示例,没有其他更改;我上面描述的 FOSS 更新仅发生在全局中,而不发生在用于重新运行以下示例并捕获错误输出的区域中。下面列出的命令实际上是从默认区域 AI 清单创建后在测试区域中运行的第一个命令。

示例 1:我一直在尝试在非全局区域中安装一个正常工作的 Gnome 桌面,而不必在我的全局中安装我一直希望保持精简和干净的包。

  1. zlogin zone pkg install --accept -v solaris-desktop: 失败,因为driver/audio/audio-usb说它还必须安装在全局区域中。
  2. 我创建了一个solaris-desktop名为 called的自定义版本,solaris-desktop-zone它删除了所有driver/*包,以及任何依赖于全局的包(我通过调用pkg contents -mr每个包的脚本删除了它并删除了任何引用的包feature/package/dependency/self。)我将它安装到我的本地 repo,它是. pkg/mirror_http://pkg.oracle.com/solaris/release/
  3. 安装我修改过的包会导致这个 pastebin中显示的一长串依赖失败,这些似乎主要与 Python 包有关。
  4. 我花了一天的时间来解决这些错误:手动和递归地分析各种 Python 包及其依赖项,并删除我在solaris-desktop-zone包中可以找到的任何提及它们的内容。最终,我只好删除成群的包,直到找到一个可以通过 Solver 阶段的版本,然后从那里向后工作以识别一个包并最终了解原因。

解决方案? x11/server/xorg/driver/xorg-video这取决于也具有feature/package/dependency/self依赖关系的 NVidia 驱动程序。事后看来,我可以通过递归搜索该自依赖来更快地发现这一点 - 即不仅检查我的包所依赖的所有solaris-desktop-zone包,还检查它们的所有依赖项。但是我当然陷入了困境,从错误中相信问题与 Python 包或依赖于它们的包有关。

示例 2:gcc-5

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

同样的奇怪 Python 错误列表,同样,解决方案完全不相关:我需要解锁一些与 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 上)。但是我仍然感到困惑,因为回答它的人描述的诊断与我所看到的不符 - 他的帖子中列出的 pkg 错误对问题给出了可以理解的描述(Reason: This version is excluded by installed incorporation..)。我的又出现了这些不相关的 Python 错误!

现在,当我写这篇文章时,我想知道在 Solaris 11.3 发行版存储库中是否发生了一些奇怪的事情,可能是由一个 SRU 修复的,我在获得合同之前无法访问。也许这就是为什么我得到这些奇怪的错误而不是可以理解的、可调试的错误?

在这方面,我确实注意到 Dbus Python 可能存在一些错误 - 我在两个示例中看到的错误之一都python-dbus-27与dbus-python-27. 但dbus-python-27在 repo 中不存在。所以这可能是一个回购问题。

但即使是这样,为什么我只有在遇到其他完全不相关的问题时才会看到这些错误?这是由回购问题引起的错误吗?

我将不胜感激确认是否是这种情况,并且总体上了解有关用于调试和解决包依赖性问题的建议方法和工具的更多信息。鉴于我得到的错误,我是否可以在不诉诸暴力检查每个依赖包的情况下更快地解决这个问题?

提前致谢。

solaris
  • 1 1 个回答
  • 1210 Views

1 个回答

  • Voted
  1. Best Answer
    Shawn Walker-Salas
    2017-06-11T09:41:41+08:002017-06-11T09:41:41+08:00

    首先,如果某些配置安装在非全局区域中,则需要将它们安装到全局区域中。这是通过使用“父”依赖项来完成的,正如我在另一个回复中提到的那样:Solaris 11.3 non-global zone not inheriting IPS facet changes (to version-lock)

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

    'no version' 'can be found' 错误是相当字面的;它基本上意味着在配置存储库中没有满足包依赖关系的版本。

    不幸的是,您似乎发现了一些评估包的问题。你没有做错任何事,只是现在行不通。这是必须首先在内部解决的问题。

    我认为没有人测试过基本 11.3 版本与评估包的组合并尝试同时安装“solaris-desktop”。这需要一些时间来解决,所以请耐心等待。

    同时,如果您想要一个桌面配置的系统,最好的选择是不要尝试使用评估包,而是先在全局区域中安装 solaris-desktop,然后再在非全局区域中安装。这是迄今为止最简单的选择。

    目前解决此问题的唯一方法是修改并重新发布给您带来问题的软件包,但目前我无法指导您完成该过程。可以说,这将涉及在您要修改的每个软件包上使用 pkgrecv --raw,然后使用 pkgsend 将每个软件包重新发布到您自己的本地存储库。

    • 2

相关问题

  • 从现有目录创建 zfs 的正确方法?

  • 在 Solaris lp 或 lpr 上打印

  • 如何将 ZFS ACL 从一个文件克隆到另一个文件?

  • Solaris DNS

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve