广告
返回顶部
首页 > 资讯 > 操作系统 >Linux系统程序包管理之rpm
  • 172
分享到

Linux系统程序包管理之rpm

2024-04-02 19:04:59 172人浏览 安东尼
摘要

Linux系统程序包管理之rpm==============================================================================概述: 

Linux系统程序包管理之rpm

==============================================================================

概述:

  本章内容:软件的运行环境,软件包基础,rpm包管理,yum管理,定制yum仓库,编译安装

==============================================================================

软件运行环境

api:Application Programming Interface (应用程序开发接口)

POSIX:Portable OS(国际标准)

  • 程序源代码--> 预处理--> 编译--> 汇编--> 链接

★ABI:Application Binary Interface(应用二进制程序接口)

windowslinux不兼容

  • linux:文件格式:ELF(Executable and Linkable FORMat)

  • win:文件格式:exe,msl PE(Portable Executable)

库级别虚拟化

  • Linux:WINE(提供模拟windows的库,运行win环境)

  • Windows:Cywin(提供linux的运行环境)

★开发语言:

系统级开发:

应用级开发:

★程序格式

c/c++

  • 源代码:文本格式的程序代码;

  • 编译开发环境:编译器,头文件,开发库

  • 二进制格式:文本格式的程序代码-->编译器-->二进制格式(二进制程序、库文件、配置文件、帮助文件)、

java/Python

  • 源代码:编译能够在其虚拟机(jvm/pvm)运行的格式;

  • 开发环境:编译器、开发库;

  • 二进制

项目构建工具

包管理

 1.概述:

★二进制应用程序的组成部分:

  • 二进制文件、库文件、配置文件、帮助文件

程序包管理:

  • 源代码-->目标二进制格式(二进制程序、库文件、配置文件、帮助文件)-->组织成为一个或有限几个“包文件”(安装,升级,卸载,查询,校验)

程序包管理器:

  • deblan:dpt,dpkg  以".deb"后缀;

  • redhat:rpm (redhat package manager) 以 ".rpm"后缀 ;

  • S.u.S.E:rpm, ".rpm"命令

包命名格式

源代码:name-VERSION.tar.gz|bz2|xz

  • ERSION: major(主版本号).minor(次版本号).release(发行号)

rpm包命名格式:name-VERSION-release.arch.rpm

  • VERSION:major.minor.release.arc

  • release:rpm包发行号

  • changelog文档(内容修复改进的相关文档)

  • 常见的arch:

      x86: i386, i486, i586, i686

      x86_64: x64, x86_64, amd64powerpc: ppc

      跟平台无关:noarch (适用于所有平台)

Linux系统程序包管理之rpm


示例:

bash-4.2.46-19.el7.x86_64.rpm

release:release.OS

包:分类和拆包

  • Application-VERSION-ARCH.rpm:主包

  • Application-devel-VERSION-ARCH.rpm:开发子包

  • Application-utils-VERSION-ARHC.rpm:其它子包

  • Application-libs-VERSION-ARHC.rpm:其它子包

Linux系统程序包管理之rpm

包之间:可能存在依赖关系,甚至循环依赖

     自动解决依赖包管理前端工具:

  • yum:rpm包管理器的前端工具;

  • apt-get:deb包管理器前端工具;

  • zypper:suse上的rpm前端管理工具;

  • dnf:Fedora 18+ rpm包管理器前端管理工具

 2.库文件:

★查看二进制程序所依赖的库文件:

  • ldd /PATH/TO/BINARY_FILE

管理及查看本机装载的库文件:

  • ldconfig;

  • /sbin/ldconfig-p: 显示本机已经缓存的所有可用库文件名及文件路径映射关系

  • 配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

  • 缓存文件:/etc/ld.so.cache

 3.包管理器:

★程序包管理器:

功能:

  • 将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作

程序包的组成清单:(每个程序包单独实现)

  • RPM包内的文件清单

  • RPM的元数据,如名称,版本,依赖性,描述等

  • 安装或卸载时运行的脚本

数据库(公共)

    路径:/var/lib/rpm

  • 程序包名称及版本;

  • 依赖关系;

  • 功能说明;

  • 包安装后生成的各文件路径及校验码信息

 3.程序包的来源:

★管理程序包的方式:

  • 使用包管理器:rpm

  • 使用前端工具:yum, dnf

★获取程序包的途径:

系统开发版的光盘或官方的服务器(或Centos镜像站点)

  • https://www.centos.org/download/

  • http://mirrors.aliyun.com

  • http://mirrors.sohu.com

  • http://mirrors.163.com

项目官方站点

第三方组织:

Fedora-EPEL:Extra Packages for Enterprise Linux

  • Rpmforge:RHEL推荐,包很全

