Linux基础之RPM软件包的管理

一、软件包的命名和工具

包命名和包管理工具

  • Application-VERSION-ARCH.rpm: 主包
  • Application-devel-VERSION-ARCH.rpm 开发子包
  • Application-utils-VERSION-ARHC.rpm 其它子包
  • Application-libs-VERSION-ARHC.rpm 其它子包

因为包与包之间会产生依赖关系,所以解决依赖关系的包管理工具就诞生了:

- yum :rpm 包管理器的前端工具
- apt-get :deb 包管理器前端工具
- zypper: suse 上的rpm 前端管理工具
- dnf: Fedora 18+ rpm

库文件

  • 查看二进制程序所依赖的库文件

      ldd /PATH/TO/BINARY_FILE
    
  • 管理及查看本机装载的库文件

      ldconfig  加载库文件
      /sbin/ldconfig -p:  显示本机已经缓存的所有可用库文件
    
  • 名及文件路径映射关系

      配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
      缓存文件:/etc/ld.so.cache
    

二、程序包的来源

(1) 系统发版的光盘或官方的服务器;

CentOS 镜像:

https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com

(2) 项目官方站点

https://www.kernel.org/
http://httpd.apache.org/
...

(3) 第三方组织:
Fedora-EPEL:Extra Packages for Enterprise Linux

Rpmforge:RHEL 推荐包很全

搜索引擎 :

http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/

三、rpm包管理

CentOS 系统上使用rpm 命令管理程序包:
安装、卸载、升级、查询、校验、数据库维护
安装:

rpm {-i|--install} [install-options] PACKAGE_FILE…
    -v: verbose
    -vv:
    -h:以#显示程序包管理执行进度
rpm -ivh PACKAGE_FILE ...
 [install-options]
    --test:  测试安装,但不真正 执行安装,即dry run 模式
    --nodeps :忽略依赖关系
    --replacepkgs | replacefiles
    --nosignature:  不检查来源合法性
    --nodigest :不检查包完整性
    --noscripts :不执行 程序包脚本
    %pre: ; 安装前脚本; --nopre
    %post: ; 安装后脚本; --nopost
    %preun: ; 卸载前脚本; --nopreun
    %postun:  卸载后脚本; --nopostun

包升级:

rpm {-U|--upgrade} [install-options]  PACKAGE_FILE ...
rpm {-F|--freshen} [install-options]  PACKAGE_FILE ...
    upgrade :安装有旧版程序包,则“升级”如果不存在旧版程序包,则“安装”
    freshen:安装有旧版程序包,则“升级”如果不存在旧版程序包,则不执行升级操作
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
    --oldpackage :降级
    --force: 强制安装

注意:

(1) 不要对内核做升级操作;Linux 支持多内核版本并存,因此,对直接安装新版本内核

(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)

包查询

rpm {-q|--query} [select-options] [query-options]
[select-options]
    -a:  所有包
    -f:查看指定的文件由哪个程序包安装生成
    -p rpmfile:针对尚未安装的程序包文件做查询操作
    --whatprovides CAPABILITY:查询指定的 CAPABILITY由哪个包所提供
    --whatrequires CAPABILITY:查询指定的 CAPABILITY 被哪个包所依赖
rpm2cpio  包文件|cpio –itv 预览包内文件
rpm2cpio  包文件|cpio –id “*.conf” ”  释放包内文件

推荐阅读更多精彩内容