您当前的位置: 首页 > 

liaowenxiong

暂无认证

  • 2浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

软件包管理器 RPM 升级软件包过程分析

liaowenxiong 发布时间:2021-06-17 15:07:49 ,浏览量:2

升级软件包 alsaplayer-0.99.76-2.2.fc4.i386.rpm,并显示详细的升级信息:

rpm -Uvv alsaplayer-0.99.76-2.2.fc4.i386.rpm

把显示内容当中对我们有用的挑出来:

D: opening   db environment   /var/lib/rpm/Packages joinenv
D: opening   db index         /var/lib/rpm/Packages rdonly mode=0x0
D: locked    db index         /var/lib/rpm/Packages
D: opening   db index         /var/lib/rpm/Pubkeys rdonly mode=0x0
warning: alsaplayer-0.99.76-2.2.fc4.i386.rpm: Header V3 DSA signature: NOKEY, key ID e42d547b
D: opening   db index         /var/lib/rpm/Providename rdonly mode=0x0

# 以上是打开RPM数据库

D: added binary package [0] # 增加一个软件包
D: found 0 source and 1 binary packages  # 没有找到源文件,但是找到一个二进制软件包
D: opening   db index         /var/lib/rpm/Depends create mode=0x0
D: opening   db index         /var/lib/rpm/Basenames rdonly mode=0x0
D: read h#   1166 Header sanity check: OK # 读取h#,文件头完整性检查:OK
D: read h#   161 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: /bin/sh          YES (db files)
D: Requires: /bin/sh          YES (cached)
D: read h#   88 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: libFLAC.so.7     YES (db provides)
D: read h#   95 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: libGL.so.1       YES (db provides)
D: Requires: libOggFLAC.so.3  YES (db provides)
D: read h#   48 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: libX11.so.6      YES (db provides)
D: read h#       49 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: libXext.so.6     YES (db provides)
D: read h#       54 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: libXi.so.6       YES (db provides)
D: read h#      398 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: libasound.so.2   YES (db provides)

# 看来 h# 的要求没有办法被满足,输出错误的依赖关系

error: Failed dependencies:
libid3tag.so.0 is needed by alsaplayer-0.99.76-2.2.fc4.i386
libmad.so.0 is needed by alsaplayer-0.99.76-2.2.fc4.i386
libsndfile.so.1 is needed by alsaplayer-0.99.76-2.2.fc4.i386
libsndfile.so.1(libsndfile.so.1.0) is needed by alsaplayer-0.99.76-2.2.f c4.i386
libxosd.so.2 is needed by alsaplayer-0.99.76-2.2.fc4.i386

# 下面是关闭数据库

D: closed   db index        /var/lib/rpm/Pubkeys
D: closed   db index        /var/lib/rpm/Conflictname
D: closed   db index        /var/lib/rpm/Providename
D: closed   db index        /var/lib/rpm/Basenames
D: closed   db index        /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: May free Score board((nil))

由此可以粗略的知道 RPM 的工作方式:

  1. 打开 RPM 数据库
  2. 从软件包中提取 h#,并且检查 h# 的要求条件是否被满足? 是:转第 4 步 不是:转第 3 步
  3. 显示失败信息以及需要的依赖关系
  4. 安装软件,解压缩软件包,并且放到合适的位置
  5. 关闭 RPM 数据库

显然,我的电脑环境并不能满足安装该软件包所需要的依赖关系,如果强制用 --force 安装的话可能出错误。如果你失败了,那就少什么补什么,然后再安装。

关注
打赏
1661566967
查看更多评论
立即登录/注册

微信扫码登录

0.0400s