linux操作系统rpm软件包管理

软件包管理

软件包运行环境:

API:Application Programming Interface
    使用标准:POSIX:
    源代码运行步骤:预处理(如处理注释)—>编译成汇编代码—>链接其他库文件

ABI:application binary interpace
        file命令可以查看ABI接口类型
    file 文件名
Linux与windows的ABI接口不同
    Linux运行windows二进制文件:安装wine
    windos运行Linux二进制文件:Cywin

包管理器:

功能:将编译好的应用程序的组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作
二进制文件组成部分
    二进制文件、库文件、配置文件、帮助文档
程序包管理:
    debian:deb文件,dpkg包管理器
    redhat:rpm文件,rpm包管理器
    rpm:rpm Package Manager
1、包文件组成 (每个包独有)    RPM包内的文件    RPM的元数据,如名称,版本,依赖性,描述等    安装或卸载时运行的脚本2、数据库(公共)
    程序包名称及版本    依赖关系    功能说明    包安装后生成的各文件路径及校验码信息

rpm包命名方式

    8.png

举例:gd-devel-2.0.35-11.el6.x86_64.rpm

gd是这个包的主包名,devel是这个包的分包名,2.0.35是表示版本信息,2为主版本号,0表示次版本号,35为源码包的发行号也叫修订号,

11.el6中的11是rpm的发行号,el6表示RHEL6,x86_64是表示适合的平台。

常见的arch:
x86: i386, i486, i586, i686 ,x86_64: x64, x86_64, amd64,powerpc: ppc
跟平台无关: noarch

包分类

    主包 :application-version-ARCH.rpm

    开发包:application-devel…

    工具包:application-utils…

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

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

包安装路径:rpm包在安装时自动根据FHS将文件安装在指定目录下无需手动干预

编译安装:编译安装可以手动更改安装路径

程序包来源:

    (1) 系统发版的光盘或官方的服务器;
    CentOS镜像:
    https://www.centos.org/download/
    http://mirrors.aliyun.com
    http://mirrors.sohu.com
    http://mirrors.163.com
    (2) 项目官方站点
    第三方组织:
    Fedora- EPEL:Extra Packages for Enterprise Linux
    Rpmforge:RHEL推荐,包很全
    搜索引擎:
    http://pkgs.org
    http://rpmfind.net
    http://rpm.pbone.net
    https://sourceforge.net/

    (4) 自己制作
    注意:检查其合法性: 来源合法性,程序包的完整性

