apt-getインストールを安全に中止する方法は?


44

私は、apt-get installそのprocessing triggers for python-support段階で絶望的に押し込まれているように見えるプロセスを持っています。

私はkillそれを好む傾向がkillありapt-get installますが、過去には、単にプロセスを行うことで多くの悲しみが生じました。(IIRC各種ロックファイルなどが残されています。)

このプロセスを停止するより安全な方法はありますか?

回答:


44

強制終了プロセス

一般的に、プロセスを強制終了するには、通常の強制終了(SIGTERM)を使用するよりも安全なプロセスを強制終了する方法はありません。対話型プロセスの場合、通常はCtrl+ を押して送信されるSIGINTシグナルを送信することで、より安全に停止できますC。このシグナルは、プロセス自体によってトラップされ、リッスンできます。通常、正常に停止します。エリアに感謝

DPKGデータベース

パッケージ管理に関しては、ある種の特殊なケースです。APTコマンドが水中で使用するDPKGデータベースは、操作が終了していないかどうかを常に検出できます。すべてのパッケージには、現在の状態と同様にマークされた実際の状態があります。たとえば、アンパック、構成などです。APTフロントエンドを強制終了すると、データベースは壊れていますが、既知の状態になります。ロックファイルは、すべてがクリーンな状態に戻った場合にのみ解放されます。新しい操作が可能になるまで、これを修正する必要があります。

修正する方法は、プロセスを起動して、すべてのパッケージを構成済みの状態にするだけです。実際には、apt-get操作を中断した場合は、後で使用して終了することができます

sudo dpkg --configure -a

壊れた状態からすべて構成された状態に回復する方法を知っており、その意味では、中断された場所から続行します。ロックファイルは、それが完了するまでそこに残されます。これは、理由のためです。DPKGデータベースがクリーンでない状態で新しい操作を行わないようにするためです。

SIGKILLについて(9)

SIGKILL(10進数表現9)の送信は非常に危険です。このシグナルはプロセスによってキャッチされませんが、プロセスが好むと好まざるとにかかわらず、プロセス全体がオペレーティングシステム(カーネル)によってクリーンアップされます。ファイルシステム上のファイルの状態は、破損した状態のままになる可能性があります。他のより優雅な信号を聞いていない限り、これらの信号を送信しないでください。


2
アプリケーションがそれを終了する方法を提供する場合、それは通常SIGTERMよりも安全です。たとえば、ユーザーが失われるべきではないコンテンツを作成する可能性が高いほとんどの(すべてではないにしても)テキストエディター、ワードプロセッサ、グラフィックプログラム、Webブラウザー、およびその他のテキストベースまたはグラフィカルアプリは、自動保存しません SIGTERMを受け取ったときに終了する。また、SIGINTはSIGTERMよりも安全である場合があることに注意してください(ただし、Ctrl + Cと同じ結果が明示的に必要でない限り、通常は送信しないでください)。
エリアケイガン

16

apt-getでエラーが発生した場合、以下を実行します(rootとして、つまりsudoすべてのコマンドの前に):

  1. apt-getという名前のプロセスを強制終了します。

    killall -9 apt-get
  2. dpkgを再構成します。

    dpkg --configure -a
  3. apt-getを更新します。

    apt-get update
  4. 不適切にインストールされたパッケージを含む更新パッケージ:

    apt-getアップグレード

これはどこかで学びましたが、残念ながら正確な場所を思い出せません。


6
特に理由がない限り、シグナル9(SIGKILL)を送信しないでください。更新された回答をご覧ください。
gertvdijk

3
sudo dpkg -r <package name>

私の場合、Ubuntu 12.04のJava 8で問題が発生したため、...

sudo dpkg -r oracle-java8-installer

1

Linuxおよび他のUnixタイプのシステムはコマンドラインからは非常に強力ですが、プロセスが開始されると非常に寛容です。プロセスにkillシグナルを送信すると、実行中のプロセスは確実に強制終了されますが、データベースが不安定な状態のままになることに注意してください。最後のレコードが正しく閉じられない可能性があるため、データベースを修復する必要があります。aptだけでなく、任意のアプリケーションで。

常に通常の方法でアプリケーションを終了し、実行中のアプリケーションのみを終了するようにしてください。


0

ここでは、私はそれを行う方法で、Ctrl+ Cしかし、それは長いapt-getのフェーズをダウンロードしたり、そのキャッシュを更新中であると同様に安全であることを気に。それ以外は、より安全な方法を考えることはできません。なんらかの方法でアンインストールまたはダウングレードして、変更を完了して元に戻すだけです。ダウンロードしたファイルは次の方法でクリーニングできますsudo apt-get autoclean

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.