Cette question semble être traitée correctement dans plusieurs questions et dans d'autres endroits faciles à trouver avec Google, mais je ne trouve pas la solution satisfaisante pour les raisons expliquées ci-dessous. Mais juste pour terminer, j'ai inclus quelques liens pertinents:
/ubuntu/138284/how-to-downgrade-a-package-via-apt-get /ubuntu/428772/how-to-install-specific-version-of -some-package / 428778 /ubuntu/26498/choose-gcc-and-g-version ...
Et d'autres.
Cependant, cette question concerne l'installation d'une version très spécifique de GCC dans Kali Linux, qui ne semble pas facilement disponible en tant que package spécifique. En particulier, la question est de savoir comment installer la version 6.3.0, car j'ai besoin de cette version pour compiler un programme particulier: https://www.reddit.com/r/Monero/comments/6d0ah8/xmrig_miner_new_release/
(en tant que question bonus, s'il existe un moyen plus sensé de résoudre ce problème particulier sans utiliser une version différente de GCC, n'hésitez pas à répondre, mais je pense que cette question est générale et je voudrais savoir comment le faire indépendamment de comment faire correctement le lien du programme susmentionné)
Les versions disponibles pour l'installation de n'importe quel paquet, par exemple gcc, peuvent être déterminées avec:
apt-cache showpkg gcc
Qui listera les versions disponibles sous "versions:", par exemple
4:7.2.0-1d1
4:4.9.2-2
L'installation est alors aussi simple que l'émission
apt-get install gcc:4:4.9.2-2
Cela installera l'ancienne version 4: 4.9.2-2, en écrasant simplement (je crois) l'installation 7.2.0-1d1, si elle est présente.
Pour que la version 4: 4.9.2-2 soit disponible, j'ai dû ajouter deb
http://old.kali.org/kali sana main non-free contrib
à mon
/etc/apt/sources.list
fichier, puis exécuter apt-get update
.
Cependant, que se passe-t-il si la version dont j'ai besoin n'est pas répertoriée?
J'ai expérimenté différentes sources, par exemple celles trouvées ici: http://snapshot.debian.org/ et sur diverses autres questions et sites Web issus de recherches Google.
La plupart d'entre eux me donnent ignorer ou des erreurs, par exemple comme suit
Ign:3 http://snapshot.debian.org/archive/debian/20091004T111800Z lenny InRelease
Même si cela fonctionnait, il semble que ce soit une très mauvaise approche pour installer une version particulière, car l'ajout d'une source arbitraire pourrait ne pas avoir la version particulière que je veux.
Si je recherche gcc sur snapshot.debian.org, je n'obtiens que des versions très anciennes: http://snapshot.debian.org/package/gcc/
J'ai finalement été frustré par cette approche et j'ai compilé GCC 6.3.0 à partir de l'archive tar source. La compilation a été réussie, mais je me demande alors comment l'installer. Je suis prudent sur l' exécution make install
que je crains qu'il ne falsifier apt
et dpkg
et éventuellement briser le système.
Au lieu de cela, j'ai essayé de l'exécuter directement depuis le répertoire de génération. J'ai essayé d'ajouter simplement le répertoire de construction comme première entrée dans mon PATH, ce qui n'a pas fonctionné. Ensuite, j'ai tenté de renommer /usr/bin/gcc
et de créer un lien symbolique à partir /usr/bin/gcc
de l'emplacement de mon exécutable gcc-6.3.0. Cela présente le problème suivant:
cc: error trying to exec 'cc1': execvp: No such file or directory, which
Cela a été corrigé avec une autre entrée dans mon CHEMIN.
Ensuite, je reçois cette erreur:
/usr/include/stdio.h:34:21: fatal error: stddef.h: No such file or directory
Ce que je suppose est dû à une entrée manquante dans /usr/lib/gcc/x86_64-linux-gnu
. J'ai essayé de créer un lien symbolique de 6 vers 6.3.0, mais ce n'était pas suffisant. J'ai aussi essayé de tout copier avec le cp -R
même résultat.
Cela devrait être un programme 64 bits, mais j'ai également considéré la même chose pour
/usr/lib/gcc/i686-linux-gnu
.
Je suis sûr que je pourrais commencer strace
à voir d'où il tente d'ouvrir les fichiers, lire les fichiers journaux, lire la source, et finalement j'imagine que je serais en mesure de comprendre comment pirater ensemble une solution mal conçue. Mais ce serait bien si quelqu'un pouvait me dire comment faire cela de manière saine.