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的简介

    Linux的简介 冯诺依曼体系结构 主要特点:使用存储器,采用二进制(据说,采用二进制的灵感来源于中国的八卦,2变4,4变8…) 体系介绍:其由几大部分组成,输入设备,运算器,控制器,内部存储器,外部存储器,输出设备。 目前,输入设备就是指键盘鼠标, 运算器和控制器现在统称CPU。其实已经内置了两个功能。 内部存储器就是内存,某种意义上,缓存也算…

    Linux干货 2016-10-28
  • Linux上bash的部分基础特性:

    命令补全: tab      shell程序在接收到用户执行命令的请求,分析完成后,最左侧的字符串会被当做命令 命令查找机制:     查找内部命令:     根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名 &n…

    Linux干货 2017-03-28
  • 实现NFS为lamp环境web站点提供共享存储

    1.实验需求 (1)nfs server导出/data/application/web,在目录中提供wordpress; (2)nfs client挂载nfs server导出的文件系统,至/var/www/html; (3)客户端1(lamp)部署wordpress,并让其正常访问,要确保正常发文章,上传图片。 (4)客户端2(lamp),挂载nfs se…

    Linux干货 2017-05-02
  • 网络管理

    网络概念 网络应用程序 Web 浏览器(Chrome、IE、Firefox等) 即时消息(QQ、微信、钉钉等) 电子邮件(Outlook、foxmail 等) 协作(视频会议、VNC、Netmeeting、WebEx 等) web网络服务(apache,nginx,IIS) 文件网络服务(ftp,nfs,samba) 数据库服务( MySQL,MariaDB…

    Linux干货 2017-05-06
  • 程序包管理初步

    升级:       rpm {-U|–upgrade} [install-options] PACKAGE_FILE …                -U:升级或安装;       rpm {-…

    Linux干货 2016-12-31
  • Shell脚本编程之入门基础(一)

    Shell脚本编程   一、本章节一内容:    编程基础    脚本基本格式    变量    运算    条件测试   在本章节开始之前,我们先回顾下前面的知识点内容。前面学习了Linux的基础入门,了解到计算机是运行二进制指令的,而我…

    Linux干货 2016-08-12