誤って「apt install*」を実行しましたが、すべてのパッケージが「手動インストール」と表示されます。

誤って「apt install*」を実行しましたが、すべてのパッケージが「手動インストール」と表示されます。

apt install '*'クラッシュ(たとえば、複数のバージョンのエディタ)のために何もインストールされていませんが、誤って実行されていましたが、インストールされたvimすべてのパッケージが「自動」属性を失いました。つまり、APT の自動依存性チェックを楽しむことはできません。つまり、を削除すると、vimaptは削除するように求めるメッセージを表示しなくなりますvim-runtime。高度なパッケージングツールの単純なバージョンを使用しているため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/statusDebian にあります。 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

出力ファイルを確認して満足したら、適切な場所に移動します。

おすすめ記事