Où se trouve GCC-5 après l'avoir installé sur Solaris 11?


9

Veuillez pardonner mon ignorance ... J'utilise uniquement Solaris pour tester les bibliothèques C / C ++ qui m'intéressent. Je ne suis ni administrateur ni utilisateur de Solaris.

J'ai installé GCC-5 sur Solaris 11.3, x86 car j'avais besoin d'un compilateur C ++ qui prend en charge -std=c++11(voir ci-dessous pour la sortie du package). Le GCC natif de Sun est 4.8, et il ne supporte pas bien (ou pas du tout) C ++ 11.

Malheureusement, je ne le trouve pas après l'installation:

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

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

Et pour être complet:

$ /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

Où se trouve le compilateur?


Selon l' installation de GCC sur Oracle Solaris 11 sur Stack Overflow, son censé être en /usr/bin/gcctant que lien symbolique. Mais la réponse semble être un peu fausse:

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

Selon GCC manquant dans Solaris 11 et serveur déjà déployé sur Server Fault:

/usr/sfw/binest le chemin gcc fourni avec Solaris 10. Sous Solaris 11.1, gcc est, une fois installé, directement disponible sous la /usr/binforme d'un lien symbolique pointant vers/usr/gcc/<version>/bin/gcc

La réponse semble également être un peu décalée.


$ 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

Après l'installation 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

Et:

~$ 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.

Essayez d'utiliser: gcc --version et non gcc-5 --version
Slh47

1
/ Usr / gcc est-il un lien logiciel?
FloHe

@FloHe - Les deux /bin/gccet /usr/bin/gccsont GCC 4.8. J'ai mis à jour la question avec la sortie des commandes.

êtes-vous certain que l'installation s'est terminée correctement?
Rory Alsop

Essayez peut-être:which gcc-5
FloHe

Réponses:


10

TL; DR:

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

et essayez à nouveau.

Le problème est donc ce gcc-5que l'on appelle un package "groupe". Autrement dit, il se compose (au moins principalement) d'un tas de groupdépendances. Une groupdépendance est celle qui sera installée si possible, mais ignorée sinon. Dans ce cas, il n'était pas possible d'installer une ou plusieurs des dépendances de gcc-5, elles ont donc été ignorées et vous vous êtes retrouvé avec moins que prévu.

Lorsque cela se produit (qu'il s'agisse de moins de packages ou de packages dans une version différente), la première chose à faire est de dire à pkgquoi vous vous attendez réellement. (Maintenant, la déconnexion ici est de savoir à quoi s'attendre; sans savoir comment inspecter gcc-5ces informations, ni même savoir que vous pourriez avoir à le faire, je ne sais pas comment répondre à cela.) Dans ce cas, choisissez l'un des ses dépendances pour voir si cela aide; dis, gcc-c-5(vous avez suivi cette étape pour gcc-c++-5, ce qui vous a posé le même problème que je montre ici, mais je voulais tout rassembler dans une seule réponse). Cela indique de pkgne pas ignorer son incapacité à installer gcc-c-5, mais de se plaindre en détail des raisons pour lesquelles il n'a pas pu être installé. J'espère qu'il y aura quelque chose dans la sortie pour nous donner une idée de ce qu'il faut faire ensuite:

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

Lorsque vous obtenez un désordre de sortie de solveur comme celui-ci, vous voulez généralement rechercher le problème le plus profond et voir si vous pouvez corriger cela. Dans ce cas, vous voyez qu'il ne peut pas être installé gcc-c-runtime@5.4.0-5.12.0.0.0.115.0car il est exclu par une incorporation installée.

Peut-être qu'une digression est nécessaire: qu'est-ce qu'une incorporation? Comme un package de groupe, c'est un package qui fournit principalement des dépendances, dans ce cas, des incorporatedépendances. Ces dépendances n'entraînent jamais réellement l'installation de packages; ils imposent simplement des contraintes aux packages qui peuvent être installés. Plus précisément, l'incorporation foo@1.2signifie que s'il fooest installé, il doit être dans la plage de versions [1.2, 1.3); c'est-à-dire un minimum de 1.2(inclus) et un maximum de 1.3(exclusif), ou tout ce qui correspond 1.2.x.y.z.....

Dans ce cas, l'incorporation userland-incorporationdéjà installée sur le système a imposé une contrainte gcc-c-runtimeincompatible avec la version de l' gcc-c-runtimeinstallation gcc-c-5requise.

C'est là que nous rencontrons l'une des bizarreries du programme d'évaluation Solaris FOSS. Les packages mis à disposition ne sont pas bien intégrés au reste du système; ils sont conçus pour être installés sur une version plus récente de Solaris. Mais ils ont été construits de telle sorte que le système peut au moins être massivement sain en les laissant être installés. Dans ce cas, vous devez modifier quelques facettes.

La plupart des packages FOSS de Solaris sont intégrés de telle sorte que la contrainte fournie par cette incorporatedépendance peut être assouplie. Vous pouvez le faire en changeant la facette nommée par version-lock.<pkg-name>la false. Dans ce cas, gcc-c-runtimeet gcc-c++-runtimesont les deux packages bloquant l'installation que vous souhaitez, alors (comme ci-dessus):

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

Cela donnera un peu de sortie, mais ne fera apparemment pas grand-chose. Une fois cela fait, nous pouvons réessayer:

# 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

Et voila, nous obtenons un tas de paquets installés, qui contiennent en fait des trucs. À partir d'ici, vous devriez maintenant pouvoir taper gcc --versionet voir qu'il s'agit bien de la version 5.4.0. Notez également que les deux packages dont nous avons débloqué les facettes ont été mis à niveau, une possibilité disponible après le déverrouillage.

Vous vous demandez peut-être pourquoi nous n'avons pas eu besoin de déverrouiller d'autres facettes. La raison en est que Solaris 11.3 n'a pas livré GCC 5 et n'a donc pas imposé de contraintes sur les versions de ses packages. Ainsi, tous les gcc-*-5packages sont déjà sans contrainte et n'ont pas besoin d'être déverrouillés pour assouplir les contraintes.

Vous remarquerez peut-être que les packages gcc-gfortran-runtimeet gcc-gobjc-runtimeont été installés dans leurs versions 4.8. C'est parce qu'ils sont toujours contraints, mais rien de ce que nous avons fait n'était en conflit avec ces contraintes. Par souci de cohérence, vous devriez probablement les déverrouiller également, puis les mettre à niveau vers leurs versions 5.x (ou, si vous êtes allé si loin avant d'essayer quoi que ce soit, il vous suffit de les déverrouiller dès le début).


