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

jul*_*mme 2 solaris sparc compilation

我需要在已部署到客户网络的 SPARC T4-1 (Solaris 11) 机器上编译一个 C 程序,它不再可以访问 Internet。本来在安装过程中,编译工具,也没有安装系统头文件,现在编译C程序时遇到了麻烦。

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

# pkg publisher
PUBLISHER                             TYPE     STATUS   URI
solaris                               origin   online   file:///export/repoSolaris11/repo/
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试安装 gcc(gcc-dev我认为是package ?),我会收到来自包管理器 ( 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/header@0.5.11,5.11-0.175.1.0.0.24.2:20120919T184855Z
  Reason:  This version is excluded by installed incorporation     
  pkg://solaris/consolidation/osnet/osnet-incorporation@0.5.11,5.11-0.175.0.9.0.5.1:20120705T180850Z
Run Code Online (Sandbox Code Playgroud)

我完全不熟悉solaris 包管理的工作原理,我想知道是否有某种方法可以摆脱这些合并消息?或者我可以从某处解压缩正确的头文件,然后针对这些头文件编译程序吗?

感谢您的任何提示

Dan*_*all 9

我不能不同意 Danila - 如果您有支持合同,请使用它。事实上,您可能希望使用它从 Solaris 11 升级到 Solaris 11.1。

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

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

  Reason:  All versions matching 'require' dependency pkg:/group/feature/developer-gnu@0.5.11,5.11-0.174.0.0.0.0.0 are rejected
    Reject:  pkg://solaris/group/feature/developer-gnu@0.5.11,5.11-0.175.1.0.0.24.0:20120904T180329Z
    Reason:  This version is excluded by installed incorporation pkg://solaris/consolidation/ips/ips-incorporation@0.5.11,5.11-0.175.0.9.0.3.0:20120623T000446Z
Run Code Online (Sandbox Code Playgroud)

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

pkg contents -m ips-incorporation
Run Code Online (Sandbox Code Playgroud)

并在 fmri=group/feature/developer-gnu@ 上寻找依赖操作(类型=incorporate)...

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