尝试在 Solaris 11.3 VM 上安装 golang

Jen*_*s D 1 solaris package-management

我试图在新创建的 Solaris 11.3 VM(从 Oracle 下载)上安装 Go (golang),但出现以下错误:

root@solaris:/export/home/jdeppe# pkg install golang-15
Creating Plan (Running solver): /
pkg install: No matching version of developer/golang-15 can be installed:
  Reject:  pkg://solaris/developer/golang-15@1.5-5.12.0.0.0.95.0
  Reason:  No version matching 'require' dependency runtime/perl-520@5.20.1,5.11-5.12.0.0.0.90.0 can be installed
    ----------------------------------------
    Reject:  pkg://solaris/runtime/perl-520@5.20.1-5.12.0.0.0.90.0
    Reason:  No version matching 'optional' dependency runtime/perl-512@5.12.5,5.11-5.12.0.0.0.69.0 can be installed
      ----------------------------------------
      Reject:  pkg://solaris/runtime/perl-512@5.12.5-5.12.0.0.0.90.0
               pkg://solaris/runtime/perl-512@5.12.5-5.12.0.0.0.95.0
      Reason:  This version is excluded by installed incorporation consolidation/userland/userland-incorporation@0.5.11-0.175.3.1.0.3.0
      ----------------------------------------
    Reject:  pkg://solaris/runtime/perl-520@5.20.1-5.12.0.0.0.95.0
    Reason:  No version matching 'optional' dependency runtime/perl-512@5.12.5,5.11-5.12.0.0.0.69.0 can be installed
    ----------------------------------------
Run Code Online (Sandbox Code Playgroud)

经过一番谷歌搜索pkg change-facet facet.version-lock.runtime/perl-512=false后,我终于运行了:,之后我就可以安装 golang-15。甜的!!

有人可以解释一下我刚刚做了什么:)。我知道这个问题听起来很奇怪,但我在写的时候设法解决了它(我还没弄清楚这些change-facet东西)。我仍然想了解此操作的含义。

我可以(应该)以不同的方式解决这个问题吗?

小智 5

developer/golang-15软件包的当前版本依赖于 Perl 5.22:

$ pkg contents -r -o fmri,type -t depend developer/golang-15
FMRI                                         TYPE
pkg:/runtime/perl-522@5.22.1-5.12.0.0.0.95.0 require
pkg:/system/library@0.5.11-0.175.3.1.0.3.0   require
release/evaluation                           require
Run Code Online (Sandbox Code Playgroud)

在你的情况下,它显然仍然依赖于 Perl 5.20。无论哪种方式,问题在于默认的 Solaris 11.3 安装随 Perl 5.12 一起提供。由于其他包也依赖于 Perl 运行时,系统会尝试锁定此版本以防止损坏的包。这是通过名为Incorporations的 Solaris 包管理功能完成的。合并包用于防止操作系统包的意外升级或降级。但是,对于某些软件包,它会提供一个漏洞,以便管理员可以安装不同的版本。通过设置,facet.version-lock.runtime/perl-512=false您有效地告诉 Solaris 释放对 Perl 5.12 的锁定,并允许升级到更高版本。在 Golang 安装之后,您的默认 Perl 版本将从 5.12 更改为 5.22:

$ perl --version

This is perl 5, version 22, subversion 1 (v5.22.1) built for i86pc-solaris-thread-multi-64

Copyright 1987-2015, Larry Wall
Run Code Online (Sandbox Code Playgroud)

以下是更详细解释此功能的 Oracle 文档的链接:http : //docs.oracle.com/cd/E26502_01/html/E28984/gmias.html