Debian

如何從一個 Debian 源解除安裝所有軟體包?

  • October 31, 2017

我之前添加了一些外部資源,/etc/apt/sources.list.d但現在我想刪除其中一個。我也想:

  • 僅從該來源中刪除所有軟體包
  • 將所有包還原為我原始源中的版本
  • 或者,列出來自該來源的所有包,以便我可以手動執行此過程

我怎樣才能做到這一點?

根據您希望刪除的儲存庫的配置,apt list --installed可能會提供足夠的資訊來辨識您需要解除安裝或降級的軟體包。如果儲存庫定義了唯一的“Origin”,則另一種選擇是使用aptitude search '~i ~Oorigin'(酌情替換origin)。

(這是一個通用答案;如果您編輯問題以準確指定要刪除的來源,我可以添加特定答案。)

或者使用 dpkg:

dpkg -l | awk '/^.i/ {print $2}' | xargs apt-cache policy | awk '/^[a-z0-9.\-]+:/ {pkg=$1}; /\*\*\*/ {OFS="\t"; ver=$2; getline; print pkg,ver,$2,$3}'|grep -v /var/lib/dpkg/status| sed -e 's/://'|awk '{printf "%-40s %-36s %-36s %-16s \n",$1,$2,$3, $4}' | grep -i yourkeyword

例如

dpkg -l | awk '/^.i/ {print $2}' | xargs apt-cache policy | awk '/^[a-z0-9.\-]+:/ {pkg=$1}; /\*\*\*/ {OFS="\t"; ver=$2; getline; print pkg,ver,$2,$3}'|grep -v /var/lib/dpkg/status| sed -e 's/://'|awk '{printf "%-40s %-36s %-36s %-16s \n",$1,$2,$3, $4}' | grep -i multimedia

返回:

audacious                                1:3.8.2-dmo1                         http://www.deb-multimedia.org        stretch/main     
audacious-plugins                        1:3.8.2-dmo1                         http://www.deb-multimedia.org        stretch/main     
audacious-plugins-data                   1:3.8.2-dmo1                         http://www.deb-multimedia.org        stretch/main    
snipp

這顯示了來自 deb-multimedia.org 的包。結果相同dpkg-query -W -f='${Section}\t\t${Package}\n' | awk '/^.i/ {print $2}' | xargs apt-cache policy | awk '/^[a-z0-9.\-]+:/ {pkg=$1}; /\*\*\*/ {OFS="\t"; ver=$2; getline; print pkg,ver,$2,$3}'|grep -v /var/lib/dpkg/status| sed -e 's/://'|awk '{printf "%-40s %-36s %-36s %-16s \n",$1,$2,$3, $4}' | egrep -i multimedia

引用自:https://unix.stackexchange.com/questions/401604