Linuxでのプログラムのアンインストール


30

私は過去5年間WindowsとMac OSを使用してきましたが、現在は日常的にLinuxを使用することを検討しています。Ubuntuを仮想マシンにインストールし、(jsプログラマー/ Webデザイナーとして)日常業務でLinuxを使用する方法を理解しようとしています。

申し訳ありませんが、初心者の質問のための通過時々 、私はプログラムをインストールするときにすることを私に起こるmake configmake install、それは簡単に元に戻せない方法で、私のシステムを変更します。Windowsでプログラムをインストールするとき、それをアンインストールできます。書籍で再生する場合、ファイルシステムやレジスターなどにプログラムの痕跡が残っていないことを願っています。MacOSでは、ファイルのようなアプリを削除するだけです。

しかし、Linuxにはapt-getありmakeます。Linuxインストールをきれいに整頓する方法を理解できませんでした。新しいアプリをインストールするとシステムが壊れる可能性があるようです。しかし、Linuxは非常に堅牢であるという評判があるため、アプリのインストールとアンインストールがシステムにどのように影響するかについて、私には理解できないことがあるはずです。誰かがこれに光を当てることができますか?


更新: アプリをインストールすると、そのファイルは本当にどこにでも広がる可能性があります(パッケージマネージャーが問題の一部を処理します)が、それを回避するクールなハックがあります:Docker使用してアプリをインストールし、サンドボックスに保存します頻繁に使用してください。FirefoxのようなGUIアプリを完全にDocker「サンドボックス」で実行することもできます


11
単純なユーザーとして、ソフトウェアをインストールするのapt-getではなく使用することになっていますmakemake installソースからソフトウェアの最新の(おそらく不安定な)バージョンをビルドする必要がある場合に使用します。これはまだパッケージとして利用できません。
ドミトリーグリゴリエフ

@DmitryGrigoryev Using aptは、を使用するよりもシンプルで、優れたtuiを提供しapt-getます。
バクリウ

3
OS Xを使用したとき*.app、アプリケーションのインストールが他の場所(メモリからのLibraryディレクトリなど)を散らかすことが多いため、ファイルの削除が不十分であることがよくありました。また、をmake install使用してUbuntuのソースから手動でビルドする場合は、checkinstall代わりに使用して簡単に削除できるようにします。
スパラフーク

1
./configure ; make ; make install方法を使用しないでください。必要なのは、すばらしいfpmツールを学ぶことだけです。
鹿ハンター

fpmツールとは何ですか?
AlexStack

回答:


28

新しいインストールでシステムが破壊されることはほとんどありません(ソースとバイナリの混合などの奇妙なことをしない限り)。

あなたがUbuntuの中にコンパイル済みのバイナリを使用している場合、あなたはそれらを削除することができますし、バイナリがあるためではない、あなたのシステムを壊す心配する必要はなければならない、それを実行する必要があり、あなたのパッケージマネージャは、プログラムがレビューにあなたのために、そのプログラムに依存しているものを一覧表示するかを示します。

ソースを使用するときは、重要なもの(glibなど)を削除しないように注意する必要があります。ソースからアンインストールしても、警告などはありません。これは、マシンを完全に破壊できることを意味します。

を使用してアンインストールするapt-get場合はapt-get remove package、前述のように使用します。そのパッケージに依存するプログラムもアンインストールされ、それらを確認する機会が与えられます。

アンインストールする場合、通常、プロセスはmake uninstallです。警告はありません(上で言ったように)。

make configシステムは変更されませんが、変更されますmake install

初心者として、apt-getバイナリパッケージに使用するディストリビューションを使用することをお勧めします。それは物事を整理して整理し、あなたが本当にそれを望んでいない限り、システムを壊しません。

うまくいけば、すべてがクリアされます。


3
以下のためにトレースレスあなたは、もちろん使用されますアンインストール--purgeしてオプションをapt-get
ハーゲン・フォン・Eitzen

16

理論的にmake uninstallは、make install追加されたものを削除し、システムが不要なものを蓄積しないようにします。もちろん問題は、すべてのメイクファイルが同じように作成されるわけではないということです。

uninstallルールを省略して、installルールが何をしたかを把握できるようにすることもあります。さらに悪いことに、インストールルールがリンクライブラリを上書きした場合、ダムuninstallルーチンが他のプログラムの依存関係を壊す可能性があります。

ソースインストールの最適なソリューションは、システムのパッケージングマネージャーによってインストールされたパッケージとは異なるプレフィックスを使用することです。Aptはファイルをインストールし、ソースインストールに階層を/usr/使用/usr/local/します。これにより、どのファイルがどのパッケージに属しているかを追跡しやすくなり、アンインストールしてもシステムが壊れることはありません。

./configure --prefix=/usr/local多くの設定スクリプトで機能します。そうでない場合は、Makefileを手動で編集できます。または、ファイルを手動でコピーします。

Aptおよびその他のパッケージマネージャーは、インストールしたファイルとその逆依存関係を追跡し、アンインストール機能を安全に使用できるようにします。


15

