Maafkan ketidaktahuan saya ... Saya hanya menggunakan Solaris untuk menguji perpustakaan C / C ++ yang saya minati. Saya bukan admin Solaris atau pengguna Solaris.
Saya menginstal GCC-5 pada Solaris 11.3, x86 karena saya memerlukan kompiler C ++ yang mendukung -std=c++11
(lihat di bawah untuk output paket). GCC asli Sun adalah 4.8, dan itu tidak mendukung C ++ 11 dengan baik (atau sama sekali).
Sayangnya, saya tidak dapat menemukannya setelah menginstal:
$ g++-5 --version
-bash: g++-5: command not found
$ sudo find /usr -name gcc-5
$ sudo find /bin -name gcc-5
$
Dan untuk kelengkapan:
$ /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
Di mana kompiler berada?
Menurut Menginstal GCC pada Oracle Solaris 11 pada Stack Overflow, itu seharusnya /usr/bin/gcc
sebagai symlink. Namun jawabannya agak tidak aktif:
$ /usr/bin/gcc --version
gcc (GCC) 4.8.2
...
Menurut GCC yang hilang dari Solaris 11, dan server sudah dikerahkan di Server Fault:
/usr/sfw/bin
adalah jalur gcc yang dibundel dengan Solaris 10. Pada Solaris 11.1, gcc, ketika diinstal, langsung tersedia/usr/bin
sebagai symlink yang menunjuk ke/usr/gcc/<version>/bin/gcc
Jawabannya tampaknya tidak aktif juga.
$ 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
Setelah menginstal 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
Dan:
~$ 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.
sumber
/bin/gcc
dan/usr/bin/gcc
GCC 4.8. Saya memperbarui pertanyaan dengan output dari perintah.which gcc-5
Jawaban:
TL; DR:
dan coba lagi.
Jadi masalahnya adalah
gcc-5
apa yang dikenal sebagai paket "grup". Artinya, terdiri (setidaknya terutama) dari sekelompokgroup
dependensi. Sebuahgroup
ketergantungan adalah salah satu yang akan dipasang jika memungkinkan, tapi diabaikan jika tidak. Dalam hal ini, itu tidak mungkin untuk menginstal satu atau lebih dari dependensigcc-5
, sehingga mereka diabaikan, dan Anda berakhir dengan kurang dari yang Anda harapkan.Ketika itu terjadi (apakah itu lebih sedikit paket, atau paket pada versi yang berbeda), hal pertama yang harus Anda lakukan adalah memberi tahu
pkg
apa yang sebenarnya Anda harapkan. (Sekarang, putuskan di sini adalah bagaimana mengetahui apa yang diharapkan; tanpa mengetahui bagaimana memeriksagcc-5
informasi itu, atau bahkan mengetahui bahwa Anda mungkin harus, saya tidak yakin bagaimana menjawabnya.) Dalam hal ini, pilih salah satu dari ketergantungannya untuk melihat apakah itu membantu; katakan,gcc-c-5
(Anda mengikuti langkah ini untukgcc-c++-5
, yang memberi Anda masalah yang sama seperti yang saya perlihatkan di sini, tetapi saya ingin menggabungkan semuanya dalam satu jawaban). Ini memberitahupkg
untuk tidak mengabaikan ketidakmampuan untuk menginstalgcc-c-5
, tetapi untuk benar-benar mengeluh secara rinci tentang mengapa itu tidak dapat diinstal. Semoga ada sesuatu dalam output untuk memberi kita petunjuk tentang apa yang harus dilakukan selanjutnya:Ketika Anda mendapatkan kekacauan keluaran solver seperti ini, Anda biasanya ingin mencari masalah yang indentasi terdalam dan melihat apakah Anda dapat memperbaikinya. Dalam hal ini, Anda melihat bahwa itu tidak dapat menginstal
[email protected]
karena dikecualikan oleh pendirian terpasang.Mungkin diperlukan penyimpangan: apa itu penggabungan? Seperti paket grup, ini adalah paket yang utamanya memberikan dependensi, dalam hal ini
incorporate
dependensi. Ketergantungan ini sebenarnya tidak pernah menyebabkan paket diinstal; mereka hanya menempatkan batasan pada paket yang mungkin diinstal. Secara khusus, menggabungkan[email protected]
berarti bahwa jikafoo
diinstal, itu harus dalam kisaran versi[1.2, 1.3)
; yaitu minimum1.2
(inklusif), dan maksimum1.3
(eksklusif), atau apa pun yang cocok1.2.x.y.z....
.Dalam hal ini, penggabungan
userland-incorporation
yang sudah diinstal pada sistem telah menempatkan kendala padagcc-c-runtime
yang tidak kompatibel dengan versigcc-c-runtime
yanggcc-c-5
diperlukan pemasangan .Di situlah kami mengalami salah satu keanehan dari program evaluasi FOSS Solaris. Paket-paket yang tersedia di sana tidak terintegrasi dengan baik dengan seluruh sistem; mereka dirancang untuk diinstal pada versi Solaris yang lebih baru. Tetapi mereka telah dibangun sedemikian rupa sehingga sistem setidaknya dapat dipijat secara waras untuk membiarkan mereka diinstal. Dalam hal ini, Anda harus mengubah beberapa sisi.
Sebagian besar paket FOSS di Solaris digabungkan sedemikian rupa sehingga kendala yang diberikan oleh
incorporate
ketergantungan itu dapat dikurangi. Anda dapat melakukannya dengan mengubah sisi bernama olehversion-lock.<pkg-name>
menjadifalse
. Dalam hal ini,gcc-c-runtime
dangcc-c++-runtime
apakah dua paket memblokir instalasi yang Anda inginkan, jadi (seperti di atas):Ini akan memberikan sedikit output, tetapi sepertinya tidak banyak. Namun, setelah selesai, kita dapat mencoba lagi:
Dan voila, kami mendapatkan banyak paket yang diinstal, yang sebenarnya berisi hal-hal. Dari sini, Anda sekarang bisa mengetik
gcc --version
dan melihat bahwa itu memang 5.4.0. Perhatikan juga bahwa dua paket yang bagiannya kami buka kuncinya ditingkatkan, kemungkinan tersedia setelah kuncinya dibuka.Anda mungkin bertanya mengapa kami tidak perlu membuka sisi lain. Alasannya adalah Solaris 11.3 tidak memberikan GCC 5, dan karenanya tidak memberikan kendala pada versi paketnya. Jadi semua
gcc-*-5
paket sudah tidak dibatasi, dan tidak perlu dibuka untuk mengurangi kendala.Anda mungkin memperhatikan bahwa paket
gcc-gfortran-runtime
dangcc-gobjc-runtime
diinstal pada versi 4.8 mereka. Itu karena mereka masih terkendala, tetapi tidak ada yang kami lakukan bertentangan dengan kendala itu. Untuk konsistensi, Anda mungkin harus membuka kunci juga, dan kemudian meng-upgrade ke versi 5.x mereka (atau, jika Anda sudah sejauh ini sebelum mencoba apa pun, cukup buka mereka dari awal).sumber
pkg change-facet
diikuti olehpkg install -nv gcc-5 gcc-c-5
. Keluarannya bersih, artinya saya tidak melihat kesalahan atau keluaran seperti Anda merinci di jalur tolak. Setelah itu GCC masih 4.8.2 dangcc-5 --version
menghasilkangcc-5: command not found
. Sepertinya saya masih kehilangan sesuatu./usr/gcc
. Kami tidak mengirim/usr/bin/gcc-<version>
, meskipun itu mungkin bug yang berharga untuk diarsipkan. Anda dapat menggunakan/usr/gcc/5/bin/gcc
secara langsung, atau Anda dapat memberitahu sistem kemasan yang hal harus di/usr/bin/gcc
:pkg set-mediator -V 5 gcc
.Coba ini:
Anda mungkin akan melihat sesuatu seperti
GCC 5.x harus dalam
/usr/gcc/5.x/...
Instalasi Solaris 11 saya memiliki beberapa versi GCC
/usr/gcc
.Pembaruan : Dan tidak ada versi yang di bawah
/usr/gcc
ini adalah versi 5.x. Kemana perginya?sumber
/usr/gcc/5.x/
instalasi setelah. Bagaimana Anda menginstal GCC 5.x?pkg search gcc
ditampilkan? Thebasename
entri harus menunjukkan semua versi darigcc
perintah diinstal pada sistem Anda.basename file usr/gcc/5.3/bin/gcc pkg:/developer/gcc/[email protected]
Tampaknya itu menunjukkan Anda harus/usr/gcc/5.3/bin/gcc
menginstal. Baris 289 juga menunjukkan5.3.0-5.12.0.0.0.105.1
versi. Apa yangpkg search -l gcc | grep ^basename
ditunjukkan? Itu akan menunjukkan hanya nama filegcc
yang benar-benar diinstal.Pertama, daftar dari
pkg publisher
akan bermanfaat. Serta apkg list |grep gcc
Dan sepertinya tidak diinstal, output Anda hanya menampilkan (2) pkgs dan (8) file sedang diinstal.
Anda mungkin perlu melepaskan batasan untuk dapat menginstal. Output Anda dari petunjuk instalasi yang Anda instal dari rantai eval FOSS. Sarankan Anda meninjau bersama dengan tautan yang disediakan dalam output Anda:
Cara Mengakses Paket Evaluasi FOSS Terpilih untuk Oracle Solaris 11.3
Juga: Biasanya a
pkg search gcc
harus membantu menemukan di mana sesuatu dipasang, serta pkg? Apkg contents <pkg>
juga berguna untuk menemukan apa yang membentuk pkg.Saya juga berharap untuk melihat beberapa pkgs diinstal vs hanya 2 karena saya percaya pcc gcc harus mencoba untuk menginstal beberapa pkg untuk semua alat pengembang.
Mungkin ini pkg yang Anda inginkan dalam rilis repo?
developer/gcc/gcc-c++-5
sumber
sudo pkg install developer/gcc/gcc-c++-5
hasilReject: pkg://solaris/developer/gcc/[email protected]
denganReason: No version matching 'require' dependency system/library/gcc/[email protected],5.11-5.12.0.0.0.115.0 can be installed
.pkg install -nv <pkg>
Apakah Anda memeriksa tautan di atas untuk menggunakan eval pkgs? Saya belum mencoba menggunakan pkg eval, tetapi tampaknya Anda mungkin perlu membuka beberapa pkg untuk menginstal / memperbaruinya.