本文介绍了打印封装的依赖关系树的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用这个文件,我想打印一个软件包的依赖关系树,给定一个单一的基础包。例如,拿bash包
@庆典#几行删除要求:coreutils的libintl8 libncursesw10 libreadline7 _Update-INFO-DIR cygwin的我想找到般所需的输出的包,部分例如
庆典庆典的coreutils庆典的coreutils libattr1庆典的coreutils libattr1 libintl8庆典的coreutils libattr1 libintl8 libiconv2庆典的coreutils libattr1 libintl8 _autorebase庆典的coreutils libattr1 libintl8 _autorebase底垫庆典的coreutils libattr1 libintl8 _autorebase变基冲刺庆典的coreutils libattr1 libintl8 _autorebase变基冲刺的cygwin庆典的coreutils libattr1 libintl8 _autorebase变基冲刺cygwin的基础cygwin的我有这样的命令,但它不会递归
#!AWK -f$ 1 ==@{ PKG = $ 16}$ 1 ==要求:{ 对于(i = 2; I< = NF;我++) 请求数[PKG] [I-1] = $我}结束 { 查询=庆典 对(在请求数[查询] PKG){ 打印请求数[查询] [PKG] }}解决方案
#!的/ usr /斌/的awk -f@include加盟$ 1 ==@{ 助攻= $ 16}$ 1 ==要求:{ 对于(Z = 2; z,其中= NF; Z ++) 请求数[助攻] [Z-1] = $ž}结束 { PRPG(庆典)}功能smartmatch(小,大,价值){ 对于(每个大) 值[大[每] 在值返回小}功能PRPG(FPG){ 如果(smartmatch(FPG,SPATH))回报 SPATH [长度(SPATH)+1] = FPG 打印已加入(SPATH,1,长度(SPATH)) 如果(IsArray的(请求数[FPG)) 对于(每个请求数[FPG]) PRPG(请求数[FPG] [每]) 删除SPATH [长度(SPATH)}源
Using this file, I would like to print a tree of package dependencies, given a single base package. For example, take the Bash package
@ bash # few lines removed requires: coreutils libintl8 libncursesw10 libreadline7 _update-info-dir cygwinI would like find-like output of the required packages, partial example
bash bash coreutils bash coreutils libattr1 bash coreutils libattr1 libintl8 bash coreutils libattr1 libintl8 libiconv2 bash coreutils libattr1 libintl8 _autorebase bash coreutils libattr1 libintl8 _autorebase rebase bash coreutils libattr1 libintl8 _autorebase rebase dash bash coreutils libattr1 libintl8 _autorebase rebase dash cygwin bash coreutils libattr1 libintl8 _autorebase rebase dash cygwin base-cygwinI have this command but it does not recurse
#!awk -f $1 == "@" { pkg = $2 } $1 == "requires:" { for (i=2; i<=NF; i++) reqs[pkg][i-1] = $i } END { query = "bash" for (pkg in reqs[query]) { print reqs[query][pkg] } }解决方案 #!/usr/bin/awk -f @include "join" $1 == "@" { apg = $2 } $1 == "requires:" { for (z=2; z<=NF; z++) reqs[apg][z-1] = $z } END { prpg("bash") } function smartmatch(small, large, values) { for (each in large) values[large[each]] return small in values } function prpg(fpg) { if (smartmatch(fpg, spath)) return spath[length(spath)+1] = fpg print join(spath, 1, length(spath)) if (isarray(reqs[fpg])) for (each in reqs[fpg]) prpg(reqs[fpg][each]) delete spath[length(spath)] }
Source
更多推荐
打印封装的依赖关系树
发布评论