|
也是跟踪很久的一个问题了。
用python rpm写的安装rpm包的脚本,用于测试MI上的问题
- pkg_install(/tmp/update/tmp_rpm/package/glitz-glx-devel-0.5.6-3mgc25.i686.rpm, /tmp/update/tmp_rpm/package/glib-1.2.10-24mgc25.i686.rpm)
- error: unpacking of archive failed on file /usr/include/glitz-glx.h;4c0265f1: cpio: Digest mismatch
复制代码 大概出现这些错误,应该是因为文件效验不正确出现的问题
在网上搜索的rpm的效验方式是md5或者是- [sunshine@MagicLinux ~]$ rpm -qf /usr/bin/md5sum
- coreutils-7.0-7mgc25.i686
- [sunshine@MagicLinux ~]$ rpm -qf /usr/bin/shasum
- perl-Digest-SHA-5.45-58mgc25.i686
复制代码 通过跟踪发现问题,在加载两个库文件的时候出现问题- 889 open("/lib/libsoftokn3.so", O_RDONLY) = -1 ENOENT (No such file or directory)
- 890 readlink("/lib/libnss3.so", 0x80db570, 1023) = -1 EINVAL (Invalid argument)
复制代码 这两个文件都是- [sunshine@MagicLinux ~]$ rpm -qf /lib/libnss3.so
- nss-3.12.4-1mgc25.i686
复制代码 忘记说了,那个测试程序在MagicLinux机器上运行完全正常。这也说明这个问题隐藏的很深。
/lib/libsoftokn3.so
/lib/libnss3.so
在本机跟踪程序运行过程,发现这两个文件加载了,但是加载的确是其他路径的文件- 1062 open("/usr/lib/xulrunner-1.9.2/libsoftokn3.so", O_RDONLY) = 3
- 814 open("/usr/lib/xulrunner-1.9.2/libnss3.so", O_RDONLY) = 5
复制代码 而
/usr/lib/xulrunner-1.9.2/libsoftokn3.so
/usr/lib/xulrunner-1.9.2/libnss3.so
这两个文件所在包为- [sunshine@MagicLinux ~]$ rpm -qf /usr/lib/xulrunner-1.9.2/libnss3.so
- xulrunner-1.9.2.3-1.mgc25.i686
复制代码 这里明显不对,我整个程序没有涉及到mozilla,但是却使用它的库文件。
xulrunner应该是
"XULRunner是一个Mozilla runtime package,可以用于启动XUL+XPCOM的应用程序。它提供安装、升级、卸载这些程序的机制。"
——翻译自Mozilla开发者中心的介绍
而程序加载了这个库是因为- [sunshine@MagicLinux ~]$ cat /etc/ld.so.conf.d/xulrunner-32.conf
- /usr/lib/xulrunner-1.9.2
复制代码 在原来的MI中,没有xulrunner相关库,说明原来用的就是nss包中的两个库文件。
ps:rpm的文件效验方式是用的nss算法吧?
不知道上面陈述的清不清楚,请sejishikong 等各位看看吧?
而且nss运行时应该需要sqlite,但是运行时没有加载....
附测试程序以再现程序
[sunshine@MagicLinux tmp_rpm]$ ls
package sys_root test_rpm.py
package中放着所需要安装的rpm包
test_rpm.py中的
top_dir = '/tmp/update/tmp_rpm'
修改为测试程序的所在目录
list = ['glib-1.2.10-24mgc25.i686.rpm',
57 'glib2-2.22.5-1mgc25.i686.rpm',
58 'glib2-devel-2.22.5-1mgc25.i686.rpm',]
list列表是需要安装的rpm包名。
创建必要的文件结构
mkdir -p sys_root/var/lib/rpm
然后运行test_rpm.py
[ 本帖最后由 zy_sunshine 于 2010-5-30 20:10 编辑 ] |
|