GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu Linuxで「E:ロックを取得できませんでした/ var / lib / dpkg/lock」エラーを修正する方法

最近、次のエラーが発生したときに、Ubuntuでaptコマンドを使用してアプリケーションをインストールしようとしました:

E:ロックを取得できませんでした/ var / lib / dpkg / lock –オープン(11:リソースが一時的に利用できません)
E:管理ディレクトリ(/ var / lib / dpkg /)をロックできません。別のプロセスがそれを使用していますか?

実際、同様のエラーが表示される場合があります:

E:ロックを取得できませんでした/ var / lib / apt / lists / lock –オープン(11:リソースが一時的に利用できません)
E:ディレクトリ/ var / lib / apt /lists/をロックできません
E:ロックを取得できませんでした/ var / lib / dpkg / lock –オープン(11:リソースが一時的に利用できません)
E:管理ディレクトリ(/ var / lib / dpkg /)をロックできません。別のプロセスがそれを使用していますか?

場合によっては、SoftwareCenterの使用中に表示されることがあります。

これらのエラーは、別の一般的なUbuntuエラーであるディレクトリ/ var / cache / apt / archives /をロックできませんと非常によく似ています。興味深いのは、修正も同様であるということです。

「管理ディレクトリ(/ var / lib / dpkg /)をロックできません」エラーの修正

他のプログラムがUbuntuを更新しようとしているため、このエラーが表示されます。コマンドまたはアプリケーションがシステムを更新しているとき、または新しいソフトウェアをインストールしているとき、dpkgファイル(Debianパッケージマネージャー)をロックします。

このロックは、2つのプロセスが同時にコンテンツを変更しないようにするために行われます。これは、不当な状況やシステムの破損につながる可能性があるためです。

「管理ディレクトリをロックできない」というこの問題を修正するために実行できる手順を見てみましょう。

方法0:

最初にすべきことは、他のプログラムがシステムアップデートを実行しているか、プログラムをインストールしているかどうかを確認することです。

コマンドラインを使用している場合は、Software Center、Software Updater、Synapticパッケージマネージャー、Gdebiなどのアプリケーションが更新/インストールを実行しているかどうかを確認してください。その場合は、プログラムが実行中のプロセスを終了するまでお待ちください。

そのようなアプリケーションが実行されていない場合は、開いているすべてのターミナルウィンドウをチェックして、アップデートを実行しているか、プログラムをインストールしているかを確認してください。はいの場合は、終了するのを待ちます。

上記のいずれも発生しない場合は、aptコマンド(ソフトウェアを処理するためのパッケージマネージャー)を実行している他のプロセスを確認してください。次のコマンドを使用します:

ps aux | grep -i apt

私にとって、それはこの出力を示しました:

[email protected]:~$ ps aux | grep -i apt
root      1464  0.0  0.0   4624   772 ?        Ss   19:08   0:00 /bin/sh /usr/lib/apt/apt.systemd.daily update
root      1484  0.0  0.0   4624  1676 ?        S    19:08   0:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update
_apt      2836  0.8  0.1  96912  9432 ?        S    19:09   0:03 /usr/lib/apt/methods/http
abhishek  6172  0.0  0.0  21532  1152 pts/1    S+   19:16   0:00 grep --color=auto -i apt

aptがapt.systemd.daily updateなどのプログラムで使用されていることがわかった場合 、あなたは幸運です、私の愛する読者。

これはバックグラウンドで実行されるデーモンであり、システムの起動時にシステムの更新を自動的にチェックします。

Ubuntu 18.04以降のバージョンでは、重要なセキュリティ更新プログラムを独自にダウンロードしてインストールしようとする場合もあります。少なくともこれは、Ubuntuデスクトップのソフトウェアとアップデートツールのデフォルト設定に表示されるものです。

Ubuntuサーバーを使用している場合は、ファイルの内容を確認することで、無人アップグレードが有効になっているかどうかを確認できます /etc/apt/apt.conf.d/20auto-upgrades

したがって、apt.systemd.dailyがaptプロセスを使用している場合は、数分待つだけです。自動更新が終了すると、通常どおりソフトウェアをインストールできるようになります。

恒久的な解決策として、自動更新と無人アップグレードのチェックを完全に無効にすることができますが、セキュリティ上の理由からそのことはお勧めしません。

さて、それは単純なシナリオであり、簡単に処理できました。しかし、それが常に当てはまるとは限りません。他のプログラムがaptを使用している場合は、別の方法で処理する必要があります。

方法1:

Linuxコマンドラインを使用して、実行中のプロセスを見つけて強制終了します。これを行うには、以下のコマンドを使用します:

ps aux | grep -i apt

これにより、aptまたはapt-getを実行しているプロセスのIDが表示されます。以下の例では、プロセスIDは7343です。「grep–color=auto」を含む最後の行は無視してかまいません。

プロセスIDを使用して、SIGTERMシグナルを送信することでプロセスIDを終了できます。 を前のコマンドの出力で取得した番号に置き換えます。

sudo kill <process_id>

「psaux|」を実行して、プロセスが強制終了されたかどうかを確認します。 grep -i apt’コマンド。それがまだ実行されている場合は、SIGKILLシグナルで強制的に強制終了します:

sudo kill -9 <process_id>

もう1つの簡単な方法は、killallコマンドを使用することです。これにより、実行中のプログラムのすべてのインスタンスが強制終了されます:

sudo killall apt apt-get

方法2

