如何解释rpm install / erase额外详细命令的目录输出?

时间:2012-09-12 22:44:03

标签: rpm

我有一个问题,其中rpm擦除,如

rpm -e <package>

导致删除软链接目录。如果目录不是链接而是目录,那么它可以正常工作。

为了研究这个,我开始玩额外的详细输出-vv,它显示了很多信息,其中一些是关于被操作的目录和文件。但是,我不知道如何阅读输出,我无法谷歌任何解释细节的资源。

有问题的输出示例如下:

D:     erase: waitpid(4409) rc 4409 status 0 secs 1.107
D: fini      100755  1 (65534,65533)       105 /usr/foobar/tomcat/logs/om_be/dummy.log 
D: fini      040755  2 (65534,65533)      4096 /usr/foobar/tomcat/logs/om_be 
D: fini      100755  1 (65534,65533)       105 /usr/foobar/tomcat/logs/mc_be/dummy.log 
D: fini      040755  2 (65534,65533)      4096 /usr/foobar/tomcat/logs/mc_be 
D: fini      100755  1 (65534,65533)       105 /usr/foobar/tomcat/logs/dummy.log 
D: fini      120755  1 (65534,65533)        24 /usr/foobar/tomcat/logs 
D: fini      040755  2 (65534,65533)      4096 /usr/foobar/tomcat 
D: fini      100755  1 (   0,   1)      4293 /usr/foobar/share/mrtg2/icons/mrtg-ti.png 
[1]          [2]    [3]     [4]         [5]     [6]

[1]我怀疑D:是指示调试输出。但是fini呢?它有什么意义吗?

[2]这组数字怎么样(其中6个)。他们似乎可能是权限模式设置,但数字太多了。至少最后三位数字看起来像八进制模式值,我不知道前三个数字是什么。

[3]我不知道这个专栏代表什么

[4]我猜测(##,##)部分是所有者和群组权限,因为它们与此预期值相匹配。

[5]我不知道这个数字代表什么。也许是大小?

[6]我识别目录和文件名。 :)

1 个答案:

答案 0 :(得分:1)

调试输出来自lib/fsm.c(函数fsmStage)。相关的代码段:

rpmlog(RPMLOG_DEBUG, " %8s %06o%3d (%4d,%4d)%10d %s %s\n",
            cur,
            (unsigned)st->st_mode, (int)st->st_nlink,
            (int)st->st_uid, (int)st->st_gid, (int)st->st_size,
            (fsm->path ? fsm->path : ""),
            _fafilter(fsm->action));

其中cur是正在执行的操作的当前状态的字符串表示(在您的情况下,操作是擦除,后续任务的当前状态是* fini *成功完成)。 st是标准struct stat,因此您有modehardlinksuidgidfile/dir size,{{ 1}}。

您正确猜到了大多数调试项目。至于模式不仅仅是一个简单的4位八进制数,它有点复杂。来自path 2联机帮助页: 为st_mode字段定义了以下标志:

stat