您尚未登录。

#1 2023-10-10 21:06:20

BreadCat209
K.I.S.S.
注册时间: 2023-09-09
帖子: 203

[已解决]有关依赖的问题

我使用debtap下载了一个软件包,后来卸载,但pacman并没有为我卸载它的依赖项(整整10个G!),由此我想请教如何清除多余的依赖项目呢?或者如何管理各类我不认识的软件包呢?

最近编辑记录 BreadCat209 (2023-10-11 20:58:24)


[mbm@ArchLinux:~]$ sudo rm -rf /*

离线

#2 2023-10-10 23:24:51

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,917
个人网站

Re: [已解决]有关依赖的问题

pacman -Qdt 查看作为依赖安装、现在又没有软件包依赖它们的软件包。两个 t 则包含被显式安装的软件包的可选依赖。

离线

#3 2023-10-11 19:55:30

BreadCat209
K.I.S.S.
注册时间: 2023-09-09
帖子: 203

Re: [已解决]有关依赖的问题

依云 说:

pacman -Qdt 查看作为依赖安装、现在又没有软件包依赖它们的软件包。两个 t 则包含被显式安装的软件包的可选依赖。

可选依赖删除会有什么问题吗?


[mbm@ArchLinux:~]$ sudo rm -rf /*

离线

#4 2023-10-11 20:04:40

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,917
个人网站

Re: [已解决]有关依赖的问题

取决于你的管理策略。如果你像我一样把自己用的可选依赖都标记为显式安装的话,删掉 Qdtt 出来的可选依赖就没问题。否则就有问题。

离线

#5 2023-10-12 22:45:09

BreadCat209
K.I.S.S.
注册时间: 2023-09-09
帖子: 203

Re: [已解决]有关依赖的问题

依云 说:

pacman -Qdt 查看作为依赖安装、现在又没有软件包依赖它们的软件包。两个 t 则包含被显式安装的软件包的可选依赖。

我发现了一个小问题,就是如果a不被依赖,a依赖b,那么ab其实都是可删除的依赖,但因为b被不被依赖的依赖依赖(什么),导致pacman -Qdt并不能直接显示b,那么有什么办法递归显示所以实际上不被依赖的依赖呢(我在想什么奇怪的东西)


[mbm@ArchLinux:~]$ sudo rm -rf /*

离线

#6 2023-10-12 22:55:05

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,917
个人网站

Re: [已解决]有关依赖的问题

你在想这个:

#!/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 相比,里边记录了要它的原因)。

离线

#7 2023-10-12 22:55:35

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,917
个人网站

Re: [已解决]有关依赖的问题

这个脚本可以找到不要的依赖环。

离线

#8 2023-10-13 08:44:06

BreadCat209
K.I.S.S.
注册时间: 2023-09-09
帖子: 203

Re: [已解决]有关依赖的问题

依云 说:

这个脚本可以找到不要的依赖环。

哇,实在感谢


[mbm@ArchLinux:~]$ sudo rm -rf /*

离线

页脚