web-dev-qa-db-ja.com

'make install'とは反対のこと、つまりLinuxでライブラリをアンインストールする方法は何ですか?

実行中

./configure --prefix=/mingw 

以前に実行したライブラリ用のMinGW/MSYSシステム

'./configure --prefix=/mingw && make && make install' 

私はこのメッセージに遭遇しました:

警告:VampプラグインSDKのバージョンはすでにインストールされています。あなたが最初に古いものを削除せずに新しいバージョンをインストールするならば、心配と悲しみを期待してください。 (続き)

これは私が心配していました。 'make install'の反対は何ですか?つまり、Linuxでライブラリをアンインストールする方法は? 「きれいにする」ことで仕事はできますか、それとも他のステップがありますか。

361
psas

make cleanはあなたのソース/ビルドツリーから中間ファイルや出力ファイルを削除します。しかし、それはソース/ビルドツリーにのみ影響します。それはファイルシステムの他の部分には触れず、以前にインストールされたソフトウェアを削除することはありません。

運がよければ、make uninstallを実行してもうまくいきます。しかし、それを提供するのは図書館の作者次第です。何人かの作者はuninstallターゲットを提供しますが、他は提供しません。

運が悪くない場合は、手動でアンインストールする必要があります。 make -n installを実行すると、ソフトウェアが自分自身をインストールするのに必要な手順を示しますが、実際には何もしないので便利です。その後、手動でこれらの手順を逆にすることができます。

474
Josh Kelley

Sudo make uninstallが利用できない場合:

Debianベースのシステムでは、make installの代わりに(または*の後に)自動的にインストールされるSudo checkinstallファイルを作成するために.debを実行することができます。その後、システムパッケージマネージャを使ってそれを削除することができます(例:apt/synaptic/aptitude/dpkg)。 Checkinstallは他の種類のパッケージの作成もサポートします。 RPM.

http://community.linuxmint.com/tutorial/view/162 および いくつかの基本的なcheckinstallの使い方も参照してくださいdebian checkinstallパッケージ


*:make installを使ってインストールした後にこれを読んでいるのであれば、上記の指示に従うことができ、その後dpkg -r $PACKAGE_NAME_YOU_CHOSENを実行することができます。

328
Nisse

あなたがmake installでインストールされたすべてのファイルをリストするmanifestファイルを持っているなら、あなたは私が別の答えから持っているこのコマンドを実行することができます:

cat install_manifest.txt | xargs echo rm | sh

Sudo make installがある場合は、アンインストールにSudoを追加する必要があります。

cat install_manifest.txt | xargs echo Sudo rm | sh
55
three

問題となっているプログラムのmakefile/configure script/autofooマジックがどれほどうまくあなたの問題を解決する可能性があります:

make uninstall

問題は、インストールしたバージョンのソースツリーで、インストールに使用したものとまったく同じ設定でこれを実行する必要があることです。

24
Joachim Sauer

"make install"後にアンインストールする方法

方法1(アンインストールする)

ステップ1:このステップに従う必要があるのは ビルドディレクトリを削除または変更した場合 何らかの方法で 正確な を使用してダウンロードおよびmake/make installするのと同じ手順です。前。

ステップ2:make uninstallを試してください。

cd $SOURCE_DIR 
Sudo make uninstall

が成功すれば完了です。もしあなたが妄想的なら、make uninstallがファイルを見逃さないようにするために "方法#3"のステップを試すこともできます。

方法2(checkinstall - debianベースのシステムのみ)

プロセスの概要

Debianベースのシステム(Ubuntuなど)では、checkinstallという名前のツールを使用して.debパッケージを非常に簡単に作成できます。それから.debパッケージをインストールし(これによりあなたのパッケージのすべての部分が本当にインストールされたことをあなたのdebianシステムに認識させるでしょう)そして最後にそれをアンインストールしてあなたのパッケージマネージャがあなたのシステムをきちんと片付けます。

ステップバイステップ

Sudo apt -y install checkinstall
cd $SOURCE_DIR 
Sudo checkinstall

この時点でcheckinstallはパッケージ名の入力を求めます。少し説明的なものを入力し、それをすぐに使用するので注意してください。それはまたあなたが無視できるいくつかのより多くのデータを促します。それが受け入れられないバージョンについて不平を言うならば、ちょうど1.0のような合理的な何かを入力してください。完了したら、インストールして最後にアンインストールできます。

Sudo dpkg -i $PACKAGE_NAME_YOU_ENTERED 
Sudo dpkg -r $PACKAGE_NAME_YOU_ENTERED

方法3(install_manifest.txt)

ソースディレクトリにファイルinstall_manifest.txtが存在する場合、そのファイルにはインストールが作成したすべてのファイルのファイル名が含まれているはずです。

それで最初にファイルとそれらのmod-timeのリストをチェックしてください:

