実行中
./configure --prefix=/mingw
以前に実行したライブラリ用のMinGW/MSYSシステム
'./configure --prefix=/mingw && make && make install'
私はこのメッセージに遭遇しました:
警告:VampプラグインSDKのバージョンはすでにインストールされています。あなたが最初に古いものを削除せずに新しいバージョンをインストールするならば、心配と悲しみを期待してください。 (続き)
これは私が心配していました。 'make install'の反対は何ですか?つまり、Linuxでライブラリをアンインストールする方法は? 「きれいにする」ことで仕事はできますか、それとも他のステップがありますか。
make clean
はあなたのソース/ビルドツリーから中間ファイルや出力ファイルを削除します。しかし、それはソース/ビルドツリーにのみ影響します。それはファイルシステムの他の部分には触れず、以前にインストールされたソフトウェアを削除することはありません。
運がよければ、make uninstall
を実行してもうまくいきます。しかし、それを提供するのは図書館の作者次第です。何人かの作者はuninstall
ターゲットを提供しますが、他は提供しません。
運が悪くない場合は、手動でアンインストールする必要があります。 make -n install
を実行すると、ソフトウェアが自分自身をインストールするのに必要な手順を示しますが、実際には何もしないので便利です。その後、手動でこれらの手順を逆にすることができます。
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
を実行することができます。
あなたがmake install
でインストールされたすべてのファイルをリストするmanifest
ファイルを持っているなら、あなたは私が別の答えから持っているこのコマンドを実行することができます:
cat install_manifest.txt | xargs echo rm | sh
Sudo make install
がある場合は、アンインストールにSudoを追加する必要があります。
cat install_manifest.txt | xargs echo Sudo rm | sh
問題となっているプログラムのmakefile/configure script/autofooマジックがどれほどうまくあなたの問題を解決する可能性があります:
make uninstall
問題は、インストールしたバージョンのソースツリーで、インストールに使用したものとまったく同じ設定でこれを実行する必要があることです。
ステップ1:このステップに従う必要があるのは ビルドディレクトリを削除または変更した場合 何らかの方法で 正確な を使用してダウンロードおよびmake/make installするのと同じ手順です。前。
ステップ2:make uninstallを試してください。
cd $SOURCE_DIR
Sudo make uninstall
が成功すれば完了です。もしあなたが妄想的なら、make uninstall
がファイルを見逃さないようにするために "方法#3"のステップを試すこともできます。
プロセスの概要
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
ソースディレクトリにファイル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引数を引用することや削除されたファイルのバックアップを保存することなど)。
make clean
は一般的に、ソースコードを含むディレクトリ内のビルドされたファイルをきれいにするだけで、インストールされたソフトウェアに触れることはめったにありません。
通常、Makefileにはアンインストールの対象は含まれていません。通常は、自分がインストールされたディレクトリからファイルを削除することによって、自分で行う必要があります。たとえば、プログラムを構築し、それを(make install
を使用して)/usr/local
にインストールした場合は、/usr/local/bin
、/usr/local/libexec
、/usr/local/share/man
などを調べて、不要なファイルを削除します。 Makefileにuninstall
ターゲットが含まれることもありますが、必ずしもそうとは限りません。
もちろん、通常Linuxシステムではソフトウェアを自動的にアンインストールすることができるパッケージマネージャを使ってソフトウェアをインストールします。
"stow"ユーティリティは、この問題を解決するために設計されました。 http://www.gnu.org/software/stow/
残念ながら標準はありません、これはソースからインストールすることの危険の1つです。一部のMakefileには「アンインストール」が含まれるため、
make uninstall
ソースディレクトリからそうでなければ、それはmake install
がしたことを手動で元に戻すことの問題かもしれません。
make clean
は通常単にソースディレクトリをきれいにするだけです - 生成された/コンパイルされたファイルなどを削除します。
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
をすることができます。
私は "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に適しています。
私はまたこれに答えを投稿しました ここ