索引擎:

  • http://pkgs.org;

  • http://rpmfind.net

  • http://rpm.pbone.net;

  • https://sourceforge.net/

自己制作

  • 注意:检查其合法性:来源合法性,程序包的完整性

rpm 命令管理程序包详解

 1.rpm语法及选项概述:

★rpm:

  • 安装、升级、卸载、查询和校验、数据库维护(都是通过rpm命令来实现的)

语法:

  • rpm [OPTIONS] [PACKAGE_FILE]

选项:

  • -i,--install:安装

  • -U,--update,-F,--freshen:升级

  • -e,--erase:卸载

  • -q,--query:查询

  • -V,--verify:校验

  • --builddb,--initdb:数据库维护

 2.安装及子选项:

★语法:

  • rpm {-i|--install} [install-options] PACKAGE_FILE…

选项:

  • -v:verbose 显示详细信息;

  • -vv:更详细的输出;

  • -h: hash marks 输出进度条;每个#号表示2%的进度

  • --test:测试安装,检查并报告依赖关系及冲突关系,但不真正执行安装;称为dry run(干跑)模式;

  • --nodeps:忽略依赖关系,不建议;

  • --replacepkgs:替代原来的包,重新安装(先把由原来的配置文件删除再重装)

  • --nosignature:不检查包签名信息,不检查来源合法性

  • --nodigest:不检查包完整性

     注意:rpm自带四类脚本(--noscripts)

       %pre:安装前脚本;   --nopre

       %post:安装后脚本;  --nopost

       %preun:卸载前脚本; --nopreun

       %postun:卸载后脚本;--nopostun

真正安装执行操作使用的命令

  • rpm -ivh PACKAGE_FILE

 3.升级及子选项:

★语法:

  • rpm {-U|--upgrade} [install-options] PACKAGE_FILE...

  • rpm {-F|--freshen} [install-options] PACKAGE_FILE...

注意:

  • -U(upgrade):安装有旧版程序包,则“升级”如果不存在旧版程序包,则“安装”

  • -F(freshen):安装有

  • 旧版程序包,则“升级”如果不存在旧版程序包,则不执行升级操作

★升级命令:

  • rpm -Uvh PACKAGE_FILE ...

  • rpm -Fvh PACKAGE_FILE ...

  • --oldpackage:降级(回滚操作)

  • --force: 强行升级

注意:

  • 不要对内核做升级操作;Linux支持多内核版本并存,因此,可以直接安装新版本内核;

  • 如果源程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留。

 4.卸载及子选项:

★作用:

  • 移除已安装的程序包

★语法:

  • rmp {-e|--erase}[--allmatches][--nodeps][--test] PACKAGE_NAME

注意:

  • 卸载和查询是包的名,因为包已经存在了;而安装和升级,包是不存在的,所以是包的文件路径

★简单用法

  • rpm -e PACKAGE_NAME...

选项:

  • --allmatches:卸载所有匹配名称的程序包各版本

  • --nodeps:忽略依赖关系

  • --test:测试卸载,dry run 模式

 5.查询:

★语法:

  • rpm {-q|--query} [select-options] [query-options]

[select-options] 挑选选项

  • -q PACKAGE_NAME:查询某包或某些包是否安装

  • -qa:查询已安装的所有包

  • -qf FILE:查看指定的文件由哪个程序包安装生成

  • -p PACKAGE_FILE:针对尚未安装的程序包文件做查询操作;

  • --whatprovides CAPABILITY(能力):查询指定的CAPABILITY由哪个包所提供

  • --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

  • rpm2cpio 包文件|cpio–itv预览包内文件

  • rpm2cpio 包文件|cpio–id “*.conf”释放包内文件

[query-options] 查询选项

  • --changelog:查询rpm包的changelog(变更记录)

  • -c:查询指定的程序包的配置文件

  • -d:查询程序包安装完成后所生成的帮助文档

  • -qi,-info:程序包相关的信息,版本号,大小,所属的包组等

  • -l,--list:查看指定的程序包安装后生成的所有文件列表;

  • --scripts:查看程序包自带的脚本片断

  • -R,--requires:查询指定的程序包所依赖的CAPABILITY;

  • --provides:列出指定程序包所提供的CAPABILITY

常用组合用法:

  • -qi PACKAGE;-qf FILE;-qc PACJAGE;-ql PACKAGE;-qd PACKAGE ;-qpi PACKAGE_FILE;-qpl PACKAGE_FILE;-qpc PACKAGE_FILE,.. 

演示:

[root@centos7 ~]# rpm -q tree
tree-1.6.0-10.el7.x86_64

[root@centos7 ~]# rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz

