web-dev-qa-db-ja.com

別のプロセスが管理ディレクトリ(/ var / lib / dpkg /)をロックできませんか?

apt-getを使用しようとすると、このエラーが表示されます。

E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?  

どうすれば修正できますか?

1017

これは最後の手段として使用する必要があります。これを不注意に使用すると、システムが破損する可能性があります。これを行う前に otheranswersfirst を試してください。

次のコマンドでロックファイルを削除できます。

Sudo rm /var/lib/apt/lists/lock

キャッシュディレクトリ内のロックファイルを削除する必要がある場合もあります。

Sudo rm /var/cache/apt/archives/lock
Sudo rm /var/lib/dpkg/lock

その後、Synapticを再度開いてみてください。

866
zurdo

ロックを削除することをお勧めする回答がほぼすべて表示されます。最初の手段としてそれを行うことはお勧めしません。多分他に選択肢がない場合。ロックは、aptプロセスの実行中に配置され、プロセスが完了すると解除されます。明らかなプロセスが実行されていないロックが存在する場合、何らかの理由でプロセスがスタックしている可能性があります。

試してみると

ps aux | grep [a]pt

または

pgrep -a apt

少なくともWord aptを含むプロセスをキャッチします。 apt-getプロセスまたはaptitudeプロセスがスタックしているように見える場合は、試してみてください。

Sudo kill processnumber

それがうまくいかない場合は試してください

Sudo kill -9 processnumber

これによりプロセスが強制終了され、ロックが解除される場合があります。 aptまたはaptitudeプロセスを強制終了しても、実際にパッケージのインストール中でなければ、無害です。いずれにせよ、プロセスがスタックした場合、おそらくそれを殺す以外に選択肢はありません。

dpkgプロセスが存在する場合、それを直接強制終了することはお勧めできません。なぜなら、dpkgがアクティブな場合、おそらくパッケージデータベースを操作しているためです。つまり破損しています。

apt-getまたはaptitudeプロセスを強制終了することは、一般的にはるかに安全です。

657
Faheem Mitha

/var/lib/dpkg/lockファイルを削除して、パッケージの再構成を強制します。

Sudo rm /var/lib/dpkg/lock
Sudo dpkg --configure -a

これで動作するはずです。

219
Bruno Pereira

Aptコマンドの実行時にSudoの使用を忘れると、このメッセージが表示されます。

それ以外の場合、これは他の何かがソフトウェアをインストールまたは削除しており、アクションの実行中にaptデータベースをロックしたことを示しています。これを行うことができるプログラムは次のとおりです。

  • ソフトウェアセンター
  • 更新マネージャー
  • Aptリンクインストーラー(これはSCを通過すると思う)
  • Apt-getまたはaptitudeコマンドラインユーティリティ。
  • Synaptic Package Manager

重要:システムをクラッシュさせる可能性があるため、最後の手段としてのみ以下を試してください。 Faheem's answerで説明されているように、最初にaptまたはaptitudeの実行中のインスタンスを強制終了します。

ファイルを削除することでロックを強制的にオフにできますが、ロックを安全に保持しているプログラムを最初に閉じない限り推奨されません。インストールを中断します(不良)。 Joãoが提供するコマンドは、ロックを保持しているプログラムを閉じてからロックを削除する必要がありますが、インストールの中断からは保護されません。

Sudo fuser -cuk /var/lib/dpkg/lock; Sudo rm -f /var/lib/dpkg/lock   

また、同じコマンドをaptキャッシュロックに使用できます。

Sudo fuser -cuk /var/cache/apt/archives/lock; Sudo rm -f /var/cache/apt/archives/lock

最もヒットする可能性のある方法は次のとおりです。

  • ubuntuを起動する
  • 端末を起動する
  • タイプSudo apt-get install whatever

また、コマンドラインaptupdate-managerと自動的にポーリングします。

つまり、数分後にもう一度試して、それを修正する必要がある場合

96
poolie

1つのプログラムのみがロックを保持できます。 aptitude、synaptic、またはadeptを実行していないことを確認してください。プログラムを閉じて、もう一度実行します。正常に動作するはずです。シナプスを開くか、別のターミナルウィンドウを開いてapt-getを実行するか、アップデートマネージャーを実行してください。それらは近くで実行されており、再試行します。

ターミナルでこのコマンドを試して、実行中のものを見つけます

ps -e | grep -e apt -e adept | grep -v grep

注:
何も印刷されない場合は、端末に次のように入力してロックを解除します

Sudo rm /var/lib/dpkg/lock    
Sudo rm /var/cache/apt/archives/lock

これで、任意のパッケージをインストールできます。

