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


9

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

GCC-5をSolaris 11.3、x86にインストールしました。これは、サポートするC ++コンパイラが必要だったためです-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

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


Stack Overflow 上のOracle Solaris 11へのGCCのインストールによると、それ/usr/bin/gccはシンボリックリンクとして存在するはずです。しかし、答えは少しずれているようです:

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

Solaris 11に欠けているGCCによると、サーバーは既にサーバー障害にデプロイされています:

/usr/sfw/binは、Solaris 10のバンドルされたgccパスです。Solaris11.1では、gccは、インストールさ/usr/binれると、を指すシンボリックリンクとして直接利用できます。/usr/gcc/<version>/bin/gcc

答えも少しずれているようです。


$ sudo pkg install --accept gcc-5
------------------------------------------------------------
Package: pkg://solaris/release/evaluation@1.0,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/studio-gccrt@12.5-1.0.0.0
basename             dir    opt/solarisstudio12.4/lib/compilers/CC-gcc/lib/gcc                 pkg:/developer/solarisstudio-124/library/studio-gccrt@12.4-1.0.0.0
basename             dir    usr/include/gc/atomic_ops/sysdeps/gcc                              pkg:/library/gc@7.2-0.175.2.0.0.39.0
basename                    link   usr/bin/gcc                                                        pkg:/developer/gcc-4/gcc-c-48@4.8.2-0.175.3.0.0.30.0
basename                    file   usr/gcc/4.8/bin/gcc                                                pkg:/developer/gcc-4/gcc-c-48@4.8.2-0.175.3.0.0.30.0
pkg: Search performance is degraded.

使用してみてください:gcc --versionではなくgcc --version
Slh47

1
/ usr / gccはソフトリンクですか?
FloHe 2017年

@FloHe -両方/bin/gcc/usr/bin/gccGCC 4.8です。コマンドの出力で質問を更新しました。

インストールが正しく完了しましたか?
ロリー・アルソップ2017年

多分試してみる:which gcc-5
FloHe

回答:


10

TL; DR:

# 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/gcc-5@5.4.0-5.12.0.0.0.115.0
  Reason:  No version matching 'group' dependency developer/gcc/gcc-c++-5 can be installed
    ----------------------------------------
    Reject:  pkg://solaris/developer/gcc/gcc-c++-5@5.4.0-5.12.0.0.0.115.0
    Reason:  No version matching 'require' dependency developer/gcc/gcc-c-5 can be installed
      ----------------------------------------
      Reject:  pkg://solaris/developer/gcc/gcc-c-5@5.4.0-5.12.0.0.0.115.0
      Reason:  No version matching 'require' dependency system/library/gcc/gcc-c++-runtime@5.4.0,5.11-5.12.0.0.0.115.0 can be installed
        ----------------------------------------
        Reject:  pkg://solaris/system/library/gcc/gcc-c++-runtime@5.4.0-5.12.0.0.0.115.0
        Reason:  No version matching 'require' dependency system/library/gcc/gcc-c-runtime@5.4.0,5.11-5.12.0.0.0.115.0 can be installed
          ----------------------------------------
          Reject:  pkg://solaris/system/library/gcc/gcc-c-runtime@5.4.0-5.12.0.0.0.115.0
          Reason:  This version is excluded by installed incorporation consolidation/userland/userland-incorporation@0.5.11-0.175.3.19.0.2.0
          ----------------------------------------
        Reason:  This version is excluded by installed incorporation consolidation/userland/userland-incorporation@0.5.11-0.175.3.19.0.2.0
        ----------------------------------------
      ----------------------------------------
    ----------------------------------------
No matching version of developer/gcc/gcc-c-5 can be installed:
  Reject:  pkg://solaris/developer/gcc/gcc-c-5@5.4.0-5.12.0.0.0.115.0
  Reason:  [already rejected; see above]

このように混乱したソルバー出力が表示された場合、通常は最もインデントされた問題を探し、それを修正できるかどうかを確認します。この場合、インストールgcc-c-runtime@5.4.0-5.12.0.0.0.115.0されている法人によって除外されているため、インストールできないことがわかります。

多分余談ですが、法人化とは何ですか?グループパッケージと同様に、主に依存関係(この場合は依存関係)を提供するパッケージですincorporate。これらの依存関係によって、パッケージが実際にインストールされることはありません。インストールされる可能性のあるパッケージに制約を課すだけです。具体的には、組み込むfoo@1.2ことは、fooがインストールされている場合、バージョンの範囲内である必要があることを意味します[1.2, 1.3)。つまり、最小値1.2(両端を含む)、最大値(両端を含まない)、またはと1.3一致するすべての値です1.2.x.y.z....

この場合、userland-incorporationシステムにすでにインストールされている組み込みgcc-c-runtimeによりgcc-c-runtime、インストールにgcc-c-5必要なバージョンと互換性がないという制約が生じます。

