ここにはいくつかの良い答えがありますが、dpkgロックユーザーを見つけるための非lsofメソッドを追加したかっただけです。
手順1:dpkgをロックしているユーザーを確認します。
オプション#1:lsofを使用する(マシンに常にインストールされるとは限らない)
lsof /var/lib/dpkg/lock
オプション#2:bashを使用する
for pid in $(ls /proc | egrep [0-9]+); do sudo ls -l /proc/$pid/fd 2>/dev/null | grep /var/lib/dpkg/lock && echo $pid; done
ステップ2:現在のdpkgユーザーで何をしたいかを決定する
そのようなプロセスがない場合、決定するものはありません。次のステップに進んでください。
それ以外の場合は、プロセスを強制終了するか、正常に終了させるかを決定する必要があります。強制終了する場合は、を使用しますkill <pid>
。それでもプロセスが停止しない場合は、を使用してプロセスを強制終了することを検討できますがkill -9 <pid>
、特定の不整合が生じる可能性があります。
手順3:ロックファイルを削除する
sudo rm /var/lib/dpkg/lock
ステップ4:dpkgの内部状態を修正する
sudo dpkg --configure -a