• Linux 入门记录:十九、Linux 包管理工具 RPM


    一、源代码管理

    绝大多数开源软件都是直接以源代码形式发布的,一般会被打包为 tar.gz 的归档压缩文件。程序源代码需要编译为二进制可执行文件后才能够运行使用。源代码的基本编译流程为:

    1. ./configure:解压缩后运行该命令,它主要检查编译环境、相关库文件以及配置参数并生成 makefile
    2. make:对源代码进行编译,生成可执行文件
    3. make install:将生成的可执行文件安装到计算机中

    源代码形式的软件使用起来较为麻烦,但是兼容性和可控性较好。并且开源软件一般会大量使用其他开源软件的功能,所以开源软件会有大量的依赖关系(使用某软件需要先安装其他软件)。

    二、RPM(RPM Package Manager,RPM包管理器)

    使用源代码形式安装软件的优点是适用于所有系统、可定制,而缺点则是操作复杂、编译时间较长、极容易出现错误。为了方便使用,Erik Troan 和 Marc Ewing 开发了 RPM(RPM Package Manager,RPM 包管理器),RPM 最早是应用在 RedHat(红帽)中的。

    1.设计目标

    RPM 通过将源代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。RPM 的设计目标如下:

    • 使用简单
    • 使用单一软件包格式文件发布(.rpm 文件)
    • 可升级
    • 追踪软件依赖关系
    • 基本信息查询
    • 软件验证功能
    • 支持多平台

    2.命名规范

    packagename-1.2.0-30.el6.x86_64.rpm

    包名-版本号-操作系统-硬件平台

    其中,

    操作系统:el6 表示 RedHat 6.x 或 CentOS 6.x 操作系统。

    硬件平台:x86_64 表示 64 位平台,i386 表示 32 位平台,noarch 表示不需要特定的硬件平台(跨平台)。

    3.基本命令

    安装包:

    安装包:rpm -i packagename.rpm

    卸载包:

    rpm -e packagename

    升级包:

    rpm -U packagename-new.rpm

    通过 http、ftp 协议安装:

    rpm - ivh http://www.domainname.com/packagename.rpm

    常用参数:

    -v    显示详细信息
    -h    显示进度条
    -i    安装包
    -e    卸载包
    -U    更新(升级)包
    -q    查询
    -a    查询所有已安装包
    -i    显示包信息
    -h    取hash(哈希)
    -f    查询文件属于哪个包
    -p    未安装包的信息
    -l    列出包里的文件

     

    三、RPM查询

    rpm -qa                     列出已安装的所有rpm包
    rpm -qa | grep '.*gnome.*'  列出所有名称含有gnome的包
    
    rpm -qf filename            查询目标文件属于哪个包
    
    rpm -qi package             获取一个已安装包的相关信息
    rpm -qip package.rpm        获取一个未安装包的相关信息
    
    rpm -ql package             获取一个已安装包内的文件列表
    rpm -qlp package.rpm        列出一个未安装包内的文件列表
    

      

    四、RPM验证

    软件包在传播的过程中可能会被恶意地修改,所以为了安全起见,现代系统都加入了对软件包的验证功能。

    验证一般使用非对称加密算法,所以需要一个公钥。导入公钥的方法是:

    rpm --import /path/to/key_file

    验证未安装的软件包:

    rpm -K package.rpm

    验证已安装的软件包:

    rpm -V package
    

      

     

    参考链接:

    Linux中RPM包命名规则

    YUM 公钥认证及导入

  • 相关阅读:
    Appium的三种启动方式(转载)
    select单选框和多选框设置默认值
    JavaScript获取到ModelAndView的对象
    Selenium+PageObject+Java实现测试用例
    2017ACM-ICPC 青岛 K.Our Journey of Xian Ends
    Django简单数据库交互演示
    简单树刨+线段树模板 877E
    ACM 二维离散化模板 hdu5925
    code::blocks配置头文件#include<bits/stdc++.h>
    百度之星初赛b
  • 原文地址:https://www.cnblogs.com/mingc/p/7624453.html
Copyright © 2020-2023  润新知