cd $SOURCE_DIR 
Sudo xargs -I{} stat -c "%z %n" "{}" < install_manifest.txt

あなたは zero errors を得なければならず、そしてリストされたファイルのmod-timesは onまたは インストール時間の後にあるべきです。すべて問題なければ、一度に削除できます。

cd $SOURCE_DIR 
mkdir deleted-by-uninstall
Sudo xargs -I{} mv -t deleted-by-uninstall "{}" < install_manifest.txt

ユーザーMerlyn Morgan-Grahamは、この方法に関してあなたが心に留めておくべき重大な注意を払っています(ここに逐語的にコピーされています): files [...]は他のパッケージを壊す可能性があります。 "。これがdeleted-by-uninstallディレクトリを作成し、ファイルを削除せずにそこに移動した理由です。


この記事の99%が他の回答にあった。私は(うまくいけば)わかりやすいやり方で有用なものをすべて集め、重要な詳細に特別な注意を払うことを試みた(xarg引数を引用することや削除されたファイルのバックアップを保存することなど)。

12
ndemou

make cleanは一般的に、ソースコードを含むディレクトリ内のビルドされたファイルをきれいにするだけで、インストールされたソフトウェアに触れることはめったにありません。

通常、Makefileにはアンインストールの対象は含まれていません。通常は、自分がインストールされたディレクトリからファイルを削除することによって、自分で行う必要があります。たとえば、プログラムを構築し、それを(make installを使用して)/usr/localにインストールした場合は、/usr/local/bin/usr/local/libexec/usr/local/share/manなどを調べて、不要なファイルを削除します。 Makefileにuninstallターゲットが含まれることもありますが、必ずしもそうとは限りません。

もちろん、通常Linuxシステムではソフトウェアを自動的にアンインストールすることができるパッケージマネージャを使ってソフトウェアをインストールします。

10
mipadi

"stow"ユーティリティは、この問題を解決するために設計されました。 http://www.gnu.org/software/stow/

7
jjw

残念ながら標準はありません、これはソースからインストールすることの危険の1つです。一部のMakefileには「アンインストール」が含まれるため、

make uninstall

ソースディレクトリからそうでなければ、それはmake installがしたことを手動で元に戻すことの問題かもしれません。

make cleanは通常単にソースディレクトリをきれいにするだけです - 生成された/コンパイルされたファイルなどを削除します。

5
Brenton Alker

Makeは、それが何を知っていて何をするのかを教えてくれます。次のようなコマンドを実行する "install"ターゲットがあるとします。

cp <filelist> <destdir>/

あなたの一般的なルールでは、追加:

uninstall :; MAKEFLAGS= ${MAKE} -j1 -spinf $(Word 1,${MAKEFILE_LIST}) install \
              | awk '/^cp /{dest=$NF; for (i=NF; --i>0;) {print dest"/"$i}}' \
              | xargs rm -f

同様のトリックが一般的なmake cleanをすることができます。

0
Mischa

私は "make uninstall"をサポートするいくつかのパッケージを知っていますが、段階的インストールのためにmake install DESTDIR = xxxをサポートするものをもっとたくさん持っています。

これを使用して、ソースから直接インストールする代わりに、インストールするパッケージを作成できます。私はcheckinstallには運がありませんでしたが、 fpm はとてもうまくいきます。

これはmake installを使って以前にインストールしたパッケージを削除するのにも役立ちます。単にあなたが作ったパッケージの上にあなたのビルドしたパッケージを強制的にインストールしてからそれをアンインストールするだけです。

例えば、私は最近protobuf-3.3.0を扱うためにこれを使いました。 RHEL7の場合:

make install DESTDIR=dest
cd dest
fpm -f -s dir -t rpm -n protobuf -v 3.3.0 \
 --vendor "You Not RedHat" \
 --license "Google?" \
 --description "protocol buffers" \
 --rpm-dist el7 \
 -m [email protected] \
 --url "http:/somewhere/where/you/get/the/package/oritssource" \
 --rpm-autoreqprov \
 usr

 Sudo rpm -i -f protobuf-3.3.0-1.el7.x86_64.rpm
 Sudo rpm -e protobuf-3.3.0      

可能であれば、rpmを優先してください。

Debian9について:

make install DESTDIR=dest
cd dest
fpm -f -s dir -t deb -n protobuf -v 3.3.0 \
-C `pwd` \
--prefix / \
--vendor "You Not Debian" \
--license "$(grep Copyright ../../LICENSE)" \
--description "$(cat README.adoc)" \
--deb-upstream-changelog ../../CHANGES.txt \
 --url "http:/somewhere/where/you/get/the/package/oritssource" \
 usr/local/bin \
 usr/local/lib \
 usr/local/include

 Sudo apt install -f *.deb
 Sudo apt-get remove protobuf

あなたができるところではdpkgに適しています。

私はまたこれに答えを投稿しました ここ

0
Bruce Adams