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

相关推荐

  • shell脚本编程入门

    什么是shell脚本,其实,shell脚本就是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与命令(包含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能等这些命令的组合起来,以达到我们所想要的目的。 程序编程风格有两种: 过程式:以指令为中心,数据服务于指令。 对象式:以数据为中心,指令服务于数据。 过程…

    Linux干货 2016-08-18
  • 安装CentOS6.8操作系统

        工具:     VMware Workstation 12     http://www.vmware.com/cn/products/workstation/workstation-evaluation.html  &n…

    Linux干货 2016-08-04
  • iptables/netfilter从入门到进阶(Blog 17)

    博客作业:iptables/netfilter入门到进阶;

    2017-12-20
  • Linux DNS服务系列之原理介绍及正反向解析配置

    前言 我们在访问一个网站的时候,只要输入该网站的网址就会跳转到该网站页面,而实现这一过程就需要DNS服务器将域名解析为IP地址,进而实现数据通信。那么DNS服务器是如何工作的呢?本系列分为两部分,本文将详解DNS服务原理及正反向解析配置。 DNS服务原理详解 DNS相关知识 DNS:Domain Name Service,域名解析服务 监听端口:udp/53…

    Linux干货 2015-04-13
  • MAN 手册各章节功能介绍及快捷键键位整理

    MAN 手册各章节功能介绍及快捷键键位整理 前言  Man 手册页(Manua pages ,缩写man page) 是在linux操作系统在线软件文档的一种普遍形式。内容包括计算机程序库和系统调用等命令的帮助手册。  手册页是用troff排版软件包排版的,是一组man宏。当时手册页系统带来的联机文档可用性被认为是一项伟大的进步。时至今日…

    Linux干货 2016-10-17
  • 初学Linux之文本处理工具和正则表达

    1、各种文本工具来查看、分析、统计文本 
    2、grep 
    3、正则表达式和扩展正则表达式 
    4、egrep

    2017-12-09