一般的な症状
apt installが「依存関係が満たされていない」と報告するdpkgが中断されたため、インストールを続行できません- 「壊れたパッケージを保持しています」というメッセージが表示される
- パッケージのステータスが「半分インストール済み」または「半分構成済み」です
Note
ほとんどのパッケージの問題は、最初の 3 つの手順 (dpkg --configure -a、apt --fix-broken install、apt update && apt upgrade) で解決できます。急いで高度な修復方法を使用しないで、順番に試してください。
標準的な修理手順
次の手順を順番に試してください。通常、最初のいくつかの手順で問題は解決します。
ステップ 1: 中断された dpkg を修正する
sudo dpkg --configure -aステップ 2: 依存関係を修正する
sudo apt --fix-broken installステップ 3: アップデートとクリーンアップ
sudo apt update
sudo apt upgrade
sudo apt autoremove
sudo apt autoclean高度な修復
修正パッケージを強制する
# View problematic packages
dpkg -l | grep -E "^..[^i ]"
# Force reinstall a package
sudo apt install --reinstall PACKAGE_NAME
# Force remove a broken package
sudo dpkg --remove --force-remove-reinstreq PACKAGE_NAMEパッケージキャッシュをクリアする
# Delete all downloaded package cache
sudo apt clean
# Delete only outdated packages
sudo apt autoclean
# Manual cleanup
sudo rm /var/cache/apt/archives/*.deb
sudo rm /var/cache/apt/archives/partial/*.debdpkgロックを修正
「管理ディレクトリをロックできません」というメッセージが表示された場合:
# Check if other apt/dpkg processes are running
ps aux | grep -E "apt|dpkg"
# If you confirm no other processes are running, delete the lock files
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
sudo dpkg --configure -adpkgデータベースを再構築する
dpkg データベースが破損する極端な場合:
# Back up existing database
sudo cp -r /var/lib/dpkg /var/lib/dpkg.backup
# Restore the status file from the system's daily backup (status is dpkg's core database)
ls -t /var/backups/dpkg.status.* # List available backup snapshots
sudo cp /var/backups/dpkg.status.0 /var/lib/dpkg/status # .0 is newest; use an older snapshot if needed
sudo dpkg --clear-avail
sudo apt update依存関係の競合のトラブルシューティング
パッケージの依存関係を表示する
# View dependencies of a package
apt depends PACKAGE_NAME
# View which packages depend on a package
apt rdepends PACKAGE_NAME
# Simulate installation to see conflicts
apt install -s PACKAGE_NAMEPPA によって引き起こされる紛争
サードパーティの PPA は、依存関係の競合の一般的な原因です。
# List added PPAs
grep -rh "^deb " /etc/apt/sources.list.d/ | sort
# Disable a problematic PPA
sudo add-apt-repository --remove ppa:xxx/yyy
# Downgrade PPA-installed packages to official versions
sudo apt install ppa-purge
sudo ppa-purge ppa:xxx/yyyバージョン保持の競合
# View held packages
apt-mark showhold
# Unhold a package
sudo apt-mark unhold PACKAGE_NAMESnap パッケージの問題
# View snap status
snap list
# Fix snap
sudo snap refresh
# Reinstall a problematic snap
sudo snap remove PACKAGE_NAME
sudo snap install PACKAGE_NAME最後の手段
上記の方法がいずれも機能しない場合は、次のことを試してください。
# Completely reinstall the package management system (use with caution)
sudo apt install --reinstall dpkg apt
# Or use aptitude for interactive conflict resolution
sudo apt install aptitude
sudo aptitude install PACKAGE_NAME
# aptitude will offer multiple solutions to choose from予防のヒント
- 信頼できないサードパーティ PPA の追加を避ける
- 異なる Ubuntu バージョンのソフトウェア ソースを混合しないでください。
- 定期的に実行される
sudo apt update && sudo apt upgrade apt install -sを使用してインストールをシミュレートし、競合を確認します- システム パッケージのバージョンを一貫した状態に保ちます。システム パッケージをオーバーライドする
.debファイルを手動でインストールすることは避けてください。