ここで、Solaris FOSS評価プログラムの奇妙なことに遭遇します。そこで利用可能になったパッケージは、システムの他の部分とうまく統合されていません。これらは、新しいバージョンのSolarisにインストールするように設計されています。しかし、それらは、システムを少なくとも正気にマッサージしてインストールできるように構築されています。この場合、いくつかのファセットを変更する必要があります。

SolarisのFOSSパッケージのほとんどは、そのincorporate依存関係によって提供される制約を緩和できるように組み込まれています。これを行うには、で指定されたファセットをに変更version-lock.<pkg-name>falseます。この場合、gcc-c-runtimeそしてgcc-c++-runtimeあなたが望むインストールをブロックしている2つのパッケージなので、(上記のように):

# 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-runtimegcc-gobjc-runtimeパッケージが4.8バージョンでインストールされていることに気付くでしょう。それはそれらがまだ制約されているからです、しかし私たちがそれらの制約と衝突したことは何もありません。一貫性を保つために、おそらくそれらもロック解除してから、5.xバージョンにアップグレードする必要があります(または、何かを試す前にこれまでに取得した場合は、最初からロック解除するだけです)。


@Danekに感謝し、返信が遅くなってすみません。私は別のSolarisテストサイクルにいます。私はpkg change-facet続いて走ったpkg install -nv gcc-5 gcc-c-5。出力はクリーンでした。つまり、エラーが表示されなかったか、拒否パスで詳しく説明されているような出力が表示されませんでした。その後、GCCはまだ4.8.2であり、gcc-5 --version結果はになりgcc-5: command not foundます。まだ何かが足りないようです。

gccのさまざまなバージョンがにあり/usr/gccます。出荷/usr/bin/gcc-<version>はしませんが、報告する価値のあるバグかもしれません。あなたは使用することができ/usr/gcc/5/bin/gcc、直接、またはあなたがものがであるべきパッケージングシステムを伝えることができます/usr/bin/gccpkg set-mediator -V 5 gcc
Danek Duvall

1

これを試して:

ls -l /usr/bin/gcc

あなたはおそらく次のようなものを見るでしょう

... /usr/bin/gcc -> ../gcc/4.8/bin/gcc

GCC 5.xは /usr/gcc/5.x/...

私のSolaris 11インストールには、の下に複数のバージョンのGCCがあり/usr/gccます。

更新:これらのバージョン/usr/gccは5.x バージョンではありません。どこに行くの?


アンドリュー、ありがとう。/usr/gcc/5.x/インストール後はありません。GCC 5.xをどのようにインストールしましたか?

@jwwさまざまな4.xバージョンがたくさんあります。5号ではないですか?!?!奇妙な。これについて掘り下げる必要があります。
Andrew Henle

@jww何がpkg search gcc表示されますか?basenameエントリは、すべてのバージョンの表示する必要がありgcc、システムにインストールコマンドを。
Andrew Henle

@jww Line 287: basename file usr/gcc/5.3/bin/gcc pkg:/developer/gcc/gcc-c-53@5.3.0-5.12.0.0.0.95.0 これは、/usr/gcc/5.3/bin/gccインストールが必要であることを示しているようです。289行目も5.3.0-5.12.0.0.0.105.1バージョンを示しています。何がpkg search -l gcc | grep ^basename表示されますか?gcc実際にインストールされているという名前のファイルのみが表示されます。
Andrew Henle

質問に追加されました(最後のブロック)。

1

最初に、からのリストpkg publisherが役に立ちます。同様にpkg list |grep gcc

そして、それはインストールされたようには見えません、あなたの出力はインストールされている(2)pkgsと(8)ファイルのみを示しています。

インストールできるようにするには、制約を解除する必要がある場合があります。インストールからの出力は、FOSS evalチェーンからインストールしていることを示唆しています。出力で提供されるリンクと一緒に確認することを提案します。

Oracle Solaris 11.3用の選択されたFOSS評価パッケージにアクセスする方法

また、通常、a pkg search gccは、pkgだけでなく、何かがインストールされている場所を見つけるのに役立ちますか?A pkg contents <pkg>は、pkgを構成するものを見つけるのにも役立ちます。

また、gcc pkgがすべての開発者ツールに対して複数のpkgをインストールする必要があると考えているため、複数のpkgが2つだけインストールされるのを期待していました。

おそらく、これはリリースリポジトリで必要なpkgですか? developer/gcc/gcc-c++-5


ありがとう。sudo pkg install developer/gcc/gcc-c++-5で結果Reject: pkg://solaris/developer/gcc/gcc-c++-5@5.4.0-5.12.0.0.0.115.0を持ちますReason: No version matching 'require' dependency system/library/gcc/gcc-c-runtime@5.4.0,5.11-5.12.0.0.0.115.0 can be installed

`pkg list -a | grep c ++`を試して、gccのバージョンを探します。実際のインストールの前に、詳細なドライランインストールを試して、失敗の原因に関する情報が得られるかどうかを確認してください。つまりpkg install -nv <pkg> 、evalパッケージの使用について上記のリンクを確認しましたか?私はまだeval pkgsを使用することを試みていませんが、それらをインストール/更新するために一部のpkgsのロックを解除する必要があるようです。
sleepyweasel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.