[root@centos7 ~]# rpm -qf /etc/fstab 
setup-2.8.71-6.el7.noarch

[root@centos7 ~]# rpm -qc bash
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc

[root@centos7 ~]# rpm -qi bash
Name        : bash
Version     : 4.2.46
Release     : 19.el7
Architecture: x86_64
Install Date: 2016年11月06日 星期日 18时31分30秒
Group       : System Environment/shells
Size        : 3663618
License     : GPLv3+
Signature   : RSA/SHA256, 2015年11月25日 星期三 22时14分53秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : bash-4.2.46-19.el7.src.rpm
Build Date  : 2015年11月20日 星期五 13时04分53秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.gnu.org/software/bash
Summary     : The GNU Bourne Again shell
Description :
The GNU Bourne Again shell (Bash) is a shell or command language
interpreter that is compatible with the Bourne shell (sh). Bash
incorporates useful features from the Korn shell (ksh) and the C shell
(csh). Most sh scripts can be run by bash without modification.

[root@centos7 ~]# rpm -qc httpd
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean
/etc/sysconfig/httpd

[root@centos7 ~]# rpm -qd httpd
/usr/share/doc/httpd-2.4.6/ABOUT_APACHE
/usr/share/doc/httpd-2.4.6/CHANGES
/usr/share/doc/httpd-2.4.6/LICENSE
/usr/share/doc/httpd-2.4.6/NOTICE
/usr/share/doc/httpd-2.4.6/README
/usr/share/doc/httpd-2.4.6/VERSIONING
/usr/share/doc/httpd-2.4.6/httpd-dav.conf
/usr/share/doc/httpd-2.4.6/httpd-default.conf
/usr/share/doc/httpd-2.4.6/httpd-info.conf
/usr/share/doc/httpd-2.4.6/httpd-languages.conf
/usr/share/doc/httpd-2.4.6/httpd-manual.conf
/usr/share/doc/httpd-2.4.6/httpd-mpm.conf
/usr/share/doc/httpd-2.4.6/httpd-multilang-errordoc.conf
/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
/usr/share/doc/httpd-2.4.6/proxy-html.conf
/usr/share/man/man8/apachectl.8.gz
/usr/share/man/man8/fcGIStarter.8.gz
/usr/share/man/man8/htcacheclean.8.gz
/usr/share/man/man8/httpd.8.gz
/usr/share/man/man8/rotatelogs.8.gz
/usr/share/man/man8/suexec.8.gz

 6.校验:

★语法:

  • rpm {-V|--verify} [select-options] [verify-options]

常见用法:

  • rpm -V PACHAGE_NAME

当没有输出结果时表示软件包完整ok,当有相应的结果输出表明对应的内容有修改,及具体如下:

  • 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:mTimediffers 文件的创建时间已被改变;

  • P:capabilities differ 

★包来源合法性验正及完整性验正:

  • 完整性验正:SHA256

  • 来源合法性验正:RSA

获取并导入信任的包制作者的秘钥

  • 对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 

◆验证:

  • 安装此组织签名的程序时,会自动执行验证;

  • 手动验证:rpm -K PACKAGE_FILE

◆加密方法:  

  • 公钥加密:

  • 对称加密:加密、解密使用同一密钥;

  • 非对称加密:密钥是成对儿的

      public key:公钥,公开所有人

      secret key:私钥, 不能公开

◆导入所需要的公钥:  

  • rpm -K |checksigrpmfile:检查包的完整性和签名

  • rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

  • CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7

  • rpm -qagpg-pubkey*

演示:

[root@centos7 ~]# rpm -V httpd
遗漏   c /etc/httpd/conf.d/welcome.conf
S.5....T.  c /etc/httpd/conf/httpd.conf

      

 7.数据库重建:

★rpm数据库路经:

  • /var/lib/rpm

  • 查询操作:通过此处得到数据库进行

★用法:

  • rpm {--initdb|--rebuilddb}

选项:

  • --initdb: 初始化数据库。当前无任何数据库,则新建之;当前有时不执行任何操作。

  • --rebuilddb:重新构建。无论当前存在与否,都会直接重新创建数据库。

获取帮助

  • CentOS6 man rpm

  • CentOS7 man rpmdb 


     

--结束END--

本文标题: Linux系统程序包管理之rpm

