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
下一篇 2016-08-22

相关推荐

  • Linux小工具之cheat

    随着linux学习的深入,接触到的命令越来越多,此时,考验脑力的时候就到了,除非你是”脑王”,否则面对多如牛毛的linux命令,真的会崩溃!linux前辈们貌似也被同样的问题所困扰,所以,他们发明了cheat。cheat是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但…

    2017-08-10
  • 浅谈netbios及其相关内容

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/141086        Netbios想必大家都有接触。对于netbios的理解,我以前…

    Linux干货 2015-03-26
  • N26-第二周博客作业

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 一) 目录管理命令 1. cd :用于切换目录。命令格式为:cd dirname 命令使用技巧: ~]# cd 进入用户主目录 ~]# cd – 进入上一次所在目录 ~]# cd / 进入根目录 ~]# cd ~ 进入用户主目录 ~]# cd .. 返回上一级…

    2017-03-01
  • 手动创建挂载交换分区

    SWAP分区 SWAP [root@cloud ~]# fdisk /dev/sdb Command (m for help): d Selected partition 1 Command (m for help): w The…

    Linux干货 2016-06-09
  • Linux磁盘与文件系统管理的一些命令

    fdisk fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面,而非类似DOS fdisk的cfdisk互动式操作界面,因此在使用上较为不便,但功能却丝毫不打折扣。 输入m列出可以执行的命令 p:显示磁盘分区表 n:new,新建分区 d:delete,删除分区 t:更改系统类型 l:列出已知分区类型 w:保存并退出 q:不保存退出…

    Linux干货 2017-04-23
  • 马哥linux运维26期开班感悟

         今天的收获,有以下几点      1.自己的公众演说能力很弱,要多多练习,给自己更多的机会。     2.自己想提升自己的心很强,但是自己却不知道该怎么做?     3.即便学完了也只是一个开始,希望自己有一颗归零的心态。

    Linux干货 2017-07-10