
一不小心就跑apt install '*'
了雖然由於衝突(例如多個版本的vim
編輯器),它沒有安裝任何東西,但所有安裝的軟體包都失去了它們的「自動」屬性,這意味著我無法再享受 APT 的自動依賴性檢查。也就是說,如果我刪除vim
, apt 不再提示我刪除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/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
檢查輸出文件,如果您滿意,請將其移至適當位置。