上記の方法で問題が解決する場合がほとんどです。しかし、私の場合は少し異なっていました。システムを更新していて、誤ってターミナルを閉じてしまいました。そのため、aptを実行しているプロセスはありませんでしたが、それでもエラーが表示されました。

上記の2つの方法を試すか、最初にシステムを再起動することをお勧めします。それでもうまくいかない場合は、ロックファイルを削除するこのオプションを選択するのはあなただけです。

この場合、根本的な原因はロックファイルです。前述のように、ロックファイルは、2つ以上のプロセスが同じデータを使用するのを防ぐために使用されます。 aptまたはapt-getコマンドを実行すると、いくつかの場所にロックファイルが作成されます。前のaptコマンドが適切に終了しなかった場合、ロックファイルは削除されないため、apt-getまたはaptコマンドの新しいインスタンスが阻止されます。

この問題を解決するには、ロックファイルを削除するだけです。ただし、その前に、ロックファイルを使用しているプロセスをすべて停止することをお勧めします。

lsofコマンドを使用して、ロックファイルを保持しているプロセスのプロセスIDを取得します。エラーをチェックして、エラーが発生しているロックファイルを確認し、これらのロックファイルを保持しているプロセスのIDを取得します。

これらのコマンドを1つずつ実行します。

sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock

コマンドが何も返さないか、1つの数値だけを返す可能性があります。少なくとも1つの数値が返される場合は、その数値を使用して、次のようにプロセスを強制終了します(を上記のコマンドから取得した数値に置き換えます):

sudo kill -9 <process_id>

以下のコマンドを使用して、ロックファイルを安全に削除できるようになりました。

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

その後、パッケージを再構成します。

sudo dpkg --configure -a

これで、sudo apt updateコマンドを実行すると、すべてが正常になります。

トラブルシューティング1:「dpkgフロントエンドロックを取得できません」

次のようなエラーが表示された場合:

[email protected]:~$ sudo apt install grub-customizer 
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

前のセクションで説明したように、lsofコマンドを使用して、どのプロセスがロックフロントエンドを保持しているかを確認する必要があります。

sudo lsof /var/lib/dpkg/lock-frontend

これは私に見せたものです:

[email protected]:~$ sudo lsof /var/lib/dpkg/lock-frontend
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
unattende 2823 root    5uW  REG    8,2        0 145221 /var/lib/dpkg/lock-frontend

無人」が表示された場合 ‘COMMAND列、これは無人のセキュリティアップグレードが実行されていることを意味します。 プロセスが完了するのを待つ必要があります 。基本的に、これは私が方法0で説明したことですが、おそらくそれをスキップしました。

コマンドが別のものである場合は、プロセスを強制終了してから、ロックファイルを削除できます。 PID列の下にプロセスIDが表示されます。このPIDを使用して、プロセスを強制終了します。その後、ロックファイルを削除し、updateコマンドを実行して、修正されているかどうかを確認します。

sudo kill -9 PID
sudo rm /var/lib/dpkg/lock-frontend
sudo apt update

そのlsofとは何ですか:警告はstat()fuse.gvfsd-fuseファイルシステムを使用できませんか?

注:「lsof:warning ca n’t stat()fuse.gvfsd-fuse file system / run / user / 1000 / gvfs
前述のlsofコマンドを実行した後、出力情報が不完全である可能性があります。慌てる必要はありません。

それはエラーではありません。 lsofがマウントされたファイルシステムも調べようとしているだけで、警告はそれらのマウントされたシステムに関するものです。

ファイルはメインファイルシステムのプロセスによってロックされているため、警告が表示されて出力がない場合は、それらのロックファイルを使用しているプロセスがないことを意味するだけです。

トラブルシューティング2:「dpkg:エラー:dpkgフロントエンドが別のプロセスによってロックされています」

方法2のステップの実行中に「dpkgフロントエンドが別のプロセスによってロックされています」というエラーが表示された場合は、さらに1つのステップを実行する必要があります。

まず、ロックファイルを保持しているプロセスのIDを見つけます。

sudo lsof /var/lib/dpkg/lock-frontend

上記のコマンドは、ロックファイルを使用するプロセスの詳細を提供します。プロセスIDを使用して、このプログラムを強制終了します:

sudo kill -9 PID

これで、ロックを解除してdpkgを再構成できます:

sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a

それはあなたのために働きましたか?どの方法で修正されましたか?

この小さなヒントが、「ロックを取得できませんでした/ var / lib / dpkg/lock」エラーの修正に役立つことを願っています。はいの場合は、コメントでどの方法が効果的かをお知らせください。

それでも問題が発生する場合は、お知らせください。お手伝いさせていただきます。

他の提案もコメントで歓迎します。



Ubuntu
  1. 修正E:ロックを取得できませんでした/ var / cache / apt / archives /lock[クイックヒント]

  2. Aptロックを保持しているプロセスを強制終了する方法は?

  3. 「Lockfile / var / lib / dpkg / lock-frontend could not open」というエラーを修正する方法

  1. Ubuntuでの「dpkg:エラー:ファイル‘/ var / lib / dpkg /updates/0014‘の解析」エラーを修正

  2. Ubuntu E:ロック/ var / lib / dpkg / lockエラーを取得できませんでした-今すぐ修正しますか?

  3. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  1. サブプロセスを修正する方法/usr/ bin / dpkgがUbuntuでエラーコード(1)を返しました

  2. 修正方法Ubuntuでロック/var/ lib / dpkg/lockエラーを取得できませんでした

  3. 「ロックを取得できませんでした / var / lib / dpkg / lock – open (11 リソースが一時的に利用できません)」エラーを修正する方法