Merci @Danek, et désolé pour la réponse tardive. Je suis sur un autre cycle de test Solaris. J'ai couru pkg change-facetsuivi pkg install -nv gcc-5 gcc-c-5. La sortie était propre, ce qui signifie que je n'ai pas vu d'erreurs ou de sortie comme vous l'avez détaillé sur le chemin de rejet. Ensuite, GCC est toujours 4.8.2 et se gcc-5 --versiontraduit par gcc-5: command not found. Il me semble toujours manquer quelque chose.

Différentes versions de gcc sont disponibles /usr/gcc. Nous ne livrons pas /usr/bin/gcc-<version>, bien que cela puisse être un bug intéressant à classer. Vous pouvez utiliser /usr/gcc/5/bin/gccdirectement, ou vous pouvez indiquer au système d'emballage qui devrait être chose à /usr/bin/gcc: pkg set-mediator -V 5 gcc.
Danek Duvall

1

Essaye ça:

ls -l /usr/bin/gcc

Vous verrez probablement quelque chose comme

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

GCC 5.x devrait être dans /usr/gcc/5.x/...

Mon installation Solaris 11 comporte plusieurs versions de GCC sous /usr/gcc.

Mise à jour : Et aucune de ces versions sous /usr/gccn'est une version 5.x. Où est-il allé?


Merci Andrew. Je n'ai pas d' /usr/gcc/5.x/installation après. Comment avez-vous installé GCC 5.x?

@jww J'ai un tas de versions 4.x différentes. N ° 5, cependant?!?! Étrange. Je vais devoir creuser cela.
Andrew Henle

@jww Que pkg search gccmontre-t-on? Les basenameentrées doivent montrer toutes les versions de la gcccommande installées sur votre système.
Andrew Henle

@jww Ligne 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 Cela semble indiquer que vous devriez avoir /usr/gcc/5.3/bin/gccinstallé. La ligne 289 montre également une 5.3.0-5.12.0.0.0.105.1version. Que pkg search -l gcc | grep ^basenamemontre-t-on? Cela devrait montrer uniquement les fichiers nommés gccqui sont réellement installés.
Andrew Henle

Ajouté à la question (dernier bloc).

1

Tout d'abord, une liste de pkg publisherserait utile. Ainsi qu'unpkg list |grep gcc

Et il ne semble pas qu'il ait été installé, votre sortie n'affiche que (2) paquets et (8) fichiers en cours d'installation.

Vous devrez peut-être libérer les contraintes pour pouvoir installer. Votre sortie des conseils d'installation que vous installez à partir de la chaîne d'évaluation FOSS. Je vous suggère de réviser avec le lien fourni dans votre sortie:

Comment accéder aux packages d'évaluation FOSS sélectionnés pour Oracle Solaris 11.3

Aussi: Normalement, un pkg search gccdevrait aider à trouver où quelque chose a été installé, ainsi que le paquet? A pkg contents <pkg>est également utile pour trouver ce qui constitue un paquet.

Je m'attendais également à voir plusieurs paquets installés contre seulement 2, car je pense que le paquet gcc devrait essayer d'installer plusieurs paquets pour tous les outils de développement.

Peut-être que c'est le paquet que vous voulez sous le repo de la version? developer/gcc/gcc-c++-5


Merci. sudo pkg install developer/gcc/gcc-c++-5résultats Reject: pkg://solaris/developer/gcc/gcc-c++-5@5.4.0-5.12.0.0.0.115.0avec 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.

Essayez une `pkg list -a | grep c ++` pour rechercher une version de gcc. Et avant l'installation proprement dite, essayez une installation à vide détaillée pour voir si cela vous donne des informations sur la cause de l'échec. ie: pkg install -nv <pkg> Avez-vous vérifié le lien ci-dessus pour l'utilisation des paquets eval? Je n'ai pas encore essayé d'utiliser les ensembles d'évaluation, mais il semble que vous deviez peut-être déverrouiller certains des ensembles pour les installer / mettre à jour.
sleepyweasel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.