
誤って を実行しましたapt install '*'
。競合 (エディターの複数のバージョンなど) により何もインストールされませんでしたがvim
、インストールされたすべてのパッケージの「自動」プロパティが失われ、APT の自動依存関係チェックを利用できなくなりました。つまり、 を削除するとvim
、apt は を削除するように要求しなくなりますvim-runtime
。Advanced Packaging Tool の簡易バージョンを使用しているため、 は使用できません。他のパッケージに依存しているパッケージのプロパティ apt-mark
を復元するにはどうすればよいですか?automatic
注: apt
、、、apt-get
およびapt-cache
が利用可能apt-config
ですapt-key
。
答え1
Debian および派生版では、手動インストールと自動インストールに関する情報は に保存されます/var/lib/apt/extended_states
。自動バックアップやログはありません。そのファイルのバックアップがある場合は、それを復元してください。
バックアップがない場合は、まず作成して、作成し直してください。次に、各パッケージについて、行をAuto-Installed: 0
に変更してAuto-Installed: 1
、パッケージが手動でインストールされたものとしてマークします。
APT 自体はインストールされたパッケージの依存関係を追跡しません。これは dpkg によって行われます。情報は/var/lib/dpkg/status
Debian にあります。Aptitude には依存関係を操作できる高度な検索機能がありますが、apt にはありません。 のアドホック解析を行うことができます/var/lib/dpkg/status
。次のスクリプト (最小限のテスト済み) は、インストールされたパッケージが依存するパッケージのリストを生成します。
</var/lib/dpkg/status awk '
/^Package:/ {package=$2}
/^Status:/ && $4 != "installed" {package=""}
/^(Depends|Pre-Depends|Recommends|Suggests):/ && package != "" {
sub(/^[^:]*: */, "");
gsub(/ (\([^()]*\))/, "");
split($0, dependencies, /[|, ]+/);
for (d in dependencies) print dependencies[d]}
' | sort -u >dependencies.txt
そのリストを確認し、依存関係にあるが、それでも残しておきたいパッケージの行をいくつか削除します。次に、これを使用して調整します/var/lib/apt/extended_states
。
</var/lib/apt/extended_states awk '
BEGIN {
while (getline <"dependencies.txt") auto[$0]=1;
RS="";
}
$2 in auto {sub(/\nAuto-Installed: 0/, "\nAuto-Installed: 1")}
{print $0 "\n"}
' >extended_states.new
出力ファイルを確認し、満足できる場合は適切な場所に移動します。