Di mana GCC-5 setelah menginstalnya di Solaris 11?

9

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/gccsebagai 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/binadalah jalur gcc yang dibundel dengan Solaris 10. Pada Solaris 11.1, gcc, ketika diinstal, langsung tersedia /usr/binsebagai 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.
Komunitas
sumber
Coba gunakan: gcc --version dan bukan gcc-5 --version
Slh47
1
Apakah / usr / gcc softlink?
FloHe
@ FlloHe - Keduanya /bin/gccdan /usr/bin/gccGCC 4.8. Saya memperbarui pertanyaan dengan output dari perintah.
Anda yakin instalasi selesai dengan benar?
Rory Alsop
Mungkin mencoba:which gcc-5
FloHe

Jawaban:

10

TL; DR:

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

dan coba lagi.

Jadi masalahnya adalah gcc-5apa yang dikenal sebagai paket "grup". Artinya, terdiri (setidaknya terutama) dari sekelompok groupdependensi. Sebuah groupketergantungan adalah salah satu yang akan dipasang jika memungkinkan, tapi diabaikan jika tidak. Dalam hal ini, itu tidak mungkin untuk menginstal satu atau lebih dari dependensi gcc-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 pkgapa yang sebenarnya Anda harapkan. (Sekarang, putuskan di sini adalah bagaimana mengetahui apa yang diharapkan; tanpa mengetahui bagaimana memeriksa gcc-5informasi 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 untuk gcc-c++-5, yang memberi Anda masalah yang sama seperti yang saya perlihatkan di sini, tetapi saya ingin menggabungkan semuanya dalam satu jawaban). Ini memberitahu pkguntuk tidak mengabaikan ketidakmampuan untuk menginstal gcc-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:

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

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 incorporatedependensi. Ketergantungan ini sebenarnya tidak pernah menyebabkan paket diinstal; mereka hanya menempatkan batasan pada paket yang mungkin diinstal. Secara khusus, menggabungkan [email protected]berarti bahwa jika foodiinstal, itu harus dalam kisaran versi [1.2, 1.3); yaitu minimum 1.2(inklusif), dan maksimum 1.3(eksklusif), atau apa pun yang cocok 1.2.x.y.z.....

Dalam hal ini, penggabungan userland-incorporationyang sudah diinstal pada sistem telah menempatkan kendala pada gcc-c-runtimeyang tidak kompatibel dengan versi gcc-c-runtimeyang gcc-c-5diperlukan 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 incorporateketergantungan itu dapat dikurangi. Anda dapat melakukannya dengan mengubah sisi bernama oleh version-lock.<pkg-name>menjadi false. Dalam hal ini, gcc-c-runtimedan gcc-c++-runtimeapakah dua paket memblokir instalasi yang Anda inginkan, jadi (seperti di atas):

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

Ini akan memberikan sedikit output, tetapi sepertinya tidak banyak. Namun, setelah selesai, kita dapat mencoba lagi:

# 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

Dan voila, kami mendapatkan banyak paket yang diinstal, yang sebenarnya berisi hal-hal. Dari sini, Anda sekarang bisa mengetik gcc --versiondan 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-*-5paket sudah tidak dibatasi, dan tidak perlu dibuka untuk mengurangi kendala.

Anda mungkin memperhatikan bahwa paket gcc-gfortran-runtimedan gcc-gobjc-runtimediinstal 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).

Danek Duvall
sumber
Terima kasih @Danek, dan maaf atas jawaban yang terlambat. Saya sedang siklus pengujian Solaris lain. Aku berlari pkg change-facetdiikuti oleh pkg 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 dan gcc-5 --versionmenghasilkan gcc-5: command not found. Sepertinya saya masih kehilangan sesuatu.
Versi gcc berbeda ada di /usr/gcc. Kami tidak mengirim /usr/bin/gcc-<version>, meskipun itu mungkin bug yang berharga untuk diarsipkan. Anda dapat menggunakan /usr/gcc/5/bin/gccsecara langsung, atau Anda dapat memberitahu sistem kemasan yang hal harus di /usr/bin/gcc: pkg set-mediator -V 5 gcc.
Danek Duvall
1

Coba ini:

ls -l /usr/bin/gcc

Anda mungkin akan melihat sesuatu seperti

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

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/gccini adalah versi 5.x. Kemana perginya?

Andrew Henle
sumber
Andrew terima kasih. Saya tidak punya /usr/gcc/5.x/instalasi setelah. Bagaimana Anda menginstal GCC 5.x?
@jww Saya punya banyak versi 4.x yang berbeda. No 5, meskipun?!?! Aneh. Saya harus menggali ini.
Andrew Henle
@jww Apa yang pkg search gccditampilkan? The basenameentri harus menunjukkan semua versi dari gccperintah diinstal pada sistem Anda.
Andrew Henle
@jww Baris 287: basename file usr/gcc/5.3/bin/gcc pkg:/developer/gcc/[email protected] Tampaknya itu menunjukkan Anda harus /usr/gcc/5.3/bin/gccmenginstal. Baris 289 juga menunjukkan 5.3.0-5.12.0.0.0.105.1versi. Apa yang pkg search -l gcc | grep ^basenameditunjukkan? Itu akan menunjukkan hanya nama file gccyang benar-benar diinstal.
Andrew Henle
Ditambahkan ke pertanyaan (blok terakhir).
1

Pertama, daftar dari pkg publisherakan 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 gccharus membantu menemukan di mana sesuatu dipasang, serta pkg? A pkg 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

sleepyweasel
sumber
Terima kasih. sudo pkg install developer/gcc/gcc-c++-5hasil Reject: pkg://solaris/developer/gcc/[email protected]dengan Reason: No version matching 'require' dependency system/library/gcc/[email protected],5.11-5.12.0.0.0.115.0 can be installed.
Coba `daftar pkg -a | grep c ++` untuk mencari versi gcc. Dan sebelum instalasi yang sebenarnya, coba instal dry run verbose untuk melihat apakah itu memberi Anda informasi tentang penyebab kegagalan. yaitu: 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.
sleepyweasel