私はあなたが使用するあなたをお勧めしますapt-get installLinuxとのいずれかのパッケージをインストールするapt-get remove(パッケージ名)かapt-get purgeだけでなく、アンインストールしたいされていることを主なパッケージを削除しますが、インストール時にインストールされたすべての関連するパッケージや依存関係します(パッケージ名)。

システムをよりクリーンに保つために、apt-get clean https://askubuntu.com/questions/144222/how-do-apt-get-clean-and-apt-get-clean-all-differ#144224(この投稿はそれについて興味深いです)。インストール中にダウンロードされたが、不要になったすべてのファイルが削除されます。

システムにインストールされているが、アンインストールしても削除されなかったすべての依存関係を削除する場合に役立つ別のコマンドはapt-get autoremoveです。

makeを使用してパッケージをインストールし、make installを実行すると、自分でそれをアンインストールする必要があります(ダウンロードしたパッケージに含まれるREADMEファイルが含まれ、その方法を説明します)。また、それに関連するすべての依存関係をアンインストールしようとします。そのため、ディストリビューションのパッケージマネージャーが提供するパッケージをLinuxにインストールすることを常にお勧めします。この方法で行うと、使用しているディストリビューション(Linuxの味)で動作するのに十分なパッケージがテストされていることを確認できますシステムを破壊することはほとんどありません。また、必要に応じてパッケージが更新されることを確認できますが、自分でパッケージをインストールする場合は、これらすべてを行う責任があります。

これが役立つことを願っています:)


11

Linuxでインストールされたアプリケーションを管理する通常の方法は、パッケージマネージャーを使用することです。パッケージマネージャーの選択は、ディストリビューションを区別する主なものの1つです。Ubuntu(Debian(ベース))と同様に、dpkgAPTを使用します。ほとんどの場合、apt-get(コマンドライン)、aptitude(コマンドラインまたはテキストモード)、Synaptic(GUI)など、APTのいずれかのインターフェイスと対話するだけで済みます。

パッケージマネージャーは、どのファイルがどのインストールプログラムに属しているかを追跡します。Windowsと同様に、プログラムはインストールまたはアンインストール手順の一部として任意のコードを実行できますが、通常は正常に動作し、他のプログラムを中断しません。さらに、(アン)インストールコードは、(メインディストリビューションのパッケージの)アップストリーム作成者ではなく、パッケージメンテナーによって記述されます。Windowsとは異なり、インストール、アップグレード、アンインストールへの統一されたインターフェイスがあります:パッケージマネージャー。アンインストーラー(存在する場合)を検索する必要はありませんapt-get remove PACKAGENAME。グラフィカルパッケージマネージャーの「アンインストール」アイコンをクリックするか、を実行してください。

「エキゾチックな」ソフトウェアが必要な場合は、アーカイブを解凍するかソースからコンパイルすることにより、手動でインストールする必要があります。Linuxの世界では、実行可能プログラムの形で提供されるインストーラーはまれです。実行するには、make installいくつかのディレクトリ(上の各プログラムを普及する傾向がある/usr/local/bin/usr/local/man/usr/local/lib、など)。物事を整理するために、stowなどの「貧乏人のパッケージマネージャー」を使用することをお勧めします。stowでは、各パッケージは独自のディレクトリにインストールされ、stowユーティリティはシンボリックリンクの作成を行い、パッケージによってインストールされたコマンドがコマンド検索パスなどにあるようにします。詳細については、プログラムの追跡を参照してください。


この「エキゾチックなソフトウェア」は誰でも作成できますか?この「エキゾチックなソフトウェア」がどのようにディストリビューションで公式に利用可能になりますか?誰かがソースコードを行ごとにレビューしていますか?たとえば、UbuntuはAPT-GETコマンドにソフトウェアを含め、別のソフトウェアを無視することをどのように決定しますか?
AlexStack

1
@AlexStackほとんどの配布はボランティアによって行われます。UbuntuはCanonicalが後援しており、少数の人々に支払いをしていますが、それでもパッケージのメンテナンスの大部分はボランティアによって行われています。そのため、最も正確な答えは、Ubuntuにはボランティアが含めることにしたソフトウェアはすべて含まれているということです。より正確には、Ubuntuのようで、ほとんどのソフトウェアは、Debianのから来てDebian開発者が価値が働いていたパッケージを決定しなければならなかった、とソフトウェアは、に準拠しているポリシー(許容ライセンス、あまりにもバグがありません)。
ジル「SO-悪であるのをやめる」

@AlexStackでは、特定のソフトウェアがUbuntuリポジトリで利用可能であっても(つまり、デフォルトのインストールなどによって)特定のソフトウェアを行ごとにレビューしたという保証はありませんapt-get。しかし、彼らはリポジトリに適度に人気のあるプログラム、つまり彼らが基本的に彼らがすることになっていることを確信するのに十分なユーザーを持っているものだけを置きます。
デビッドZ


8

