手動 (Sudo apt-getなし)をインストールしたPCL 1.7.2をアンインストールしようとしましたが、apt-get remove
command を使用してそれらを削除しようとしましたそもそもインストールされていないため、これらのファイルをアンインストールできないことを示しました。
cmake
を使用してファイルをインストールした場合、ファイルが正しくインストールされたかどうかを確認するにはどうすればよいですか
cmake
を使用して手動でインストールしたファイルをアンインストールするにはどうすればよいですか?
apt-get
とcmake
を使用してインストールされたファイルはどのように異なりますか?
注-同様の質問ですが、apt-get removeを使用します。 パッケージを完全に削除するにはどうすればよいですか?
make
およびmake uninstall
を実行したビルドディレクトリからSudo make uninstall
(またはSudo make install
を実行する必要がある場合はmake install
)を実行します。 CMakeで構成されたビルドでは、通常、ビルドディレクトリは最上位のソースディレクトリではありません。ただし、それ以外に、ビルドがCMakeで構成されたプログラムまたはライブラリのアンインストールは、ソースコードからビルドした他のプログラムまたはライブラリのアンインストールと同じです。
一部のソフトウェアはmake install
をサポートしていますが、make uninstall
はサポートしていません。この場合、make install
の実行時に実行される手順を調査するか、ソフトウェアのドキュメントを参照してどのファイルをどこに置くかを確認する必要があります。ただし、 PCLdoesは、make uninstall
によるアンインストールをサポートするようです。
cmake
およびmake
を使用したインストールとアンインストールCMakeはビルドを構成するためのシステムです。 構成が完了したら、通常、ビルドシステムを使用してビルドを実行する必要があります。 UbuntuなどのUnixライクなオペレーティングシステムでは、CMakeで構成されたビルドは、ほとんどの場合Makeビルドシステムを使用します。
CMakeを使用するほとんどのソフトウェアでは、通常build
と呼ばれる別のビルドディレクトリを作成し、そのディレクトリからcmake
コマンドを実行する必要があります。ビルドディレクトリには、ビルドの実行に必要なファイルが格納されます。次に、そのディレクトリでmake
を実行します。構築しているソフトウェアの指示に従って配置することを推奨する場合は、build
ディレクトリを作成する必要があります。通常、ソースツリーの最上位ディレクトリのサブディレクトリになります(ソースtarballを展開したとき、またはコードをダウンロードするためにgit
やbzr
などのバージョン管理システムを起動したときに作成される最上位ディレクトリ)。
make
を実行すると、ターゲットのリスト、ターゲットの構築手順、ターゲットの相互依存関係が含まれるメイクファイル(通常はMakefile
と呼ばれる)を見つけて読み取ります。通常、指定する必要がないデフォルトのターゲットがソフトウェアをビルドし、指定する必要があるinstall
ターゲットがインストールします。
多くのメイクファイルには追加のターゲットが含まれています。最も一般的なものは次のとおりです。
check
またはtest
ターゲット。 make check
またはmake test
は、make install
の前に実行できますが、通常は実行することをお勧めします。make install
を実行して作成されたファイルを削除してソフトウェアをアンインストールするuninstall
ターゲット。 (ときどき、make uninstall
には、ファイルをコピーする以外のmake install
のアクションを取り消す他の動作がありますが、通常はファイルを削除するだけです。)すべてのソフトウェアがuninstall
ターゲットを持っているわけではありません。clean
ターゲット。ほとんどすべてのmakefileにこれがあります。distclean
やrealclean
など、CMakeとの関連性が比較的低い他の比較的一般的なターゲットがいくつかあります。ただし、CMakeではなく構成スクリプト(./configure
)を実行してビルドを構成している場合は、通常、make distclean
を実行して構成を消去できます。
CMakeを使用する開発者は、uninstall
ターゲットを生成するコードを記述する必要があります- CMakeはこれを自動的に行いません 。ただし、多くの開発者と同様に、 PCLの開発者はこれを行った およびmake uninstall
は動作するはずです。詳細については、次のセクション(「ステップバイステップの例」)を参照してください。
Makefileがuninstall
ターゲットをサポートしているソフトウェアをアンインストールするには:
make install
(またはSudo make install
)を実行したディレクトリは、make uninstall
(またはSudo make uninstall
)を実行するために戻る必要があるディレクトリです。 CMakeを使用しないソフトウェアの場合、これは通常ソースツリーの最上位ディレクトリです。しかし、doesCMakeを使用するソフトウェアの場合、通常はそうではありません-代わりに、通常は別個のビルドディレクトリです。make install
を実行した後は、make clean
を実行しないこと(またはファイルを手動で削除すること)をお勧めします。make clean
を実行するか、ソフトウェアのソースコードまたはビルドディレクトリを削除した場合、通常は正常にアンインストールできます。 make uninstall
(またはSudo make uninstall
)を実行できるようになるまで、まったく同じバージョンのソフトウェアで、同じオプションで構成およびビルドされた(またはカスタマイズしなかった場合はどれもなし)同じビルド手順を実行するだけです。一部のソフトウェアでは、実際に最初にmake install
を再度実行する必要さえあります。これにより、通常は前のビルドのファイルが上書きされます。その後、通常どおりmake uninstall
(またはSudo make uninstall
)を実行します。uninstall
ターゲットがなく、ソフトウェアをアンインストールする必要がある場合、作成するファイルを調べる必要があります。 make -n install
を実行して、make install
によって実行されるアクションを表示できます。あなたは、notSudo
でmake -n install
を実行する必要があります(最初のmake
がSudo
を必要としなかったと仮定します)。 make
に-n
フラグが渡されると、通常は何も変更しないドライランが実行されるため、昇格した特権を必要とするものを実行する必要はありません。
例を挙げておくと便利です。実際にアンインストールしようとしているソフトウェアをその例として使用することもできます。 PCL 1.7.2doesはcmake
を使用してそのメイクファイルでuninstall
ターゲットを生成するようです 。したがって、make uninstall
をサポートする必要があります。
uninstall_target.cmake.in
を調べることに加えて、64ビットUbuntu 16.04テストシステムで生成されたMakefile
にuninstall
ターゲットが含まれていることを確認しました。ただし、PCLのビルドが完了していないため、PCLをインストールしてからSudo make uninstall
をテストできます。 (私のテストマシンは非常に遅く、PCLは大きくなります。)ビルドが完了した後のいつか、機会があれば追加情報でこれを更新する予定です。
PCL 1.7.2をインストールしたとき、おそらく次のようなことをしたでしょう。
cd /usr/local/src
wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.7.2.tar.gz
tar xf pcl-1.7.2.tar.gz
cd pcl-pcl-1.7.2
mkdir build
cd build
cmake ..
make -j2
Sudo make -j2 install
それは(大まかに) 公式の指示 に基づいていますが、もちろんあなたがやったこととは違うかもしれません。特に、pcl-1.7.2.tar.gz
を/usr/local/src
にダウンロードして解凍しました。他の場所に配置する場合は、/usr/local/src
をどこに配置した場所でも置き換える必要があります。
必要に応じて/usr/local/src
を変更すると、次を実行してソフトウェアをアンインストールできるはずです。
cd /usr/local/src/pcl-pcl-1.7.2/build
Sudo make uninstall
make -j2 install
を実行して複数の操作を同時に実行できる場合でも、-j2
の実行時にmake uninstall
フラグを渡す必要はありません。
インストール手順を見る際に、cmake
とmake
を使用します。アンインストールするには、次のことができるはずです。
terminal
...
cd folder_of_original_source_code
#cmakeを実行したフォルダーSudo make uninstall
#アンインストールするPCLをインストールしたとき、実際には2つのステップを実行しました。
インストール自体(Sudo make -j 2 install
はあなたのケースで推奨)は、PCLの作者が作成したスクリプトです。 このスクリプトがシステムに対して行ったことを伝えることはありませんスクリプトのソースコードを読むことは別として。ここには標準化はありません。スクリプトは、重要なファイルの消去、標準のUbuntuソフトウェアが予期しない方法での構成の変更など、マシンに必要なことは何でもできます。
インストールスクリプトがシステムに何を行ったかわからないため、別のプログラム(APT
など)が実行後に変更を取り消すことはできません。最善策そのような場合は、インストールスクリプトの出力を保存する(後で読み取り、手動で変更を元に戻す)か、システムバックアップを復元します。
deb
パッケージは異なります。パッケージの作成者は、自分のマシンでコンパイル段階を実行し、作成されたファイルを調べて、適切なUbuntuシステム上にある必要があるため、それらをすべて整頓しました。その後、それらをdeb
パッケージである種類のZipファイルに入れました。また、作成者は、インストール時にアンインストールスクリプトを実行する必要がある場合に備えて、インストールおよびアンインストールスクリプトを作成しました。作成者は、必要なすべてのメタデータ、特に、実行するためにこのパッケージが依存する他のパッケージ(共有ライブラリなど)も書きました。
APTは、パッケージをインストールするときに、どのファイルが抽出されたかを追跡するため、後で削除できます。
今、あなたの質問に答えるために:
Q1。 PCLインストールスクリプトの出力を保存しなかった場合(この出力に行われたすべての完全かつ真実の詳細が含まれていると仮定)、またはPCLをインストールする前に実行したバックアップとハードドライブの内容を比較しない限り、ファイルが正しくインストールされたかどうかを知る方法。あなたができる最善のことは、ソフトウェアを実行し、それが正常に実行されるかどうかを確認することです。
Q2。 PCLの作成者がアンインストールスクリプトを作成している可能性があります。おそらくSudo make uninstall
を実行すると何か役に立つことがあります。そのためには、PCLのドキュメントを参照する必要があります。それ以外の場合は、手動でファイルを個別に削除する必要があります。
Q3。インストールされたファイル自体に違いはありません。異なるのは、システムディレクトリにそれらをコピーするために使用されるプログラムです。 apt-getは、deb
ファイルからインストールされたものを追跡し、削除できます。 cmakeは独自の方法で、APTには知られていません。
apt-getは、特別にパッケージ化されたプログラムをインストールします。 apt構成には、パッケージのすべてのコンポーネントがインストールされる場所に関する詳細情報が含まれていました。また、どのファイルがシステムに追加されたかを正確にシステムに保存します。情報には、ファイルの削除手順が含まれます。
Apt-getを使用してファイルを削除する場合、この情報を使用して、コンピューターに追加されたファイルを安全に削除します。
Cmakeは、プログラムをコンパイルおよびインストールするユーティリティです。あなたを含む個人は、「Hello World」と同じくらい簡単なアプリケーションを作成し、Cmakeを使用してプログラムをコンパイルし、配置する場所に配置できます。
apt-get
ユーティリティーは、コンピューターのどこにでも配置することにしたすべてのプログラムを認識しません。作成者がプログラムをapt-get
を介してインストールすることを望んだ場合、プログラムはそのプログラム用に構成し、インストーラーに.deb
パッケージを提供します。
apt-get
を使用してインストールされていないプログラムを削除する手動でインストールされたプログラムを削除するには、作成者による削除の規定に従う必要があります。 cmakeコマンドとmakeコマンドには、build
、install
、install with special conditions
、uninstall
などを指定できる設定ファイルがあります。これらの機能は、プログラムの開発者次第です。
多くのプログラムには、インストールおよびアンインストールの手順(readme.txtファイル)が付属しています。作成者が提供した内容を確認するには、パッケージの内容を確認する必要があります。アンインストール手順が提供されていない場合は、プログラムによってコンピューターに追加された実際のファイルを探して、手動で削除する必要があります。
開発者がuninstall
ターゲットに以下を指定しているかどうかを確認してください
$ cmake uninstall
プログラムからファイルを見つける:
インストールの実行後に作成される可能性のあるinstall_manifest.txt
ファイルを探します。これにより、ファイルの場所が表示されます。
プログラムからファイルを見つける別の方法は、CMakeList.txtファイルを調べることです。 outputを参照するディレクトリを探します。通常、バイナリとライブラリが配置される場所を指定します。
find
を使用して、システムに追加されたファイルを確認することもできます。インストールを実行したときにウィンドウを指定すると、ファイルのリストが表示されます。このコマンドにはいくつかのバリエーションがあります。
これらの手順を使用して、1月18日の午前0時と1月19日の午前0時の間のウィンドウで作成していたファイルを見つけることができます。ゼロを使用する代わりに、特定の時間と分を指定できます。
時間枠の開始のタイムスタンプファイルを作成します。
$ touch -t 201701180000 starttime
時間枠の終わりのタイムスタンプファイルを作成します。
$ touch -t 201701190000 starttime
それは次の形式です:YYYYMMDDHHMM
次に実行します:
$ find ~/ -mount -newer starttime ! -newer endtime > find.out
ここでfind.out
テキストファイルを調べると、その時間枠で作成されたすべてのファイルが表示されます。ホームディレクトリにあるような多くのファイルを自動的に削除できます。これにより、主にバイナリファイルを見ることができます。