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

我需要在已经部署到客户networking的SPARC T4-1(Solaris 11)计算机上编译C程序,并且不再能够访问Internet。 最初在安装过程中,编译工具和系统头文件都被安装了,现在我在编译C程序时遇到了麻烦。

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

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

然而,如果我尝试安装gcc(我认为是包gcc-dev ),我从包pipe理器( This version is excluded by installed incorporation )的一堆抱怨,我得出结论,这是因为它原来是一个工厂安装(机器来自Oracle的安装程序,并没有被触及),现在我已经尝试添加一个本地存储库,并且版本不匹配。 完成安装尝试: http : //pastebin.com/m3wazmU7

我想安装一个C编译器的另一种方法是使用Solaris Studio IDE(在DVD上),我现在已经在机器上了,但是它缺less了系统头文件,所以我甚至无法编译一个简单的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软件包pipe理是如何工作的,我不知道是否有办法摆脱这些合并信息? 或者我可以从某个地方解压正确的头文件,然后根据这些头文件编译程序?

感谢您的任何提示

我不能不同意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),build立24(.24),没有respins(.0)),但是它不能,因为ips-incorporation包,这是S11(FCS)安装SRU 9版本,这将限制developer-gnu到匹配的版本。 你可以看到,如果你运行

 pkg contents -m ips-incorporation 

并在fmri = group / feature / developer-gnu @上查找依赖行为(types=合并)…

通过设置方面来放宽约束的build议对于一些软件包是有用的,但事实certificate,这不是一个好的方法。 另外,developer-gnu只是一个组合包,会在gcc本身之上引入一大堆GNU开发工具,包括GNU binutils,GNU make,autotools,gdb等。在一个更好的世界里,你可以将每个这些软件包的版本锁构面设置为false,并将其独立安装,而忽略组软件包。 但是你仍然会遇到这样的问题,即你所拥有的repo中的这些软件包的版本是针对比你安装的操作系统更新的操作系统版本构build的,所以它们的依赖关系也是针对这些新版本的。 除了包装系统之外,您唯一的select是升级,或者获得S11 + SRU存储库。

如果这是生产Solaris 11的SPARC T4盒子。 如果我遇到你的情况,我不会惹它,并得到Oracle的支持。 尤其是在"I'm not at all familiar with how solaris package management works."的状态下,为“gcc”系统头文件安装关键系统方面的一个疑问的情况下"I'm not at all familiar with how solaris package management works." 请做到这一点,你会为自己和其他人节省大量的时间。

那么,首先去读丹妮拉的答案 。
如果您不熟悉Solaris软件包pipe理,请不要在生产系统上使用它 – 就像他说的那样,找一个知道他们在做什么来帮助您的人。


有了这个方法:

你的第一个select是告诉Solaris不要对合并版本限制这么挑剔 。
(有关合并的更多详细信息, 请查看此博客文章 。)

您的另一个select是从sunfreeware.com等其他来源下载并安装第三方编译器软件包。 正如你所说,你没有互联网接入,你必须把它们放到CD / DVD / USB记忆棒/其他一些媒体,你可以连接到你的系统。
一般来说,没有互联网接入的系统有其他的安全限制,负责人对安装未经审计的第三方软件包会感到不满。

这使我们可以select3:在其他系统上安装编译器,在那里构build你的软件,打包并安装在这台机器上。
根据你没有编译器的原因,这可能是最好的select…