Tentando instalar o golang em um Solaris 11.3 VM

1

Eu estava tentando instalar o Go (golang) em uma nova Solaris 11.3 VM (baixada do Oracle), mas estava recebendo o seguinte erro:

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
    ----------------------------------------

Depois de algumas googling eu finalmente corri: pkg change-facet facet.version-lock.runtime/perl-512=false , após o qual eu pude instalar o golang-15. Doce !!

Alguém pode explicar o que eu acabei de fazer :). Eu sei que essa pergunta parece estranha, mas eu consegui resolvê-la enquanto escrevia (eu não tinha descoberto o change-facet stuff). Eu ainda gostaria de entender as implicações dessa ação.

Poderia (deveria) ter resolvido isso de forma diferente?

    
por Jens D 28.06.2016 / 16:07

1 resposta

5

A versão atual do pacote developer/golang-15 tem uma dependência do 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

No seu caso, aparentemente ainda dependia do Perl 5.20. De qualquer maneira, o problema é que a instalação padrão do Solaris 11.3 vem com o Perl 5.12. Como outros pacotes também dependem do tempo de execução do Perl, o sistema tenta bloquear essa versão para evitar pacotes quebrados. Isso é feito por meio de um recurso de gerenciamento de pacotes do Solaris chamado Incorporações . O pacote de incorporação serve para impedir atualizações não intencionais ou downgrades de pacotes do sistema operacional. No entanto, para determinados pacotes, ele fornecerá um furo de loop para que o administrador possa instalar uma versão diferente. Definindo facet.version-lock.runtime/perl-512=false você efetivamente disse ao Solaris para liberar o bloqueio no Perl 5.12 e permitir uma atualização para uma versão posterior. Após a instalação do Golang, sua versão padrão do Perl mudará de 5.12 para 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

Aqui está um link para a documentação do Oracle que explica esse recurso em mais detalhes: link

    
por 29.08.2016 / 05:31