aptコマンドでパッケージをインストール時にロックエラーが発生してインストールできない
aptコマンドでパッケージをインストールすると以下のようなエラーが発生してインストールできなくなりました。原因ですが、以下のようなことが考えられます
- すでに別の
apt
が動作中 - 前回のインストール処理が中断され、ロックが残っている
- パッケージの設定途中でエラーになり壊れた状態
$ sudo apt install libpam0g debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable libpam0g:amd64 (1.5.3-5ubuntu5.5) を設定しています ... debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable dpkg: パッケージ libpam0g:amd64 の処理中にエラーが発生しました (--configure): installed libpam0g:amd64 package post-installation script subprocess returned error exit status 1 処理中にエラーが発生しました: libpam0g:amd64 needrestart is being skipped since dpkg has failed E: Sub-process /usr/bin/dpkg returned an error code (1)
また、再度実行すると下記のようになり、ロックが残っていてインストールできなくなりました
$ sudo apt install libpam0g Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is heWaiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 719794 (unattended-upgr) Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is heWaiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 719794 (unattended-upgr) Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is heWaiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 719794 (unattended-upgr) Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is heWaiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 719794 (unattended-upgr)
aptコマンドを実行しているプロセスを停止する
対処方法ですが、前回のaptコマンドを残っていてファイルをロックしている可能性があるので該当プロセスをKill します
# 該当のプリセス番号かapt の文字でgrep してプロセスが残っていないか確認します $ ps -ef|grep 719794 root 719794 719766 0 9月24 ? 00:26:56 /usr/bin/python3 /usr/bin/unattended-upgrade root 719849 719794 0 9月24 ? 00:00:01 /usr/bin/python3 /usr/bin/unattended-upgrade # ps aux | grep aptでもaptコマンドのプロセスが残っているか確認できます $ ps aux | grep apt
残っているプロセスをkillします
$ sudo kill -9 719794
上記で再度、apt コマンドでパッケージをインストールしてみます。
駄目な場合は次のステップを試します
ロックファイルなどの一時ファイルを削除する
プロセスをkillしても駄目な場合は、ロックが残っている場合が多いので削除します
$ sudo rm -f /var/lib/dpkg/lock $ sudo rm -f /var/lib/dpkg/lock-frontend $ sudo rm -f /var/cache/apt/archives/lock $ sudo rm -f /var/cache/debconf/config.dat*
dpkg の修復や依存関係を修復します
# dpkg の中途半端な設定を修復 $ sudo dpkg --configure -a # 壊れた依存関係があれば修復 $ sudo apt -f install # パッケージ情報を更新 $ sudo apt update # 再インストールを試す $ sudo apt install --reinstall libpam0g
再度、実行して駄目な場合は、最終手段となりますがリブートです。