Linux软件包管理及RPM包管理

Linux系统软件包管理介绍

本节索引

  • 软件包基础

  • RPM包管理

Linux发行版中附带有成千上万的可用包,其中包括了Internet工具、开发工具、办公工具、游戏等,如果

你没有选择完整安装,则只会安装这些包的“子集”,如何安装包,如何删除不想要的包,如何安装遗漏的

包,学习Linux系统的软件包管理将解决你的这些问题。

一、软件包基础

软件运行环境:

程序员代码–>预处理–>编译–>汇编–>链接

静态编译:.a

动态编译:.so

包管理器:

二进制应用程序的组成部分

二进制文件、库文件、配置文件、帮助文件

包命名:

源代码:name-VERSION.tar.gz|bz2|xz

包之间:可能存在依赖性关系,甚至循环依赖

解决依赖包管理工具:

yum:rpm包管理器的前端工具

apt-get:deb包管理器前端工具

zypper:suse上的rpm前端管理工具

dnf:Fedora 18+ rpm包管理器前端管理工具

程序包管理器:

debian:deb文件,dpkg包管理器

redhat:rpm文件,rpm包管理器

rpm:Redhat Package Manager

二、RPM包管理

RPM 全名是 ” RedHat Package Manager ” 简称则为 RPM 啦!顾名思义,当初这个软件管理的机制是由 Red Hat 这家公司发展出来的。 RPM 是以一种数据库记录的方式来将你所需要的软件安装到Linux 系统的一套管理机制。

RPM本质上就是一个包,包含可以立即在特定机器体系结构上安装和运行的Linux软件。最初加载到发行版本中的所有软件都是通过一个RPM来安装的。

RPM 剖析:

RPM是文件包,它包括关于包及其功能和依赖关系(即在该包能够运行之前必须安装

其他哪些包)的信息。还包含包中的文件清单,指定这些文件必须加载到系统中的何

处,以及它们的初始权限如何。RPM还包含安装前脚本,这是由包开发人员编写的。

RPM其次还包含已编译的二进制文件。最后,RPM包含了安装后的脚本。

RPM的优点

  1. 由于已经编译完成并且打包完毕,所以软件传输与安装上很方便 (不需要再重新编译);

  2. 由于软件的信息都已经记录在 Linux 主机的数据库上,很方便查询、升级与反安装

rpm包格式:

程序报名-版本号-打包号.操作系统号.架构.rpm如:vsftpd-3.0.2-21.el7.x86_64.rpm

如何查看rpm包架构

# 第一种方法
ls *.rpm |rev|cut -d. -f2|rev|sort | uniq -c
   1337 noarch
   2494 x86_64

# 第二种方法
ls *rpm |egrep -o "[^.]+\.rpm" | cut -d. -f1 |sort |uniq -c
   1337 noarch
   2494 x86_64

包里面内容:

  • path/files 要安装的文件和相对路径
  • metadata 元数据
  • scripts 脚本(安装前脚本、安装后脚本、卸载前脚本、卸载后脚本)

程序包的来源

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

    CentOS官网:https://www.centos.org/download/
    阿里云:http://mirrors.aliyun.com
    网易:http://mirrors.163.com

  2. 项目官方站点

    举几个例子:

    https://grafana.com/grafana/download

    https://portal.influxdata.com/downloads#influxdb

  3. 第三方组织

    Fedora-EPEL:

    Extra Packages for Enterprise Linux

    基本上镜像站都提供epel源。

  4. 搜索引擎:

    http://pkgs.org

    http://rpmfind.net

    http://rpm.pbone.net

    https://sourceforge.net/

  5. 自己制作

注意:第三方包建议要检查其合法性

包来源合法性验证和完整性验证:

来源合法性验证:

数字签名:制作者提取加密程序包的特征码,然后将自己的私钥加到特征码后面

完整性验证:获取并导入新人的包制作者的秘钥

格式:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-7

验证:

(1) 安装此组织签名的程序时,会自动执行验证;

(2) 手动验证:rpm -K PACKAGE_FILE

rpm使用方法

  • 安装卸载

    -i:install ,安装
    -v:verbose,显示详情
    -h:显示进度条
    -e:erase,删除(卸载)
    -U upgrade,升级
    --force强制安装(不能用于强制卸载)
    --test: 测试安装,不真正执行安装。
    --nodeps:忽略依赖性(一般不忽略)
    --oldpackage 降级安装(一般不降级)
    

内核安装默认是不覆盖安装的,装了多个kernel,可以修改grub.conf修改默认启动内核顺序。可以rpm -e卸载旧的kernel

  • 查询

    rpm -q PackageName查询某个包
    rpm -qa 查询已安装的所有包
    rpm -qa |grep xxx 模糊过滤
    rpm -qf FILE 硬盘上的文件(file)是来自于哪个rpm包(可以是二进制程序,也可以是配置文件等)
    rpm -qi xxx.rpm 查询安装包详细信息(information)
    rpm -ql xxx.rpm 查看某个包安装后在系统里的所有文件
    rpm -qc xxx 查询安装包后的配置(config)文件位置
    rpm -q --scripts查询程序自带的脚本
    
  • rpm校验 (只能校验已安装的包)
    rpm {-V|–verify} [select-options] [verify-options]

      S :(file Size differs) 文件的容量大小是否被改变
      M :(Mode differs) 文件的类型或文件的属性 (rwx) 是否被改变?如是否可执行等参数已被改变
      5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
      D :(Device major/minor number mis-match) 装置的主/次代码已经改变
      L :(readLink(2) path mis-match) Link 路径已被改变
      U :(User ownership differs) 文件的所属人已被改变
      G :(Group ownership differs) 文件的所属群组已被改变
      T :(mTime differs) 文件的建立时间已被改变
      P :(caPabilities differ) 功能已经被改变
    

RPM数据库重建:

rpm管理器数据库路径:/var/lib/rpm/

查询操作:通过此处的数据库进行

获取帮助:

    CentOS 6:man rmp

    CentOS 7:man rpmdb



rpm {–initdb | –rebuilddb}

–initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时不执行任何操作

–rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建通过读取当前系统上所有已经安装过的程序包进行重新创建;

你可能感兴趣的:(linux)