我之前添加了一些外部源,/etc/apt/sources.list.d
但现在想删除其中之一。我也想:
- 仅从该源删除所有包
- 将所有包恢复到我的原始源中的版本
- 或者,列出此源中的所有包,以便我可以手动执行此过程
我怎样才能做到这一点?
答案1
根据您要删除的存储库的配置,apt list --installed
可能会提供足够的信息来识别您需要卸载或降级的包。如果存储库定义了唯一的“Origin”,则另一种选择是使用aptitude search '~i ~Oorigin'
(origin
根据需要进行替换)。
(这是一个通用答案;如果您编辑你的问题要准确指定您要删除的来源,我可以添加具体的答案。)
答案2
或者使用 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