web-dev-qa-db-ja.com

ソースからインストールされたgccをアンインストールする方法は?

ソースからインストールしたgccビルドをアンインストールするにはどうすればよいですか。gcc4.9を使用していて、ubuntu12.04を使用しています。

または、ubuntuリポジトリを介して最新のgccバージョンにアップグレードする方法はありますか?

13
user1423561

ソースからパッケージをビルドする場合、残念ながら通常は魔法のアンインストールはありませんが、これを概算できます。クレジットは このメーリングリストスレッド です。

基本的に、一時ディレクトリに再度インストールし、そのディレクトリで作成されたすべてのファイルを一覧表示する必要があります。その後、スクリプトを使用してメインシステムからすべてのファイルを削除できます。

この方法でGCCをアンインストールするスクリプトの例を次に示します。

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

Gccソースディレクトリ内からrootとして実行します。

2番目の質問に答えるには、ubuntuリポジトリで利用可能な最新のgccを次のコマンドでインストールできます。

apt-get install gcc

オーバーレイリポジトリには新しいバージョンがある可能性があります。ubuntu-toolchain-r/ test(インストール方法)に新しいバージョンがあるという提案があります。

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

しかし、彼らがまだ4.9を追加したかどうかはわかりません。そうでない場合は、実際にソースからインストールする必要があります。

編集:

@roelofsが彼の回答にリポジトリをインストールするためのより良いガイドを見つけたようですので、そこにも行き、それが助けになるなら彼に賛成票を与えることを忘れないでください:)

12
Vality

GCC 5.1.0では、トップレベルのuninstallターゲットはありませんが、一部のディレクトリ、特にgccにはターゲットがあるため、次のことができます。

cd build/gcc
Sudo make uninstall

これにより、インストールされたすべてが削除されるわけではありませんが、そのディレクトリに含まれるgccg++cpp...などの主要な実行可能ファイルが削除されるため、十分な場合があります。

Valityは素晴らしいスタートを切りました

make install DESTDIR=/tmp/gccinst

しかし、彼のクリーンアップコマンドにはいくつかの問題があります。まず、通常のディレクトリ(/usrなど)を含むディレクトリをrmに渡します。これは-type fで修正できます。

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

これが空のままにするディレクトリを取り除く...

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

valityとBenに追加します。独自のログインシェルからこれを行う場合:

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

必要-fフラグまたは権限の問題がある場合、スクリプトが実行されない場合があります。

1
Alfaha
/root/ihome3/gcc-4.6.3/gcc-build-4.6.3/gcc
[root@izwz93atpyz 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*
[root@izwz93atpalb56zydy9bpyz gcc]# pwd
/root/ihome3/gcc-4.6.3/gcc-build-4.6.3/gcc
0
user11206837

次の操作は本当に大丈夫です。ソースコードから1つのgccを作成し、gcc-buildでインストールを行うと、ソースコードのトップ方向に1つのgcc方向が生成されます。 cd $ source_code_top/gcc、次にアンインストールします。 Linuxシステムからgccを削除します。

0
user11206837