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)
上一篇 2016-08-22 09:30
下一篇 2016-08-22 09:30

相关推荐

  • 2016.08.04学习笔记

    文本管理工具     1.cat:查看文件,读取键盘输入         -A:查看文件所有信息         -n:显示行数   &nb…

    Linux干货 2016-08-08
  • 高级文件系统的管理

    一、迁移分区 分区 /dev/sda6 注意同步问题  创建分区,把原先家目录下的文件拷贝到新挂载的文件中 mkfs.ext4 /dev/sda6  mkdir /mnt/home mount /dev/sda6 /mnt/home cp -a /home/*  /mnt/home   init 1 切换单用户模式,把…

    Linux干货 2016-11-27
  • 如何自建系统内部 yum 仓库

       准备:     a.素材:一套centos6.9和一套centos7.3的ISO镜像光盘     环境:1.centos6.9和centos7.3,安装好的系统各一套(土豪随意 )     b.建立前请关闭防火墙,防止防火墙的干扰     &n…

    2017-08-05
  • Linux的文件系统的基础目录、帮助、部分命令介绍

    Linux的文件系统的基础目录、帮助、部分命令介绍 目录 linux基础目录 Linux获取帮助 相关控制命令,翻屏等 部分命令介绍 linux的基础目录 Bin: 共所有用户使用的基本命令,就是二进制程序 Sbin:系统的二进制程序。供管理员使用的 Boot:基本的加载器,引导加载器所依赖的各种静态文件 Dev:设备文件和特殊文件 其中设备分为两种类型,字…

    Linux干货 2016-10-29
  • 使用vim编辑器进行编程

    1.首先需要配置vim的语法风格,具体操作如下 # vim /etc/vimrc set nu 这是设置显示行号** set showmode 设置在命令行界面最下面显示当前模式等。 set ruler 在右下角显示光标所在的行数等信息 set autoindent 设置每次单击Enter键后,光标移动到下一行时与上一行的起始字符对齐 set ts=4 注:…

    2017-04-09
  • 马哥教育网络班22期+第九周课程练习

    1. 写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash#declare -a loginuserdeclare -i sum_login=0declare -i sum_nologin=0list=($(cat /et…

    Linux干货 2017-01-03