TOC

debtree: DEB 依赖关系

输出 dot 格式的包依赖关系图,可以用 graphviz 生成图片。

使用

# 安装
sudo apt install debtree -y

# 输出依赖关系
debtree git > debtree.dot
# 使用 graphviz 生成图片
dot -T png -o debtree.png debtree.dot
# 看图
eog debtree.png

颜色:

  • 红 冲突
  • 绿 提供
  • 蓝 依赖

其他

skiplist 和 endlist

很简单,就一行一个就行了。

优先使用命令行参数,然后是 ~/.debtree/ 目录,然后再是 /etc/debtree 目录。

  • /etc/debtree/skiplist, ~/.debtree/skiplist
  • /etc/debtree/endlist, ~/.debtree/endlist

相关参数:

--no-skip       # 将 skip 当作 end
--skiplist=file
--endlist=file
--show-all

参数

--show-installed, -I
--show-rdeps, -R
--build-dep, -b
--arch=architecture
--with-suggests, -S
--no-recommends
--no-alternatives
--no-provides
--max-providers=number
--no-versions
--no-conflicts
--versioned-conflicts, -VC
--max-depth=number
--rdeps-depth=number
--max-rdeps=number
--no-skip
--skiplist=file
--endlist=file
--show-all
--rotate, -r
--condense  # 就是在 dot 文件中增加一行:concentrate=true, 对线条进行合并
--quiet, -q
--verbose, -v

在生成图片之前,除了可以直接对 dot 文件进行编辑处理,还可以通过参数对依赖关系进行筛选。

rm -f /tmp/endlist && cp /etc/debtree/endlist /tmp/endlist
echo libgtk-3-0 >> /tmp/endlist
echo apt >> /tmp/endlist
debtree --endlist=/tmp/endlist --no-recommends --no-alternatives --no-provides --no-versions --condense code > debtree.dot
dot -T png -o debtree.png debtree.dot

rm -f /tmp/endlist && cp /etc/debtree/endlist /tmp/endlist
echo util-linux >> /tmp/endlist
echo libcups2 >> /tmp/endlist
echo libxt-dev >> /tmp/endlist
debtree -R --rdeps-depth=1 -I --endlist=/tmp/endlist --no-versions --condense openjdk-8-jdk > debtree.dot
dot -T png -o debtree.png debtree.dot
eog debtree.png