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/gcc
tant 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/bin
est le chemin gcc fourni avec Solaris 10. Sous Solaris 11.1, gcc est, une fois installé, directement disponible sous la/usr/bin
forme 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/[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
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/[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.
la source
/bin/gcc
et/usr/bin/gcc
sont GCC 4.8. J'ai mis à jour la question avec la sortie des commandes.which gcc-5
Réponses:
TL; DR:
et essayez à nouveau.
Le problème est donc ce
gcc-5
que l'on appelle un package "groupe". Autrement dit, il se compose (au moins principalement) d'un tas degroup
dépendances. Unegroup
dé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 degcc-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 à
pkg
quoi vous vous attendez réellement. (Maintenant, la déconnexion ici est de savoir à quoi s'attendre; sans savoir comment inspectergcc-5
ces 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 pourgcc-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 depkg
ne pas ignorer son incapacité à installergcc-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: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é
[email protected]
car 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
incorporate
dé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[email protected]
signifie que s'ilfoo
est installé, il doit être dans la plage de versions[1.2, 1.3)
; c'est-à-dire un minimum de1.2
(inclus) et un maximum de1.3
(exclusif), ou tout ce qui correspond1.2.x.y.z....
.Dans ce cas, l'incorporation
userland-incorporation
déjà installée sur le système a imposé une contraintegcc-c-runtime
incompatible avec la version de l'gcc-c-runtime
installationgcc-c-5
requise.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
incorporate
dépendance peut être assouplie. Vous pouvez le faire en changeant la facette nommée parversion-lock.<pkg-name>
lafalse
. Dans ce cas,gcc-c-runtime
etgcc-c++-runtime
sont les deux packages bloquant l'installation que vous souhaitez, alors (comme ci-dessus):Cela donnera un peu de sortie, mais ne fera apparemment pas grand-chose. Une fois cela fait, nous pouvons réessayer:
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 --version
et 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-*-5
packages 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-runtime
etgcc-gobjc-runtime
ont é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).la source
pkg change-facet
suivipkg 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 segcc-5 --version
traduit pargcc-5: command not found
. Il me semble toujours manquer quelque chose./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/gcc
directement, ou vous pouvez indiquer au système d'emballage qui devrait être chose à/usr/bin/gcc
:pkg set-mediator -V 5 gcc
.Essaye ça:
Vous verrez probablement quelque chose comme
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/gcc
n'est une version 5.x. Où est-il allé?la source
/usr/gcc/5.x/
installation après. Comment avez-vous installé GCC 5.x?pkg search gcc
montre-t-on? Lesbasename
entrées doivent montrer toutes les versions de lagcc
commande installées sur votre système.basename file usr/gcc/5.3/bin/gcc pkg:/developer/gcc/[email protected]
Cela semble indiquer que vous devriez avoir/usr/gcc/5.3/bin/gcc
installé. La ligne 289 montre également une5.3.0-5.12.0.0.0.105.1
version. Quepkg search -l gcc | grep ^basename
montre-t-on? Cela devrait montrer uniquement les fichiers nommésgcc
qui sont réellement installés.Tout d'abord, une liste de
pkg publisher
serait 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 gcc
devrait aider à trouver où quelque chose a été installé, ainsi que le paquet? Apkg 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
la source
sudo pkg install developer/gcc/gcc-c++-5
résultatsReject: pkg://solaris/developer/gcc/[email protected]
avecReason: 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>
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.