SPARC T4、Solaris 11,无法访问互联网,如何安装系统头文件(或工作编译器)

SPARC T4、Solaris 11,无法访问互联网,如何安装系统头文件(或工作编译器)

我需要在已部署到客户网络的 SPARC T4-1 (Solaris 11) 机器上编译一个 C 程序,该机器不再能访问互联网。最初在设置过程中,编译工具和系统头文件均未安装,现在我在编译 C 程序时遇到了麻烦。

我已经按照互联网上的说明安装了本地存储库,pkg pubisher现在显示:

# pkg publisher
PUBLISHER                             TYPE     STATUS   URI
solaris                               origin   online   file:///export/repoSolaris11/repo/

但是,如果我尝试安装 gcc(gcc-dev我认为是软件包),我会收到一大堆来自软件包管理器(This version is excluded by installed incorporation)的投诉,我得出的结论是,这是因为它最初是工厂安装的(机器是从 Oracle 设置的,没有被触碰过),现在我尝试添加本地存储库,但版本不匹配。完整的安装尝试:http://pastebin.com/m3wazmU7

我想到另一种安装 C 编译器的方法是 Solaris Studio IDE(在 DVD 上),cc现在我已经在机器上安装了,但它缺少系统头文件,所以我甚至无法编译一个简单的 hello world。尝试安装system/headers结果与 gcc-dev 非常相似:

sudo pkg install system/header
Creating Plan /                
pkg install: No matching version of system/header can be installed:
  Reject:  pkg://solaris/system/[email protected],5.11-0.175.1.0.0.24.2:20120919T184855Z
  Reason:  This version is excluded by installed incorporation     
  pkg://solaris/consolidation/osnet/[email protected],5.11-0.175.0.9.0.5.1:20120705T180850Z

我完全不熟悉 solaris 软件包管理的工作原理,我想知道是否有办法摆脱这些合并消息?或者我可以从某个地方解压缩适当的头文件,然后根据这些头文件编译程序吗?

感谢您的任何建议

答案1

我不反对 Danila 的观点——如果你有支持合同,就使用它。事实上,你可能希望使用它从 Solaris 11 升级到 Solaris 11.1。

也就是说,您的问题在于您附加的本地存储库比您安装的系统更新,并且没有匹配的软件包集。您想要获取 Solaris 11 存储库 ISO(和所有 SRU),而不是 Solaris 11.1 存储库 ISO。

这是错误消息的关键部分:

  Reason:  All versions matching 'require' dependency pkg:/group/feature/[email protected],5.11-0.174.0.0.0.0.0 are rejected
    Reject:  pkg://solaris/group/feature/[email protected],5.11-0.175.1.0.0.24.0:20120904T180329Z
    Reason:  This version is excluded by installed incorporation pkg://solaris/consolidation/ips/[email protected],5.11-0.175.0.9.0.3.0:20120623T000446Z

也就是说,无法安装任何版本的软件包“developer-gnu”(“gcc-dev”的新名称)。它只找到了一个(S11.1 版本 - “0.5.11”是所有 Solaris 11 系统软件包的版本,破折号后的分支版本显示“Solaris 11”(0.175)“Update 1”(.1),无 SRU(.0),无特殊平台(.0),版本 24(.24),无 respins(.0)),但它无法安装,因为安装了 ips-incorporation 软件包,即 S11(FCS)SRU​​ 9 版本,这会将 developer-gnu 限制为匹配的版本。如果您运行,您可以准确地看到这一点

pkg contents -m ips-incorporation

并查找 fmri=group/feature/developer-gnu@... 上的依赖操作(type=incorporate)

通过设置方面来放宽约束的建议对某些软件包有用,但事实证明,对这个软件包却没有用。此外,developer-gnu 只是一个组包,它将在 gcc 本身之上引入一堆 GNU 开发实用程序,包括 GNU binutils、GNU make、autotools、gdb 等。在更好的世界中,您可以将每个软件包的版本锁定方面设置为 false,然后单独安装它们,而忽略组包。但您仍然会遇到这样的问题:您拥有的存储库中的这些软件包的版本是针对比您安装的版本更新的操作系统版本构建的,因此它们的依赖关系也针对那些较新的版本。除了绕过包装系统之外,您唯一的选择是升级或获取 S11+SRU 存储库。

答案2

如果这是装有 Solaris 11 的生产 SPARC T4 盒。如果我处于您的情况,我不会乱动它,而是联系 Oracle 支持。尤其是在安装“gcc”的系统头文件等关键系统方面时出现疑问的情况下,"I'm not at all familiar with how solaris package management works." 请这样做,您将为自己和他人节省大量时间。

答案3

首先去读一下 Danila 的回答
如果您不熟悉 Solaris 软件包管理,请不要在生产系统上乱搞它 - 按照他说的做,找一个知道他们在做什么的人来帮助你。


有了这些,就可以了:

你的第一个选择是告诉 Solaris 不要对合并中的版本限制如此挑剔.
(有关成立公司的详细信息,查看此博客文章

您的另一个选择是从其他来源(如 sunfreeware.com)下载并安装第三方编译器软件包。正如您所说,您无法访问互联网,因此您必须将它们放到 CD/DVD/USB 棒/您可以连接到系统的其他媒体上。
通常,无法访问互联网的系统有其他安全限制,并且负责人不会同意安装未经审核的第三方软件包。

这给我们带来了选项 3:在其他系统上安装编译器,在那里构建软件,打包,然后安装在这台机器上。
根据您没有编译器的原因,这可能是最好的选择...

相关内容