it-swarm.com.de

Wie deinstalliere ich gcc aus dem Quellcode?

Wie kann ich ein GCC-Build deinstallieren, das ich aus dem Quellcode installiert habe? Ich verwende GCC 4.9 und bin auf Ubuntu 12.04.

Oder gibt es eine Möglichkeit, über das Ubuntu-Repository auf die neuesten GCC-Versionen zu aktualisieren?

12
user1423561

Wenn Sie ein Paket aus dem Quellcode erstellen, gibt es in der Regel leider keine magische Deinstallation. Sie können dies jedoch annähern, indem Sie diesem Mailinglisten-Thread gutschreiben.

Grundsätzlich sollten Sie die Installation in einem temporären Verzeichnis wiederholen und alle in diesem Verzeichnis erstellten Dateien auflisten. Anschließend können Sie alle Dateien über ein Skript aus dem Hauptsystem löschen.

Hier ist ein Beispiel für ein Skript zum Deinstallieren von GCC:

make install DESTDIR=/tmp/gccinst
find /tmp/gccinst | sed -e s,/tmp/gccinst,, | \
(while read F; do rm "$F"; done)

Führen Sie es im gcc-Quellverzeichnis als root aus.

Um Ihre zweite Frage zu beantworten, können Sie den neuesten gcc installieren, der im Ubuntu Repo verfügbar ist:

apt-get install gcc

Overlay-Repos haben möglicherweise neuere Versionen. Ich habe einen Vorschlag gesehen, dass es unter ubuntu-toolchain-r/test eine neuere Version gibt (Installation über):

Sudo add-apt-repository ppa:ubuntu-toolchain-r/test

Ich bin mir aber nicht sicher, ob sie dort noch 4.9 hinzugefügt haben. Wenn nicht, müssen Sie in der Tat von der Quelle installieren.

BEARBEITEN:

Es sieht so aus, als hätte @roelofs eine bessere Anleitung gefunden, um das Repo in seiner Antwort zu installieren. Also schau auch dort hin und denke daran, ihm eine positive Bewertung zu geben, wenn es hilft :)

11
Vality

In GCC 5.1.0 gibt es zwar kein Ziel für uninstall auf oberster Ebene, in einigen Verzeichnissen ist es jedoch vorhanden, insbesondere für gcc. Sie können also Folgendes tun:

cd build/gcc
Sudo make uninstall

Dies entfernt nicht alles, was installiert wurde, aber es entfernt wichtige ausführbare Dateien wie gcc, g++, cpp..., die in diesem Verzeichnis enthalten sind. Es könnte also genug sein.

Vality hat einen guten Start

make install DESTDIR=/tmp/gccinst

Aber sein Aufräumbefehl hat ein paar Probleme. Zunächst werden Verzeichnisse an rm übergeben, einschließlich der üblichen Verzeichnisse (z. B. /usr). Wir können dies über -type f beheben:

find /tmp/gccinst -type f | sed -e s,/tmp/gccinst,, | \
    (while read F; do rm "$F"; done)

Die Verzeichnisse, die dadurch leer bleiben, werden entfernt ...

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

füge Vality und Ben hinzu. Wenn Sie dies von Ihrer eigenen Login-Shell aus tun:

find $HOME/tmp/gccinst/ -type f | sed -e s,$HOME/tmp/gccinst,, | (while read F; do rm **-f** "$F" ; done)

Benötigen Sie das -f-Flag, oder das Skript wird möglicherweise nicht ausgeführt, wenn ein Berechtigungsproblem vorliegt.

1
Alfaha
/root/ihome3/gcc-4.6.3/gcc-build-4.6.3/gcc
[[email protected] gcc]# make uninstall
rm -rf /usr/local/bin/c++
rm -rf /usr/local/bin/g++
rm -rf /usr/local/share/man/man1/g++.1
rm -rf /usr/local/lib/gcc/x86_64-unknown-linux-gnu/4.6.3
rm -rf /usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.6.3
rm -rf /usr/local/bin/gcc
rm -f /usr/local/bin/cpp
if [ x != x ]; then \
  rm -f /usr/local//cpp; \
else true; fi
rm -rf /usr/local/bin/gcov`enter code here`
rm -rf /usr/local/share/man/man1/gcc.1
rm -rf /usr/local/share/man/man1/cpp.1
rm -f /usr/local/share/info/cpp.info* /usr/local/share/info/gcc.info*
rm -f /usr/local/share/info/cppinternals.info* /usr/local/share/info/gccint.info*
[[email protected] gcc]# pwd
/root/ihome3/gcc-4.6.3/gcc-build-4.6.3/gcc
0
user11206837

die folgende Operation ist wirklich in Ordnung. Wenn Sie einen gcc aus dem Quellcode erstellen und "install at gcc-build" ausführen, wird eine gcc-Richtung in der obersten Richtung des Quellcodes generiert. cd $ source_code_top/gcc, dann deinstallieren. es wird gcc von deinem Linux-System entfernen.

0
user11206837