可能な限り、パッケージマネージャー(apt-get、aptitude、synaptic、またはaptdcon、software-center、mintinstall、..)を使用するようにしてください。makeタスクを使用してインストールすることは非常に未加工であり、uninstall対応するものがあることは保証されず、システムの他の部分とうまく動作することは保証されません実行可能コード、マルウェアの可能性)。

必要なソフトウェアのパッケージバージョンが見つからない場合は、checkinstallcheckinstall make install)役立つことがあります。


3

私は専門家ではなく、ソースからソフトウェアをインストールすることについてあまり知りませんが、を使用するとapt-get、インストール済みのソフトウェアをで削除できますapt-get remove package-name。すべての構成ファイルも削除するには、を使用しますapt-get purge package-name。Linuxインストールを整理整頓する最も安全な方法は、公式リポジトリのパッケージのみを使用することです。公式リポジトリにないパッケージが必要な場合、PPAで( Ubuntuを使用しているので)しばしば見つかることがあります。


apt-get使用されたOPには使用されないconfiguremake install
roaima

3

他の答えが言うように、最近では、ディストリビューションの選択したパッケージマネージャーを使用してソフトウェアの大部分をインストールするのが一般的です。これは非常に便利なので、Windowsに戻ったときに見逃してしまうでしょう。ある意味では、さまざまな「マーケット」と「ストア」は商用OSに対してもその方向に進んでいます。

そうは言っても、最初にLinuxについて学び始めたとき、ソフトウェアが通常インストールされる方法に戸惑っていたことを覚えています。Windowsでは、すべてのファイルはの単一のディレクトリに格納されますがc:\Programs、従来の「Unixの方法」は「標準の場所」にファイルを分散させることです(詳細は標準化されていません。 )(/usr/local/bin実行可能ファイル、/usr/local/docドキュメントなど)。

ある意味では、Windowsは実行可能ファイルがどこにあるかを「知りません」。彼らは「どこか下c:\Program Files」にいることを知っていますが、それ以上ではありません。それらのすべてのディレクトリをスキャンしてそれらを見つけることは、非常に高価です。そのため、実行可能ファイルへのリンクは、既知の場所([スタート]メニュー)に明示的に配置され、それを使用して起動します。

Unix / Linuxでは、シェル、およびその他のほとんどのプログラムは、既知の場所のセットで実行可能ファイルまたはその他のリソースを自動的に検索します。そのため、適切なディレクトリにファイルをコピーするだけで、ユーザーがファイルについて知るためにどこにでも「登録」する必要なく、自動的に「表示」されます。

どちらのメカニズムにも長所と短所がありますが、Unixのアプローチは一般に柔軟性が高いことがわかります。

説明したほど明確ではない多くの例外と詳細がありますが、この種の紹介は、初心者が少なくともその背後にある基本的なロジックを理解するのに役立つと思います。


ありがとう@unclezeif。「ファイルが至る所に散らばっている」という問題は、私には理解できないので、本当に私を悩ませています。あなたは、Unixのアプローチは一般的に柔軟性が高いと言いました。詳しく説明してもらえますか?
AlexStack

たとえば、ドキュメントはすべて1か所にあり、アイコンはすべて1か所にあります。より柔軟であるということは、すべてのパスベースで、次のようなことができることを意味します:環境変数が変更される新しいシェルを作成して、特定のディレクトリ内の実行可能ファイルのみを表示し、選択を制限(または拡張)します。高度なカスタマイズを実現するためにファイルと環境変数のみを使用するため、すべて非常に「シンプル」です。
アンクルゼイフ

別の例:原則として、ホームディレクトリにプログラムをインストールできます。たとえば、/ home / foo / binで、共有システムに触れることなく、パス環境に/ home / foo / binを追加するだけです。
アンクルゼイフ

3

最善のアドバイスは、このフォーラムの投稿だけです。オプションは次のとおりです(実際、2と3はほぼ同じですが、効果の点で同じです)。

  1. パッケージマネージャーとリポジトリを使用します。つまり、更新プログラムを入手したり、公式リリースや署名付きリリースなどを入手したりできます。
  2. リポジトリのパッケージを使用できない、または使用しない場合は、ソフトウェアのパッケージをビルドし、パッケージマネージャーを使用してインストールします。Debianベースのシステムでこれを行うための詳細な手順は、上記のリンクにあります。最初は怖いように見えますが、実は非常に簡単です。特にDebianの場合、あなたのためにすべてのハードワークを行うためのスクリプトがたくさんあります。
  3. その方法が機能しない場合はcheckinstall、他の人が推奨している方法を使用してください。インストールするための非常に簡単なドロップイン置換です:

    $ ./configure
    $ make
    $ sudo checkinstall
    

    これにより、通常どおりソフトウェアがビルドされ、実行されます。 make install内容を追跡し、それらを正確に実行するパッケージをビルドする限定された環境でされます。次に、パッケージマネージャーでそのパッケージをインストールします。削除は、(2)のように他のパッケージを削除するのと同じです。

  4. パッケージマネージャーを使用できない場合、または使用しない場合は、を使用しますmake install。そして、ソフトウェアメンテナーがアンインストールルーチンを維持することを願っています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.