我尝试在新创建的 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/[email protected]
Reason: No version matching 'require' dependency runtime/[email protected],5.11-5.12.0.0.0.90.0 can be installed
----------------------------------------
Reject: pkg://solaris/runtime/[email protected]
Reason: No version matching 'optional' dependency runtime/[email protected],5.11-5.12.0.0.0.69.0 can be installed
----------------------------------------
Reject: pkg://solaris/runtime/[email protected]
pkg://solaris/runtime/[email protected]
Reason: This version is excluded by installed incorporation consolidation/userland/[email protected]
----------------------------------------
Reject: pkg://solaris/runtime/[email protected]
Reason: No version matching 'optional' dependency runtime/[email protected],5.11-5.12.0.0.0.69.0 can be installed
----------------------------------------
经过一番谷歌搜索后,我终于运行了:pkg change-facet facet.version-lock.runtime/perl-512=false
,之后我能够安装 golang-15。太棒了!
有人能解释一下我刚才做了什么吗 :)。我知道这个问题听起来很奇怪,但我在写的时候设法解决了它(我还没弄清楚这些change-facet
东西)。我仍然想了解这个动作的含义。
我能(应该)用不同的方式来解决这个问题吗?
答案1
该软件包的当前版本developer/golang-15
依赖于 Perl 5.22:
$ pkg contents -r -o fmri,type -t depend developer/golang-15
FMRI TYPE
pkg:/runtime/[email protected] require
pkg:/system/[email protected] require
release/evaluation require
在您的案例中,它显然仍然依赖于 Perl 5.20。无论如何,问题在于默认的 Solaris 11.3 安装附带了 Perl 5.12。由于其他软件包也依赖于 Perl 运行时,因此系统会尝试锁定此版本以防止软件包损坏。这是通过 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
以下是 Oracle 文档的链接,其中更详细地解释了此功能:http://docs.oracle.com/cd/E26502_01/html/E28984/gmias.html