web-dev-qa-db-fra.com

Comment désinstaller gcc installé à partir du source?

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?

12
user1423561

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 :)

11
Vality

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)
6
Ben Voigt

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.

1
Alfaha