页次: 1
我使用debtap下载了一个软件包,后来卸载,但pacman并没有为我卸载它的依赖项(整整10个G!),由此我想请教如何清除多余的依赖项目呢?或者如何管理各类我不认识的软件包呢?
最近编辑记录 BreadCat209 (2023-10-11 20:58:24)
[mbm@ArchLinux:~]$ sudo rm -rf /*
离线
pacman -Qdt 查看作为依赖安装、现在又没有软件包依赖它们的软件包。两个 t 则包含被显式安装的软件包的可选依赖。
离线
pacman -Qdt 查看作为依赖安装、现在又没有软件包依赖它们的软件包。两个 t 则包含被显式安装的软件包的可选依赖。
可选依赖删除会有什么问题吗?
[mbm@ArchLinux:~]$ sudo rm -rf /*
离线
取决于你的管理策略。如果你像我一样把自己用的可选依赖都标记为显式安装的话,删掉 Qdtt 出来的可选依赖就没问题。否则就有问题。
离线
pacman -Qdt 查看作为依赖安装、现在又没有软件包依赖它们的软件包。两个 t 则包含被显式安装的软件包的可选依赖。
我发现了一个小问题,就是如果a不被依赖,a依赖b,那么ab其实都是可删除的依赖,但因为b被不被依赖的依赖依赖(什么),导致pacman -Qdt并不能直接显示b,那么有什么办法递归显示所以实际上不被依赖的依赖呢(我在想什么奇怪的东西)
[mbm@ArchLinux:~]$ sudo rm -rf /*
离线
你在想这个:
#!/usr/bin/python3
import os
import pyalpm
def main():
with open(os.path.expanduser('~/etc/pkg-why')) as f:
keep = {l.split(None, 1)[0] for l in f}
h = pyalpm.Handle('/', '/var/lib/pacman')
ldb = h.get_localdb()
for pkg in ldb.pkgcache:
tx = h.init_transaction(cascade=True, nolock=True)
tx.remove_pkg(pkg)
tx.prepare()
rm = {p.name for p in tx.to_remove}
tx.release()
if rm & keep:
continue
print(f'{pkg.name} may be removed')
if __name__ == '__main__':
main()
那个 pkg-why 文件是我用来记录我要用的软件包(和 pacman -Qe 相比,里边记录了要它的原因)。
离线
这个脚本可以找到不要的依赖环。
离线
这个脚本可以找到不要的依赖环。
哇,实在感谢
[mbm@ArchLinux:~]$ sudo rm -rf /*
离线
页次: 1