【那些年遇到过的面试题】 rpm包

来源:互联网 发布:淘宝定制的可强行退吗 编辑:程序博客网 时间:2024/05/16 19:36

RPM包安装

--hash(-h): 以#显示安装进度

--precent: 以%(百分比)显示安装进度

--force:强制安装

--install(i):安装

--nodeps:不检查依赖

-qpl:列出包裹文件

-v:显示附加信息,如果什么都不输出,表示安装成功了

--root:后面加目录,可以用来指定安装目录

-U(--upgrade):


RPM包卸载

-e(--erase):卸载,后面直接加包名(不带.rpm后缀,也没有版本信息)

--allmatches:卸载包名匹配的所有包


RPM查询

-q(--query): 查询

-a(--all):查询所有已安装的包

-g(--group): 查询有哪些软件包属于指定类别

-c(--configfiles): 显示软件包配置文件

-R(--requires): 显示软件包所需的功能、



Debuginfo

编译成功后会有3-4个rpm包,一个可执行,一个源代码,一个debuginfo, 如果程序coredump了,debuginfo包就很重要了。

http://blog.csdn.net/chinainvent/article/details/24129311?reload

博客里提到了DWARF( [dwɔːf],使矮小,还蛮形象的。。。)

http://dwarfstd.org/doc/DWARF4.pdf

http://www.cnblogs.com/catch/p/3884271.html

平时用到过addr2line 来调试coredump信息,和这个有关,有被问过。

addr2line -Cf -e usr/lib/debug/usr/apps/***/bin/***.debug 0x28F0E

 usr/lib/debug/usr/apps/***/bin/***.debug是debuginfo解压出来的

0x28F0E 是pc地址减去首地址

b5d94000-b5db5000 r-xp 00000000 b3:16 64493     
(gdb) p /x  0xb5da6caa-0xb5d94000
$3 = 0x12caa

addr2line可以找到信息是因为,在可执行程序中都包含有调试信息,其中很重要的一份数据就是程序源程序的行号和编译后的机器代码之间的对应关系Line Number Table。现代 ELF 中的调试信息基本是以 DWARF 格式为主,DWARF格式的Line  Number Table是一种高度压缩的数据,存储的是表格前后两行的差值,在解析调试信息时,需要按照规则在内存里重建Line Number  Table才能使用。














0 0