web-dev-qa-db-ja.com

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

この記事 を使用してgitをインストールしました。ここでgitをアンインストールします。どうやってするの?

21
Mikhail

私は解決策を見つけました here

更新2.11.2012

/ opt/gitなどの特定の階層の下にインストールされるようにGitを構成するときに十分に賢く、非標準のプレフィックスを使用した場合は、その階層を再帰的に削除します。

そうでない場合は、次のようにすることができます:

1)ビルドしてインストールしたバージョンのソースtarballを取得し、解凍します。

2)インストール場所(prefix、exec-prefixなど)に関して、元のインストールと同じように構成します。おそらく、何もオーバーライドしないでください。

3)次のように、インストールを実行するための一時ディレクトリを作成します。$ mkdir/var/tmp/git

4)作成する適切なDESTDIR変数を渡してGitをインストールします。$ make DESTDIR =/var/tmp/git install Git階層は、その一時ディレクトリの下に作成されます。

5)作成した階層を使用して、実際の階層( "/"自体)の下で削除するファイルを決定します。

最後のステップは「魔法」が発生する場所であり、より多くの説明が必要です。たとえば、次のように実行できます

$ find /var/tmp/git -type f -printf '/%P\n' | xargs -n 10 rm -f

(ルートとして)最初の誤インストールによってインストールされたファイルをルートファイルシステムに削除します。上記のエンカンテーションは、/ var/tmp/git階層を使用して、見つかったファイルのリストを出力しますが、ファイル内の「/ var/tmp/git」プレフィックスを「/」に置き換えます。したがって、「/ var/tmp/git出力の/ usr/bin/git "は、"/usr/bin/git "としてリストされます。次に、このリストはxargsにパイプされ、10個のパックで読み取ったファイル名に対してrmが実行されます(rmの呼び出し回数を1桁減らすため) )。

ファイルを処理した後、実行します

$ find /var/tmp/git -type d -printf '/%P\n'

インストールされているディレクトリのリストを検査します。これらは手動のアプローチを必要とするので、生成されたリストを見て、システムから安全にrmdirできるものを考えてください(これらは「/ usr/libexec/git」のようなディレクトリか、このようなものになります。 「/ usr/share/man/mann」またはそれが空であっても何かを削除したくないでしょう)。

追伸今後はnevermake install!を実行してシステムに何もインストールしないでください。最近のほとんどのメイクファイルは、「アンインストール」ターゲットをサポートしていません。テストのためにプライベートスクラッチ場所にインストールするか、パッケージ(.rpm、.debなど)を作成し、パッケージマネージャーがクリーンアップを処理するためです。何かをインストールする必要がある場合は、公式パッケージを探すか、使用可能な場合は、OSの最新バージョンから別の公式パッケージをバックポートしてみてください。最後の手段として、make install実行からバイナリパッケージを作成するcheckinstallツールを使用してみてください。これはひどいですが、それでもまだmake installよりはましです。

15
Mikhail

Makefileの2691行をたどりました。実際、アンインストールはできません。ドラット。

その場合の回避策は、make rpmオプション。 rpmをインストールします(インストール済みのすべてのファイルを上書きします。これは、すでにインストールされているファイルと同じでなければなりません)。次に、rpmを削除します。

今後のすべてのケースでは、パッケージ(RPM、yumなど)をビルドします。メンテナンスがとても簡単になります。

3
Hennes