52
karthick87

(ロックファイルを削除することで発生する可能性がある)バックグラウンドで実行されている可能性のあるインストールを中断せずに機能させるための最良の方法は、aptを使用してサービスを停止することです。

エラー:

# Sudo apt-get upgrade
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?`

解決:

Sudo systemctl stop apt-daily.timer

システムをアップグレードした後、システムをロックするバグがアップグレードで修正される可能性があるため、再度有効にすることをお勧めします。

Sudo systemctl start apt-daily.timer

アップグレード後にこのエラーが修正されることを確認していません。確認が完了したら、新しいコメントを追加します

46
Jairelee

まず、lsofを使用して、どのプロセスがロックファイルを作成したかを確認する必要があります。

Sudo lsof /var/lib/dpkg/lock

または/var/lib/apt/lists/lockに問題がある別の状況では:

Sudo lsof /var/lib/apt/lists/lock

出力は次のようになります。

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
apt-get   12127 root   4uW  REG  252,1        0    86   /var/lib/apt/lists/lock

次に、コンマが何をしているかを確認する必要があります。pspgrepなどを使用して確認できます。コマンドはapt-getですので、実行します:

pgrep apt-get -a

-aスイッチは、完全なコマンドをリストします。私の場合は次のとおりです。

 pgrep -a apt-get
 12127 apt-get update

updateサブコマンドを実行していることがわかります。次のようなものも実行できます。

ps -f 12127

生成するもの:

UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     12127 12126  0 09:39 pts/0    S+     0:00 apt-get update

この場合、リソースが解放されるまで数分待機します。2、3分後に問題がまだ存在する場合、またはコマンドがシステムにとって気に入らない、またはシステムにとって有害で​​はない場合(このapt-get update )プロセスにSIGTERMを送信します。

Sudo kill -15 12127

作業を行う必要があります。送信しなかった場合は、SIGINTを送信します(これは、 CTRL+C):

Sudo kill -2 12127

うまくいかなかった場合は、SIGHUPkill -1)を送信する必要があります。最後に何も機能しない場合は、単にプロセスを強制終了します。

Sudo kill -9 12127

または

Sudo pkill -9 apt-get

次に、使用中のリソースを削除します。

Sudo rm /var/lib/apt/lists/lock
32
Ravexina

このエラーmayは、通常、ログイン直後にバックグラウンドでパッケージのリストを自動的に更新しようとするUpdate Managerが原因で、ディレクトリがロックされます。

この場合、数秒待って(または、最後の更新がかなり前の場合はそれ以上)、完了するまで待つか、Update Managerを起動してステータスを確認します。

21
Batsu

何かをすぐに削除しないでください。システムが完全に破損する可能性があります。むしろ、現在インストールまたはアンインストールしているプログラムがタスクを完了し、その後アクセスできるようになるまで待ちます。現在インストールもアンインストールも行われていないと思われる場合は、Sudo rebootコマンドを使用してシステムを再起動するだけです。

16
Wessi

これは、インストールプロセスでロックが発生するため、アップデートチェックまたはインストールのために「アップデートマネージャ」が並行して実行されている場合に発生します。 「Update Manager」を実行せずに同じエラーに直面している場合は、/var/lib/dgkg/lockからそれを削除する必要があります。これは間違いなく手動で実行できません

Sudo fuser -cuk /var/lib/dpkg/lock
Sudo rm -f /var/lib/dpkg/lock

正常に動作します。から取得: https://askubuntu.com/a/15469/68707

16
Nabeel Ahmed

セキュリティ更新プログラムが自動インストールに設定されている場合、これは頻繁に発生します。私は文字通り30秒待ち、それで問題が解決します。他の誰かがこの問題に遭遇した場合に備えて、これを投げ捨ててください。

10
Wh33t

私の場合、ロックが解除されるまで数分待たなければなりませんでした(aptがロックを保持しているように見えます)。これはすべて、システムの起動直後に発生しました。

5
Pavel Vlasov

この問題は何度もありました。私にとって、それはほとんどの場合、apt-getまたは何らかの理由でハングするというGUIによって引き起こされました。私はそれを殺さなければなりませんでした。

他の答えは、ロックファイルを削除するような抜本的なことをする前に、現在アップデートが実行されていないことを確認することについて非常に良い点をもたらします。ただし、そうではないと確信したら、通常は次のように動作します。このような質問に対する多くの答えを読んで得た。

これの大部分またはすべてが他の回答で示されていますが、これは修正をいくつかのコマンドに絞り込みます。

Sudo fuser -vki /var/lib/dpkg/lock
Sudo fuser -vki /var/cache/apt/archives/lock
Sudo fuser -vki /var/cache/debconf/config.dat
Sudo dpkg --configure -a

何らかの更新プログラムがクラッシュまたは終了した後、他の方法で終了せずにパッケージシステムのロックを解除するために使用します。これらのコマンドは、提示された順序で実行する必要があります。

4
Joe

Sudo rm -f /var/lib/apt/lists/lockだけをやり直してください。

apt-fastは、適切にロックを解除しない場合があります。これは、apt-getまたはdpkgも中止すると時々発生します。

4
ish

私の場合、apt-getが古いカーネルを削除している間にXがクラッシュしました。システムモニターを使用して、システムモニターがまだ実行中でスタックしていないことを確認しました。プロセスが終了すると、すべてがうまくいきました。

3
wjandrea

上記のどこにもこの回答は表示されませんが、Ubuntu 16.04では、この問題も発生しました。原因は、コンピューターの時間がfutureに設定されていたことです。 (これは、Windows + Ubuntuのデュアルブートシステムを使用しているため、現地時間とUTC時間を台無しにしてしまったためです。)

奇妙なことの1つは、ロックされたファイルの日付と時刻が、プログラムを実行した正確な日付と時刻だったことです。

その後、以前の投稿で説明したように「fuser」を使用し、aptは機能しましたが、dpkg -a -reconfigureを実行する必要があるという苦情がありました。私がそれをしたとき、次のようなエラーが出ました:

newline in field name #padding

「/ var/lib/dpkg/updates/0003」などのファイル内。

これはすべて私が前に見たことがないので非常に奇妙でした。だから、これらは症状だと思い、データと時間を手動で変更しました。ログインした日付/時刻に問題があることは知っていましたが、無視していました。 (以前は、インターネットとNTPを介して自動的に設定されていました)。

その後、上記の問題はすべて修正されました...うまくいけば、これは他の誰かを助けます!最も顕著な症状は、おそらく、コマンドを実行しようとしている正確な日付/時刻であるロックファイルの日付/時刻です。

3
Ray

ランチャーをチェックして、Software Updaterが実行されているかどうかを確認します。もしそうならそれを最大化し、それが何をしているか見てみましょう。まだチェックしている場合は、完了するまで待ちます。完了すると、ソフトウェアが最新であることが通知されるため、アプリを閉じます。利用可能な更新があると表示されている場合は、更新を行うか、[後で通知する]をクリックします。このアプリが終了すると、apt-getまたはaptの使用に戻ることができます。

Software Updaterが実行されていない場合は、ダッシュを使用して起動し、完了を待ってから、更新するか「後で通知する」をクリックするかを決定します。このアプリが終了すると、apt-getまたはaptの使用に戻ることができます。

3
H2ONaCl
Sudo killall -9 apt && Sudo killall -9 dpkg

自己責任

2
noone

私の場合、rootユーザーに切り替えてSudo apt-getを試みたことに気付かずに同じメッセージを受け取っていました。これに気付いたら、apt-getを実行しましたが、うまくいきました。馬鹿げていますが、それでも一部の人にとってはエラーを説明するかもしれません。

2
BluePython

他のほとんどの人と同様に、ロックが解除されるのを待ちました。 30分後、私はあきらめて別のディストリビューションにハードブートしました。そこから、私はここに着陸したいくつかの研究にインターネットを使用しました。

unattended-upgrades.serviceが実行されていることがわかります。壊れたシステムを再起動して実行していることがわかりました:

Sudo systemctl disable apt-daily.service
Sudo systemctl disable unattended-upgrades.service
Sudo systemctl disable apt-daily-upgrade.service
Sudo systemctl disable apt-daily-upgrade.timer
Sudo systemctl disable apt-daily.timer
Sudo shutdown -r # Note it will take a couple minutes to reboot

壊れたシステムを再び動作させることができました:

Sudo apt update
Sudo apt upgrade
Sudo apt install -f

しかし、そもそもaptによって報告されたキープバックパッケージと不可能な状況は修正されませんでした。これにより、最初にブート時にaptがロックされたように見えます。

0

スクリプトでこのバグを予防的に防止することに興味がある人のために、apt upgrade -yqの-​​qフラグがこの問題の原因であることがわかりました。アップグレードプロセス中に警告が表示されることがあります(デスクトップの更新の行に沿って何かを続行します)。これらの警告が表示されない場合、保護しているファイルのロックを解除できない可能性がありますそしてそれは動けなくなった。

確かに、私はこのエラーを100%再現するのに問題がありましたただし、-qオプションを削除することで問題は完全に修正されました

0
Tyrel Kostyk