Solaris 11にインストールした後、GCC-5はどこにありますか?

Solaris 11にインストールした後、GCC-5はどこにありますか?

私の無知を許してください...私はSolarisを使って興味のあるC / C ++ライブラリをテストします。私はSolaris管理者でもSolarisユーザーでもありません。

サポートされているC ++コンパイラが必要だったため、Solaris 11.3 x86にGCC-5をインストールしました-std=c++11(以下のパッケージ出力を参照)。 SunのデフォルトのGCCは4.8で、C ++ 11を正しくサポートしていません(またはまったくサポートしていません)。

残念ながら、インストール後に見つかりません。

$ g++-5 --version
-bash: g++-5: command not found  

$ sudo find /usr -name gcc-5
$ sudo find /bin -name gcc-5
$

完全性のために:

$ /bin/gcc --version
gcc (GCC) 4.8.2
...

$ ls -l /usr/bin/gcc
lrwxrwxrwx   1 root   root   18 Jun  7  2016 /usr/bin/gcc -> ../gcc/4.8/bin/gcc

$ which gcc-5
no gcc-5 in /usr/local/bin /usr/local/sbin /bin /sbin /usr/bin /usr/sbin /usr/sfw/bin

コンパイラはどこにありますか?


~によるとOracle Solaris 11へのGCCのインストール/usr/bin/gccスタックオーバーフローではシンボリックリンクとして存在する必要があります。しかし、答えは少し外れたようです。

$ /usr/bin/gcc --version
gcc (GCC) 4.8.2
...

~によるとSolaris 11 には GCC がなく、サーバーが配備されました。サーバー障害関連:

/usr/sfw/binSolaris 10にバンドルされているgccのパス。 Solaris 11.1では、インストール後にgccを次へ/usr/binのシンボリックリンクとして直接使用できます。/usr/gcc/<version>/bin/gcc

答えも少し間違っているようです。


$ sudo pkg install --accept gcc-5
------------------------------------------------------------
Package: pkg://solaris/release/[email protected],5.12-5.12.0.0.0.115.0:20170111T175931Z
License: evaluation

This software has been made available for evaluation purposes only.
See http://www.oracle.com/technetwork/server-storage/solaris11/technologies/foss-evaluation-program-2586275.html for further information.        

           Packages to install:  2
       Create boot environment: No
Create backup boot environment: No

DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                                2/2           8/8      0.0/0.0 17.4k/s

PHASE                                          ITEMS
Installing new actions                         37/37
Updating package state database                 Done
Updating package cache                           0/0
Updating image state                            Done
Creating fast lookup database                   Done
Updating package cache                           2/2

インストール後gcc-5

$ find / -name 'gcc*' 2>/dev/null
/usr/share/vim/vim73/compiler/gcc.vim
/usr/share/gcc-4.8.2
/usr/share/man/man1/gcc.1
/usr/gcc
/usr/gcc/4.8/bin/gcc-nm
/usr/gcc/4.8/bin/gcc-ranlib
/usr/gcc/4.8/bin/gcc
/usr/gcc/4.8/bin/gcc-ar
/usr/gcc/4.8/lib/gcc
/usr/gcc/4.8/lib/gcc/i386-pc-solaris2.11/4.8.2/plugin/include/ada/gcc-interface
/usr/gcc/4.8/lib/gcc/i386-pc-solaris2.11/4.8.2/plugin/include/gcc-plugin.h
/usr/gcc/4.8/share/locale/de/LC_MESSAGES/gcc.mo
/usr/gcc/4.8/share/locale/ja/LC_MESSAGES/gcc.mo
/usr/gcc/4.8/share/locale/fr/LC_MESSAGES/gcc.mo
/usr/gcc/4.8/share/locale/zh_CN/LC_MESSAGES/gcc.mo
/usr/gcc/4.8/share/locale/zh_TW/LC_MESSAGES/gcc.mo
/usr/gcc/4.8/share/locale/es/LC_MESSAGES/gcc.mo
/usr/gcc/4.8/share/gcc-4.8.2
/usr/gcc/4.8/share/info/gccinstall.info
/usr/gcc/4.8/share/info/gccint.info
/usr/gcc/4.8/share/info/gcc.info
/usr/gcc/4.8/share/man/man1/gcc.1
/usr/bin/gcc
/usr/local/share/emacs/24.5/lisp/cedet/semantic/bovine/gcc.el
/usr/local/share/emacs/24.5/lisp/cedet/semantic/bovine/gcc.elc
/usr/include/gc/atomic_ops/sysdeps/gcc
/usr/include/avahi-common/gccmacro.h
/usr/include/pulse/gccmacro.h
/export/home/jwalton/botan/src/scripts/ci/circle/gcc-sanitizer.sh
/export/home/jwalton/botan/src/scripts/ci/circle/gcc-static-debug.sh
/export/home/jwalton/botan/src/scripts/ci/circle/gcc-shared-debug.sh
/export/home/jwalton/botan/src/build-data/cc/gcc.txt
/export/home/jwalton/zlib-1.2.8/contrib/gcc_gvmat64
/opt/developerstudio12.5/lib/compilers/CC-gcc/lib/gcc
/opt/developerstudio12.5/lib/compilers/CC-gcc/gcc_version.map
/opt/solarisstudio12.4/lib/compilers/CC-gcc/gcc_version.map
/opt/solarisstudio12.4/lib/compilers/CC-gcc/lib/gcc

