Comment puis-je désinstaller une version de gcc que j'ai installée depuis source. J'utilise gcc 4.9 et je suis sur Ubuntu 12.04.
Ou existe-t-il un moyen de mettre à niveau les dernières versions de gcc via le référentiel Ubuntu?
Lorsque vous construisez un paquet à partir des sources, il n’ya malheureusement pas de désinstallation magique en général, mais vous pouvez vous en approcher, crédit à ce fil de liste de diffusion .
Fondamentalement, vous devez réinstaller dans un répertoire temporaire et répertorier tous les fichiers créés dans ce répertoire. Vous pouvez ensuite tous les supprimer du système principal via un script.
Voici un exemple de script pour désinstaller GCC de cette manière:
make install DESTDIR=/tmp/gccinst
find /tmp/gccinst | sed -e s,/tmp/gccinst,, | \
(while read F; do rm "$F"; done)
Exécutez-le depuis le répertoire source gcc en tant que root.
Pour répondre à votre deuxième question, vous pouvez installer le dernier gcc disponible dans le dépôt Ubuntu avec:
apt-get install gcc
Les dépôts en superposition peuvent avoir des versions plus récentes, j'ai déjà suggéré une version plus récente sur ubuntu-toolchain-r/test (installer via):
Sudo add-apt-repository ppa:ubuntu-toolchain-r/test
Mais je ne suis pas sûr s'ils ont ajouté 4.9 là encore. Sinon, vous devrez en effet installer à partir de la source.
MODIFIER:
On dirait que @roelofs a trouvé un meilleur guide pour installer le référentiel dans sa réponse, alors allez y chercher aussi et n'oubliez pas de lui donner un vote positif si cela peut vous aider :)
Dans GCC 5.1.0, bien qu'il n'y ait pas de cible uninstall
de niveau supérieur, certains répertoires en disposent, en particulier gcc
. Vous pouvez donc:
cd build/gcc
Sudo make uninstall
Cela ne supprime pas tout ce qui a été installé, mais supprime les exécutables principaux tels que gcc
, g++
, cpp
... contenus dans ce répertoire, de sorte que cela peut suffire.
Vality a un bon début
make install DESTDIR=/tmp/gccinst
Mais sa commande de nettoyage a quelques problèmes. Premièrement, il passe les répertoires à rm
, y compris les répertoires habituels (tels que /usr
). Nous pouvons résoudre ce problème via -type f
:
find /tmp/gccinst -type f | sed -e s,/tmp/gccinst,, | \
(while read F; do rm "$F"; done)
Se débarrasser des répertoires laissés vides.
find /tmp/gccinst -depth -type d -not -empty | sed -e s,/tmp/gccinst,, | \
(while read F; do rmdir -p --ignore-fail-on-non-empty "$F"; done)
ajouter à Vality et Ben. Si vous le faites à partir de votre propre shell de connexion:
find $HOME/tmp/gccinst/ -type f | sed -e s,$HOME/tmp/gccinst,, | (while read F; do rm **-f** "$F" ; done)
Besoin -f
ou le script peut ne pas s'exécuter s'il y a un problème d'autorisation.