我必须评估受内核升级影响的软件包集(RHEL7.3) 以某种方式独立于物理机器上安装的内容 我正在运营的地方(即不受物理机器yum数据库的影响)。
为了解决这个问题,我发现了一些主要包含的命令 在yum-utils包中,即repoquery,repotrack和yumdownloader。 但上述命令/实用程序之间的区别有些不同 令我感到困惑的是,我没有在Google上找到令人信服的论证。
特别是,我专注于repoquery和repotrack,我试图生成 我正在搜索的包集,并比较结果。 由于repotrack给出了包含数字版本的包列表,我用awk进行了后期过滤, 为了简单地看一下包的集合(有时称为CAPABILITIES) 由两个命令产生的是相干的,即两者都产生相等的集合。 结果显示生成的集合(稍微)不同(我的架构是x86_64类型)。
下面是上述说明的完整代码。 我正在寻找依赖Red Hat 7.3软件包的集合 关于内核升级(即kernel-3.10.0-514.36.1.el7.x86_64)
rm /tmp/repoquery.ascii ;\
repoquery --qf="%{name}.%{arch}" -R --resolve --recursive kernel-3.10.0-514.36.1.el7.x86_64 |\
sort > /tmp/repoquery.ascii ;\
rm /tmp/repotrack.ascii ;\
repotrack -u -a x86_64 -r <REPOSITORY> kernel-3.10.0-514.36.1.el7.x86_64 |\
sed 's/\// /g' |\
awk '{ print $NF; }' |\
sort > /tmp/repotrack.ascii ;\
cat /tmp/repotrack.ascii |\
sed 's/-/ /g' |\
sed 's/\./ /g' |\
awk '{ for(i=1; i <= NF; i=i+1)\
if(i == NF)\
printf("\n",$NF);\
else\
if(i == 1)\
printf("%s",$1);\
else\
if($i ~ /^[a-z]/)\
printf("-%s",$i); }' |\
sed 's/-el7-/\./g' |\
sed 's/-el7_[0-9]-/\./g' |\
sort > /tmp/repotrack_filtered.ascii ;\
diff --side-by-side /tmp/repoquery.ascii /tmp/repotrack_filtered.ascii
最后一个问题是:为什么会这样? 更一般:repotrack和repoquery的操作差异的细节是什么?