库文件

    
    
    什么是库文件:一种可执行代码的二进制+形式,可以被操作系统载入内存执行。库文件是别人写好的、成熟的可复用的代码,应用程序运行时直接加载调用即可。
  库文件分类 
     
      静态库
     .a结尾
     编译时直接加载   
      
    动态库
     .so结尾
       在应用程序运行时加载
    
    查看二进制文件依赖的所有库文件:ldd 二进制文件    
    管理及查看本机装载的库文件:   
    ldconfig    
    /sbin/ldconfig - p: 显示本机已经缓存的所有可用库文件名及文件路径映射关系    
    配置文件: /etc/ld.so.conf, /etc/ld.so.conf.d/*. conf    
    缓存文件: /etc/ld.so.cach

rpm包管理

CentOS系统上使用 rpm命令管理程序包:
安装

rpm -i|–install 包文件 

  -v:显示安装详细信息

  -vv:显示更详细的安装信息

  -h:以#号显示安装进度

 1.png

–test:测试安装但不是真的安装

–nodeps:忽略安装依赖关系

–replacepkgs:覆盖安装,所有和软件相关的包都重新安装

–replacefiles:覆盖文件,比如软件A和软件B需要相同的文件的时候,软件A安装了,再安装软件B可能出现出现文件已存在

–nosignature:不检查包的完整性

2.png

    

卸载

升级
    install -U(update)  包名:如果有老版本就升级,如果没有老版本则安装
    install -F (freshen) 包名:如果有老版本就升级,如果没有老版本则不执行升级操作
    --oldpackage:降级,当前系统中已经安装的软件的版本大于要安装的软件版本时,会不能安装,需要添加此选项
    --force:强制升级,比如出现文件冲突等可使用者选项
内核升级:
    注意:
    (1) 不要对内核做升级操作; Linux支持多内核版本并存,因此,对直接安装新版本内核
    
        (rpm -ivh 新内核文件安装包)
        
    (2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本  的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而
    把新版本的文件重命名 (FILENAME.rpmnew)后保留

查询

rpm -q[其他选项]
    其他选项:
    -a:查询所有的安装 |rpm -qa
    -f:查询文件由哪个程序包安装生成
    - p rpmfile:针对尚未安装的程序包文件做查询操作;
    -- whatprovides CAPABILITY:查询指定的功能由哪个包所提供
    --whatrequires  capability :查询指定的功能被哪个包依赖
    --changelog :查寻已经安装的包的更改日志 :rpm -q --changelog vsftpd
    -c :查询已安装包的配置文件    rpm -q -c vsftpd
    -d :查询程序的文档
    -i :查询安装信息
    - l: 查看指定的程序包安装后生成的所有文件
    -- scripts:程序包自带的脚本片断
    - R: 查询指定的程序包所依赖的功能
    --provides :程序包所提供的功能

3.png

5.png

卸载:

    rpm -e 包名

校验:

   定义:校验已经安装包的文件是否发生改变,不发生改变时无显示结果
    rpm -V 包名
   
    不同改变显示不同的结果
    S file Size differs
    M Mode differs (includes permissions and file type)
    5 digest (formerly MD5 sum) differs
    D Device major/minor number mismatch
    L readLink(2) path mismatch
    U User ownership differs
    G Group ownership differs
    T mTime differs
    P capabilities differ

    7.png

包校验:

    包来源合法性验正及完整性验正:
        完整性验正: SHA256
        来源合法性验正: RSA
    公钥加密:
        对称加密:加密、解密使用同一密钥;
        非对称加密:密钥是成对儿的
        public key: 公钥,公开所有人
        secret key: 私钥, 不能公开
   
    默认情况下操作系统无对包进行检测的能力,需要导入所需要公钥:
        rpm - K|--checksig rpmfile 检查包的完整性和签名
        rpm -- import /etc/pki/rpm- gpg/RPM- GPG- KEY- CentOS- 7
        CentOS 7发行版光盘提供: RPM- GPG- KEY- CentOS- 7
    卸载导入的公钥
        rpm -qa gpg- pubkey*
        rpm -e    gpg-pubkey-f4a80eb5-53a7ff4b

    6.png

    

数据库维护

    存放包安装信息数据库文件

        /var/lib/rpm

     rpm {– initdb| — rebuilddb}
        initdb: 初始化
        如果事先不存在数据库,则新建之
        否则,不执行任何操作
        rebuilddb:重建
        无论当前存在与否,直接重新创建数据库

   

原创文章,作者:wangnannan,如若转载,请注明出处:http://www.178linux.com/36500

(0)
wangnannanwangnannan
上一篇 2016-08-22 09:30
下一篇 2016-08-22 09:30

相关推荐

  • Linux发展史

    适用对象:本文适合希望开始学习以及想了解Linux的朋友阅读。本文中所有内容仅供参考,不作为科学依据。 一、      Linux的起源 最初的计算机其实是具有单一功能的大型计算器,只能完成指定或者设定好的工作。多数情况下计算机资源是处于空闲状态的,为了不使资源浪费,就需要使计算机能够或者可以进行多种工作。或…

    Linux干货 2016-10-14
  • 系统启动和内核管理(一)

    系统启动和内核管理(一)   (以CentOS5/6为例) 一、Linux的组成: 1、Linux:kernel+rootfs kernel:进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能。 rootfs:程序和glibc 库:函数集合,function,调用接口(头文件负责描述); 过程调用,procedure,无返回值; 函数调用,…

    Linux干货 2016-09-10
  • bash-条件测试

                     条件测试 1.条件测试           判断某需求是否满足,…

    Linux干货 2016-08-12
  • Http协议中的各种长度限制总结

    HTTP1.0的格式 request(HTTP请求消息)结构:一个请求行.部分消息头,以及实体内容,其中的一些消息内容都是可选择的.消息头和实体内容之间要用空行分开. GET /index.html HTTP/1.1 //请求头,下面都是消息头.Accept: */*Accept-Languang:en-usConnection:keep-aliveHost…

    Linux干货 2015-04-04
  • 第七周-磁盘管理、RAID及Shell脚本练习

    一、创建一个10G分区,并格式为ext4文件系统; (1)、 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; (2)、挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@N1 ~]# mkfs.ext4 -b 2048 -m 2 -L MYDATA /…

    Linux干货 2017-08-13