私の無知を許してください...私は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/bin
Solaris 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.2
1.3
1.2.x.y.z....
この場合、システムにインストールされたマージは、インストールuserland-incorporation
に必要なバージョンと互換性のない制約を設定します。gcc-c-runtime
gcc-c-runtime
gcc-c-5
ここでは、Solaris FOSS評価プログラムの奇妙な点の1つを見つけます。提供されたパッケージはシステムの残りの部分とうまく統合されません。これは、最新バージョンのSolarisにインストールするように設計されています。しかし、システムは、最小限の設置を可能にするために合理的に調整できるように設計されています。この場合、いくつかの側面を変更する必要があります。
incorporate
SolarisのほとんどのFOSSパッケージは、依存関係によって提供される制約を軽減する方法でマージされます。名前付き側面を変更することでversion-lock.<pkg-name>
これを行うことができますfalse
。この場合、目的のインストールを妨げる2つのパッケージがあります(上記のように)gcc-c-runtime
。gcc-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にアップグレードする必要があります(または試す前にすでにこれを行っている場合は、最初からロックを解除してください)。