そして:

~$ pkg search -l gcc | grep ^basename
basename             dir    opt/developerstudio12.5/lib/compilers/CC-gcc/lib/gcc               pkg:/developer/developerstudio-125/library/[email protected]
basename             dir    opt/solarisstudio12.4/lib/compilers/CC-gcc/lib/gcc                 pkg:/developer/solarisstudio-124/library/[email protected]
basename             dir    usr/include/gc/atomic_ops/sysdeps/gcc                              pkg:/library/[email protected]
basename                    link   usr/bin/gcc                                                        pkg:/developer/gcc-4/[email protected]
basename                    file   usr/gcc/4.8/bin/gcc                                                pkg:/developer/gcc-4/[email protected]
pkg: Search performance is degraded.

ベストアンサー1

簡単に言うと:

# pkg change-facet \
      version-lock.system/library/gcc/gcc-c-runtime=false \
      version-lock.system/library/gcc/gcc-c++-runtime=false

それからもう一度やり直してください。

だから問題はいわゆるgcc-5「グループ」パッケージです。つまり、group(少なくとも主に)複数の依存関係で構成されます。依存関係groupは可能な場合はインストールされ、それ以外の場合は無視されます。この場合、1 つ以上の依存関係をインストールできないため、無視され、gcc-5予想より少ない結果が発生します。

これが発生した場合(パッケージ数が少なくてもパッケージバージョンが異なる場合)、最初にすべきことはpkg実際に何が予想されるのかを知らせることです。 (今、ここでの切断は何を期待するのかを知る方法です。gcc-5その情報を確認する方法がわからないか、そうする必要があるかもしれませんが、この質問にどのように答えるべきかわかりません。)この場合は、次のように選択します。依存関係を一度見てみると役に立ちます。gcc-c-5(この手順を実行すると、gcc-c++-5ここに示されているのと同じ問題が発生しますが、これを1つの回答で整理したいと思いました。)これは、インストールできないと無視するのではなく、pkg実際gcc-c-5にインストールできない理由について詳しく不平を言うことです。出力内容が次に何をすべきかについての手がかりを提供できることを願っています。

# pkg install -nv gcc-5 gcc-c-5
Creating Plan (Solver setup): |
pkg install: No matching version of developer/gcc-5 can be installed:
  Reject:  pkg://solaris/developer/[email protected]
  Reason:  No version matching 'group' dependency developer/gcc/gcc-c++-5 can be installed
    ----------------------------------------
    Reject:  pkg://solaris/developer/gcc/[email protected]
    Reason:  No version matching 'require' dependency developer/gcc/gcc-c-5 can be installed
      ----------------------------------------
      Reject:  pkg://solaris/developer/gcc/[email protected]
      Reason:  No version matching 'require' dependency system/library/gcc/[email protected],5.11-5.12.0.0.0.115.0 can be installed
        ----------------------------------------
        Reject:  pkg://solaris/system/library/gcc/[email protected]
        Reason:  No version matching 'require' dependency system/library/gcc/[email protected],5.11-5.12.0.0.0.115.0 can be installed
          ----------------------------------------
          Reject:  pkg://solaris/system/library/gcc/[email protected]
          Reason:  This version is excluded by installed incorporation consolidation/userland/[email protected]
          ----------------------------------------
        Reason:  This version is excluded by installed incorporation consolidation/userland/[email protected]
        ----------------------------------------
      ----------------------------------------
    ----------------------------------------
No matching version of developer/gcc/gcc-c-5 can be installed:
  Reject:  pkg://solaris/developer/gcc/[email protected]
  Reason:  [already rejected; see above]

このように汚れたソルバー出力が出たら、一般的に最も深いインデント問題を見つけて修正できるかどうかを確認したいと思います。この場合、[email protected]インストールした会社から除外してインストールできないことがわかります。

おそらく余談が必要でしょう。合併とは何ですか?グループパッケージと同様に、incorporate依存関係(この場合は依存関係)を主に提供するパッケージです。この依存関係は実際にパッケージがインストールされるわけではなく、インストールできるパッケージに制限があるだけです。具体的には、マージとは、インストールされている[email protected]場合は、対応するバージョンの範囲、つまり最小(含む)と最大(除外)または一致する値foo内になければならないことを意味します。[1.2, 1.3)1.21.31.2.x.y.z....

