完全更改我的后sources.list
,显然我只想拥有可以更新的软件包。apt
自动执行此操作吗?我怎样才能找到答案?
如何一次性删除我实际无法访问的所有包sources.list
?
答案1
识别不再可用的软件包
在这种情况下列出需要检查的包的最有用的工具是apt-show-versions
。安装它,然后按如下方式运行:
apt-show-versions | grep "No available version in archive"
列出所有不可用的包根本不与您当前的存储库配置(应该删除)。
apt-show-versions | grep "newer than version in archive"
列出当前安装的版本比当前存储库配置可用的版本更新的所有软件包(并且您可能希望降级)。
您可以使用apt list --installed
和 查找 来获取类似的信息[installed,local]
,但这并不能区分您配置的存储库中不可用的软件包和可用但版本比当前安装的版本更旧的软件包。
aptitude
也可以向您展示这一点;启动它并在 TUI 中查找“过时的和本地创建的包”部分。这将包含您配置的存储库中不可用的所有包。您可以使用列出包
aptitude search '~o'
也在你的壳里。
删除不再可用的包
aptitude
为您的实际问题提供最简单的答案:
aptitude purge '~o'
将清除所有“过时”的软件包(IE存储库中不再提供的软件包)。
识别并删除贡献包或非免费包
aptitude
还可以识别 contrib 或非免费软件包,而无需删除相应的存储库:
aptitude search '~i ~scontrib/.*' '~i ~snon-free/.*'
您可以直接清除它们:
aptitude purge '~i ~scontrib/.*' '~i ~snon-free/.*'
答案2
如何识别所有非免费或贡献包
您可以使用 vrms 识别贡献包和非免费包
sudo apt install vrms
vrms