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?
どうすれば修正できますか?
ロックを削除することをお勧めする回答がほぼすべて表示されます。最初の手段としてそれを行うことはお勧めしません。多分他に選択肢がない場合。ロックは、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
プロセスを強制終了することは、一般的にはるかに安全です。
/var/lib/dpkg/lock
ファイルを削除して、パッケージの再構成を強制します。
Sudo rm /var/lib/dpkg/lock
Sudo dpkg --configure -a
これで動作するはずです。
Aptコマンドの実行時にSudo
の使用を忘れると、このメッセージが表示されます。
それ以外の場合、これは他の何かがソフトウェアをインストールまたは削除しており、アクションの実行中にaptデータベースをロックしたことを示しています。これを行うことができるプログラムは次のとおりです。
重要:システムをクラッシュさせる可能性があるため、最後の手段としてのみ以下を試してください。 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
最もヒットする可能性のある方法は次のとおりです。
Sudo apt-get install whatever
また、コマンドラインapt
はupdate-manager
と自動的にポーリングします。
つまり、数分後にもう一度試して、それを修正する必要がある場合
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
これで、任意のパッケージをインストールできます。
(ロックファイルを削除することで発生する可能性がある)バックグラウンドで実行されている可能性のあるインストールを中断せずに機能させるための最良の方法は、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
アップグレード後にこのエラーが修正されることを確認していません。確認が完了したら、新しいコメントを追加します
まず、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
次に、コンマが何をしているかを確認する必要があります。ps
、pgrep
などを使用して確認できます。コマンドは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
うまくいかなかった場合は、SIGHUP
(kill -1
)を送信する必要があります。最後に何も機能しない場合は、単にプロセスを強制終了します。
Sudo kill -9 12127
または
Sudo pkill -9 apt-get
次に、使用中のリソースを削除します。
Sudo rm /var/lib/apt/lists/lock
このエラーmayは、通常、ログイン直後にバックグラウンドでパッケージのリストを自動的に更新しようとするUpdate Managerが原因で、ディレクトリがロックされます。
この場合、数秒待って(または、最後の更新がかなり前の場合はそれ以上)、完了するまで待つか、Update Managerを起動してステータスを確認します。
何かをすぐに削除しないでください。システムが完全に破損する可能性があります。むしろ、現在インストールまたはアンインストールしているプログラムがタスクを完了し、その後アクセスできるようになるまで待ちます。現在インストールもアンインストールも行われていないと思われる場合は、Sudo reboot
コマンドを使用してシステムを再起動するだけです。
これは、インストールプロセスでロックが発生するため、アップデートチェックまたはインストールのために「アップデートマネージャ」が並行して実行されている場合に発生します。 「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
セキュリティ更新プログラムが自動インストールに設定されている場合、これは頻繁に発生します。私は文字通り30秒待ち、それで問題が解決します。他の誰かがこの問題に遭遇した場合に備えて、これを投げ捨ててください。
私の場合、ロックが解除されるまで数分待たなければなりませんでした(apt
がロックを保持しているように見えます)。これはすべて、システムの起動直後に発生しました。
この問題は何度もありました。私にとって、それはほとんどの場合、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
何らかの更新プログラムがクラッシュまたは終了した後、他の方法で終了せずにパッケージシステムのロックを解除するために使用します。これらのコマンドは、提示された順序で実行する必要があります。
Sudo rm -f /var/lib/apt/lists/lock
だけをやり直してください。
apt-fastは、適切にロックを解除しない場合があります。これは、apt-get
またはdpkg
も中止すると時々発生します。
私の場合、apt-get
が古いカーネルを削除している間にXがクラッシュしました。システムモニターを使用して、システムモニターがまだ実行中でスタックしていないことを確認しました。プロセスが終了すると、すべてがうまくいきました。
上記のどこにもこの回答は表示されませんが、Ubuntu 16.04では、この問題も発生しました。原因は、コンピューターの時間がfutureに設定されていたことです。 (これは、Windows + Ubuntuのデュアルブートシステムを使用しているため、現地時間とUTC時間を台無しにしてしまったためです。)
奇妙なことの1つは、ロックされたファイルの日付と時刻が、プログラムを実行した正確な日付と時刻だったことです。
その後、以前の投稿で説明したように「fuser」を使用し、aptは機能しましたが、dpkg -a -reconfigure
を実行する必要があるという苦情がありました。私がそれをしたとき、次のようなエラーが出ました:
newline in field name #padding
「/ var/lib/dpkg/updates/0003」などのファイル内。
これはすべて私が前に見たことがないので非常に奇妙でした。だから、これらは症状だと思い、データと時間を手動で変更しました。ログインした日付/時刻に問題があることは知っていましたが、無視していました。 (以前は、インターネットとNTPを介して自動的に設定されていました)。
その後、上記の問題はすべて修正されました...うまくいけば、これは他の誰かを助けます!最も顕著な症状は、おそらく、コマンドを実行しようとしている正確な日付/時刻であるロックファイルの日付/時刻です。
ランチャーをチェックして、Software Updater
が実行されているかどうかを確認します。もしそうならそれを最大化し、それが何をしているか見てみましょう。まだチェックしている場合は、完了するまで待ちます。完了すると、ソフトウェアが最新であることが通知されるため、アプリを閉じます。利用可能な更新があると表示されている場合は、更新を行うか、[後で通知する]をクリックします。このアプリが終了すると、apt-get
またはapt
の使用に戻ることができます。
Software Updater
が実行されていない場合は、ダッシュを使用して起動し、完了を待ってから、更新するか「後で通知する」をクリックするかを決定します。このアプリが終了すると、apt-get
またはapt
の使用に戻ることができます。
Sudo killall -9 apt && Sudo killall -9 dpkg
自己責任
私の場合、rootユーザーに切り替えてSudo apt-getを試みたことに気付かずに同じメッセージを受け取っていました。これに気付いたら、apt-getを実行しましたが、うまくいきました。馬鹿げていますが、それでも一部の人にとってはエラーを説明するかもしれません。
他のほとんどの人と同様に、ロックが解除されるのを待ちました。 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
がロックされたように見えます。
スクリプトでこのバグを予防的に防止することに興味がある人のために、apt upgrade -yq
の-qフラグがこの問題の原因であることがわかりました。アップグレードプロセス中に警告が表示されることがあります(デスクトップの更新の行に沿って何かを続行します)。これらの警告が表示されない場合、保護しているファイルのロックを解除できない可能性がありますそしてそれは動けなくなった。
確かに、私はこのエラーを100%再現するのに問題がありましたただし、-qオプションを削除することで問題は完全に修正されました。