本文链接: https://www.lsjlt.com/news/44202.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux系统程序包管理之rpm
    Linux系统程序包管理之rpm==============================================================================概述: ...
    99+
    2022-10-18
  • linux的程序包管理-rpm
        我们知道,程序就是指令加上数据的集合或者称为算法加上数据结构的集合。应用程序以源代码和二进制的形式存在:源代码是包含了整个应用程序的编程语言的所有代码的文本文...
    99+
    2022-10-18
  • linux程序包管理 rpm yum 编译
    rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE] 安装:-i, --install 升级:-U, --update, -F, --freshen 卸载...
    99+
    2022-10-18
  • linux程序包管理--rpm命令管理方式
    1.概述API:Application Program Interface ABI:Application Binary Interface   ...
    99+
    2022-10-18
  • Linux系统程序包管理
    Linux程序包管理 API:Application Program Interface ABI:Application Binary INnterface Unix-like,系统上的二级制格式的应用程...
    99+
    2022-10-18
  • CentOS程序包管理器之rpm前端管理器
    CentOS的程序包管理器:首先,我们要来了解一下程序包(源代码包)的命名规则:software_name-VERSION.tar.gzVERSION:major.minor.releasemajor:主版...
    99+
    2022-10-18
  • Linux学习笔记:rpm程序包管理
    以CentOS为例,rpm程序包管理器的相关内容如下:CentOS的程序包管理器:    程序包的命名规则:       &n...
    99+
    2022-10-18
  • RedHat系Linux中的rpm包管理系统是什么
    这篇文章将为大家详细讲解有关 RedHat系Linux中的rpm包管理系统是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在linux世界里流行两种包管理方式,分别是redhat系的rp...
    99+
    2023-06-10
  • rpm程序包管理器详解
    1. 程序包管理器的功能    我们知道,由程序员编写并提供的程序源代码要转换成目标二进制格式才能在计算机上运行起来,但用户要在平台上使用时需要手动编译安装后才能使用...
    99+
    2022-10-18
  • Linux 入门学习之rpm软件包管理
    Linux入门之软件包管理在linux有很多类的软件包管理机制,但是在redhat、centos这类版本的系统中,都会使用一种相同的机制,就是rpm软件包管理机制,当然,还有其它版本的linux使用的不同机...
    99+
    2022-10-18
  • Linux中如何实现程序包管理与使用rpm命令
    这篇文章主要为大家展示了“Linux中如何实现程序包管理与使用rpm命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中如何实现程序包管理与使用rpm...
    99+
    2022-10-19
  • Linux程序包管理
    Linux程序包管理RPM包基础RPMYUM编译安装概述Linux上的程序包管理,是我们的必备技能,本文将从三个视角:rpm、yum、源码编译来浅析Linux的程序包管理。首先,我们来看下本文的主要内容:-...
    99+
    2022-10-18
  • Linux程序包管理(CentOS)
    二进制应用程序的组成部分:二进制文件、库文件、配置文件、帮助文件程序包管理器:debian:deb, dptredhat: rpm, rpmrpm: Redhat Package Manager(RPM i...
    99+
    2022-10-18
  • linux程序包管理rpm,yum和编译安装以及冒泡排序练习
    linux程序包管理:API:Application Programming InterfacePOSIX:Portable OS程序源代码--> 预处理--> 编译--> 汇编-->...
    99+
    2022-10-18
  • linux系统之进程管理详解
    目录1、进程与线程的概念2、什么是进程管理3、进程管理的作用4、linux进程的几种状态5、进程与线程的关系(1)线程与进程的关系(2)总结1、进程与线程的概念 来源百度百科: 进程(Process) 是计算机中的程序关...
    99+
    2022-06-04
    Linux进程管理及作用 Linux进程管理总结
  • linux程序包管理初步
    Linux程序包管理          我们linux操作系统从底层到高层的层次结构:最底层首先是硬件,计算机的计算...
    99+
    2022-10-18
  • Linux系统如何卸载程序包
    Linux系统可以使用不同的方法来卸载程序包。以下是几种常见的方法:1. 使用包管理器:大多数Linux系统都有自己的包管理器,如a...
    99+
    2023-09-27
    linux
  • Linux系统之部署Linux管理面板1Panel
    Linux系统之部署Linux管理面板1Panel 一、1Panel介绍1.1Panel简介2.1Panel特点 二、本地环境规划1.本此实践目的2.本地环境规划 三、检查本地环境1....
    99+
    2023-08-31
    linux 运维 服务器 1panel Linux管理面板
  • Linux下如何安装程序包管理程序Flatpak
    这篇文章将为大家详细讲解有关Linux下如何安装程序包管理程序Flatpak,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Flatpak是一个程序包管理实用程序,可让您分发,安装和管理软件,而不必担心依赖...
    99+
    2023-06-27
  • 解析linux包管理和系统更新
    1.rpm是一种开放的包管理系统,可以提供快速安装软件包的方式2.rpm不能很好的解决软件包依赖关系,所以出现yum.rpm命令  3.软件包相关安装rpm包一般用rpm -ivh升级软件包一般用rpm -Uvhrpm ...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作