この場合、システムにインストールされたマージは、インストールuserland-incorporationに必要なバージョンと互換性のない制約を設定します。gcc-c-runtimegcc-c-runtimegcc-c-5

ここでは、Solaris FOSS評価プログラムの奇妙な点の1つを見つけます。提供されたパッケージはシステムの残りの部分とうまく統合されません。これは、最新バージョンのSolarisにインストールするように設計されています。しかし、システムは、最小限の設置を可能にするために合理的に調整できるように設計されています。この場合、いくつかの側面を変更する必要があります。

incorporateSolarisのほとんどのFOSSパッケージは、依存関係によって提供される制約を軽減する方法でマージされます。名前付き側面を変更することでversion-lock.<pkg-name>これを行うことができますfalse。この場合、目的のインストールを妨げる2つのパッケージがあります(上記のように)gcc-c-runtimegcc-c++-runtime

# pkg change-facet \
      version-lock.system/library/gcc/gcc-c-runtime=false \
      version-lock.system/library/gcc/gcc-c++-runtime=false

これは少し出力を生成しますが、多くのことをしないようです。完了したら再試行できます。

# pkg install -nv gcc-5 gcc-c-5
           Packages to install:      20
            Packages to update:       2
           Mediators to change:       1
            Services to change:       1
     Estimated space available: 8.54 GB
Estimated space to be consumed: 1.49 GB
       Create boot environment:      No
Create backup boot environment:     Yes
          Rebuild boot archive:      No

Changed mediators:
  mediator gcc:
           version: None -> 5 (system default)

Changed packages:
solaris
  developer/assembler
    None -> 0.5.11,5.11-0.175.3.9.0.2.0:20160528T012706Z
  developer/gcc-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T170530Z
  developer/gcc/gcc-c++-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T164822Z
  developer/gcc/gcc-c-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T165027Z
  developer/gcc/gcc-common-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T165220Z
  developer/gcc/gcc-gfortran-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T165431Z
  developer/gcc/gcc-gobjc-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T165624Z
  developer/gnu-binutils
    None -> 2.23.1,5.11-0.175.3.0.0.30.0:20150821T164528Z
  library/gmp
    None -> 4.3.2,5.11-0.175.3.0.0.30.0:20150821T165358Z
  library/isl
    None -> 0.12.2,5.12-5.12.0.0.0.115.0:20170111T171737Z
  library/mpc
    None -> 0.9,5.11-0.175.3.0.0.30.0:20150821T165558Z
  library/mpfr
    None -> 2.4.2,5.11-0.175.3.0.0.30.0:20150821T165559Z
  release/evaluation
    None -> 1.0,5.12-5.12.0.0.0.115.0:20170111T175931Z
  system/header
    None -> 0.5.11,5.11-0.175.3.19.0.2.0:20170328T014052Z
  system/library/gcc/gcc-c++-runtime-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T181800Z
  system/library/gcc/gcc-c-runtime-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T181840Z
  system/library/gcc/gcc-gfortran-runtime
    None -> 4.8.2,5.11-0.175.3.0.0.30.0:20150821T172507Z
  system/library/gcc/gcc-gfortran-runtime-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T181902Z
  system/library/gcc/gcc-gobjc-runtime
    None -> 4.8.2,5.11-0.175.3.0.0.30.0:20150821T172513Z
  system/library/gcc/gcc-gobjc-runtime-5
    None -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T181919Z
  system/library/gcc/gcc-c++-runtime
    4.8.2,5.11-0.175.3.0.0.30.0:20150821T172447Z -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T181825Z
  system/library/gcc/gcc-c-runtime
    4.8.2,5.11-0.175.3.0.0.30.0:20150821T172458Z -> 5.4.0,5.12-5.12.0.0.0.115.0:20170111T181848Z

ところで、私たちは実際に何かを含むいくつかのパッケージをインストールしました。ここで入力してgcc --version実際に5.4.0であることを確認できます。また、ロック解除した2つの側面のパッケージがアップグレードされ、ロック解除後に使用できるようになることもあります。

なぜ私たちが他の側面をロック解除する必要がないのか尋ねることもできます。その理由は、Solaris 11.3 が GCC 5 を提供しないため、パッケージのバージョンに制限がないためです。したがって、すべてのgcc-*-5パッケージはすでに制限が解除されているため、制限を軽減するためにロックを解除する必要はありません。

gcc-gfortran-runtimeバージョン4.8およびgcc-gobjc-runtimeパッケージがインストールされていることがわかります。その理由はまだ制限されていますが、私たちがしていることはこれらの制限と矛盾しないからです。一貫性のためにロックを解除してからバージョン5.xにアップグレードする必要があります(または試す前にすでにこれを行っている場合は、最初からロックを解除してください)。

おすすめ記事