千家信息网

Linux中如何实现程序包管理与使用rpm命令

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"Linux中如何实现程序包管理与使用rpm命令",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Linux中如何实现程序包管理与使用
千家信息网最后更新 2026年11月01日Linux中如何实现程序包管理与使用rpm命令

这篇文章主要为大家展示了"Linux中如何实现程序包管理与使用rpm命令",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Linux中如何实现程序包管理与使用rpm命令"这篇文章吧。

Linux的程序包管理:

程序:指令+数据

程序:算法+数据结构

应用程序的存在形式:

1.源代码:包含了整个应用程序的编程语言的所有代码的文本文件;

2.二进制:将源代码经过一系列的转换操作之后得到的可以直接执行的文件

使用源代码安装应用程序:

预处理(预处理器) --> 编译(编译器) --> 汇编(汇编器) --> 链接(链接器) --> 可以直接执行的二进制程序文件

POSIX:POS,Portable Operating System,可移植操作系统

API:Application Program Interface,应用编程接口

ABI:Application Binary Interface,应用二进制接口

Unix-like:ELF

Windows:exe,msi

库级别的兼容,库级别的虚拟化;

cywin:在Windows系统中模拟Linux的共享库;

WinE:在Linux系统中模拟Windows的库;

应用级编程语言:

Java/Python/Perl/ruby/PHP/GO

Java:hadoop2, hbase, ELK, (JVM)

Python:Openstack, saltstack (PVM)

系统级编程语言:

C/C++

Linux

Unix

源代码编译:需要有编译开发环境支持

C/C++:

编译开发环境:预处理器,编译器,头文件,开发库文件

Java/Python:

编译开发环境:预处理器,编译器,开发库文件

通常情况下:源代码文件是多个,这些文件直接存在着一定的关联关系;我们称这种关联关系为依赖关系;

autoconf

automake

软件项目构建工具:

C/C++:make

Java:maven

Python:buildout

Redhat

程序包管理器:

在指定系统中进行程序的安装、卸载、升级、查询及校验等工作;

不同的Linux发行版本,有着不同的程序包管理器:

Debian:dpt, Debian Package Toolkits, dpkg工具, .deb后缀名的包文件;

Redhat:rpm, Redhat Package Manager, rpm工具, .rpm后缀名

rpm成为Linux的程序包管理器的行业标准;

rpm是使用perl语言编写的,用C语言重新rpm,

rpm is package manager

S.u.S.E:rpm, .rpm

Gentoo:采用了FreeBSD的portage的程序包管理机制,emerge的工具

ArchLinux:pacman

以CentOS为例,rpm程序包管理器的相关内容:

CentOS的程序包管理器:

程序包的命名规则:

源代码包:

software_name-VERSION.tar.gz

VERSION:major.minor.release

major:主版本号,通常代表重大功能改进的版本分支;

minor:次版本号,通常代表在某个版本的分支中的某个功能发生变化;

release:发行版本号,修复了某些bug或者对某段代码进行了优化;

apache-tomcat-7.0.63.tar.gz

rpm程序包命名规则:

源码包:source code

software_name-VERSION.src.rpm

二进制包:

software_name-VERSION-[release].[os].arch.rpm

VERSION:major.minor.release

[release]:rpm封包的发行版本号

[os]:所支持的操作系统版本,el6, el7, suse11, fedora22, ...

arch:硬件平台类型,I386, x64(amd64), ppc, sparc, noarch, ...

puppet-3.8.7-1.el7.noarch.rpm

在制作rpm程序包的时候,通常其制作者会采用分包技术来构建rpm程序包;

根据程序的不同功能,构建多个程序包;

被分包的程序包一般分为两类:

主程序包:

software_name-VERSION-[release].[os].arch.rpm

附属功能包:

software_name-function-VERSION-[release].[os].arch.rpm

一般来讲,主程序包和附属功能包具有相同的版本号,发行版本号,操作系统及兼容平台的标识;

所以,主程序包往往被所有的附属功能包所依赖;不安装主程序包就不能安装附属功能包;

function:devel, utils, libs, tools, manual, client, common, ...

依赖关系:

A --> B --> C D --> A 依赖黑洞

程序包管理的前端工具:

RHEL|CentOS系统的前端管理工具:yum, Yellow dog Update Midifier

yum在实施安装、升级、卸载等工作的时候,会开启事务;

所谓事务,将这个操作过程视为一个整体,要么全执行,要么全不执行;

Fedora 22+:dnf

Debian系的前端工具:apt-get,apt-cache

apt-get:实现安装、卸载等功能;

apt-cache:实现基于关键字进行搜索功能,管理本地缓存及缓存的元数据

suse前端工具:zypper

rpm程序包管理器:

1.rpm命令行工具;

2.yum工具;

rpm命令行工具:

功能:

1.将编译好的应用程序的各个组成文件打包成一个或多个程序包文件;

2.软件包的安装、卸载、升级、查询、校验及数据库管理功能

rpm程序包中文件的组成清单:

1.程序的文件

2.文件清单

3.软件安装或卸载时所运行的脚本文件,共分为四类:

preinstall:在正式的安装操作开始之前所运行的脚本,%pre

postinstall:在安装完成后所执行的脚本,%post

preuninstall:在正式卸载操作开始之前所运行的脚本,%preun

postuninstall:在卸载完成后所执行的脚本,%postun

rpm数据库(公共):

已经安装好的程序包名称及版本

/var/lib/rpm

获取程序包的途径:

1.系统的发行版的光盘

2.官方的文件服务器或者镜像站点:

http://mirrors.aliyun.com

http://mirrors.sohu.com

http://mirrors.163.com

https://mirrors.tuna.tsinghua.edu.cn

http://mirrors.hust.edu.cn

...

3.某个项目的官方站点:

4.第三方组织制作的rpm程序包站点

Fedora EPEL:红帽官方的社区组织,在镜像站点中也包含EPEL镜像;

搜索引擎:

http://pkgs.org

http://rpmfind.net

http://rpm.pbone.net

5.自己制作

建议:获得程序包之后,实施完整性检查

来源合法性:

通过程序提供者的数字签名加密的数据,我们通过其公钥进行解密验证;

程序包完整性:

sha-1校验码

rpm和yum两个工具的使用

rpm命令行工具:

安装、卸载、升级(降级)、查询、文件校验、验证、数据库维护;

rpm命令的通用选项:

-v:显示安装例程的信息,仅仅显示安装软件名

-vv:显示非常详细的操作信息

安装:

rpm {-i|--install} [install-options] PACKAGE_FILE ...

install-options:

-h, --hash:用50个"#"来表示安装进度

--test:并不是真正的安装软件包,仅仅是测试是否在安装时能够正常完成,dry run模式;

--nodeps:忽略因为依赖关系导致的安装错误,不建议使用;

--replacefiles:在安装软件包时,软件包中的文件会直接将原来安装的文件替换;

--replacepkgs:无需卸载软件包而重新安装;

--noscripts:不运行任何脚本

--nopre

--nopost

--nosignature:不考虑软件包的来源是否合法;

--nodigest:不考虑软件包是否完整;

例:~]# rpm -ivh php-mysql-5.3.3-40.el6_6.x86_64.rpm php-pdo-5.3.3-40.el6_6.x86_64.rpm

升级:

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

如果选择被安装的程序包事先并未安装,则全新安装;如果已经安装了旧版本,则可以升级安装;

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

仅仅只能对已经安装的低版本的程序包进行升级安装;

常用选项:与安装相同

--oldpackage:降级安装,用老版本的程序包替换新版本的程序包;

--force:强制升级

注意:

1.强烈建议,不要对内核进行升级操作;Linux可以支持多内核,可以直接安装新版本的内核,在启动界面可以手动更换;

2.升级安装可能会带来文件的变化,因此,系统默认不会直接更改之前安装过的软件的配置文件,新程序包中的配置文件会被重命名,通常会是:FINENAME.rpmnew

卸载:

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

--allmatches:卸载所有匹配指定名称的程序包的各个版本;

--nodeps:卸载时忽略依赖关系,不建议使用;

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

查询:

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

[select-options]

PACKAGE_NAME:直接给出程序包名

-a,--all:查询所有已经安装的程序包名;

~]# rpm -qa | grep mysql

-f,--file FILE:查找指定的文件是由哪个程序包提供的;

-p,--package PACKAGE_FILE:对还没有安装的程序包文件中执行查询操作

--whatprovides CAPABILITY:查询指定的CAPABILITY是由哪个程序包提供的

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

[query-options]

--changelog:查询rpm程序包的changelog;

-c,--configfiles:查询指定程序包中有哪些是配置文件;

-d,--docfiles:查询指定程序包中有哪些文档文件;

-i,--info:查询程序包相关的信息,包括版本号,发行号,大小等;

-l,--list:列表显示程序包安装会生成哪些文件

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

-R,--requires:查询指定程序包的依赖关系;

--scripts:查看程序包所携带的脚本的内容;

具体使用方法:

-qf FILE

-qc|-ql|-qd|-qi PACKAGE_NAME

-qpl|-qpc|-qpd|-qpi PACKAGE_FILE

校验:

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

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

认证:

rpm --import /PATH/TO/KEY_FILE

rpm -K /PATH/TO/PACKAGE_FILE

数据库管理:

数据库的初始化和重建

/var/lib/rpm

rpm {--initdb|--rebuilddb}

[--dbpath DIRECTORY]

以上是"Linux中如何实现程序包管理与使用rpm命令"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

程序 文件 管理 版本 工具 查询 功能 软件 系统 升级 数据 编译 命令 脚本 软件包 应用 源代码 发行 内容 数据库 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技园 科技金融是不是互联网金融 互联网科技公司的优势 友谊互联网络科技 互联网高科技股票 盛创互联网科技有限公司 老年人脱离互联网科技的作文 富国互联网科技创新基金 互联网科技公司需要的职位 互联网之后的科技是什么 哈尔滨新华互联网科技学院 昭通云南众福互联网科技有限公司 中国互联网十大科技股排名 河南住房之家互联网科技 翼展科技 首家互联网医院 山东星卡互联网科技有限公司官网 启辰互联网科技 宇信科技在杭州互联网排第几 北京军民互联网科技公司 广州全民伙伴互联网科技有限公司 耶加雪菲 老年人脱离互联网科技的作文 科技与互联网的利与弊 移动互联网科技公司 哈尔滨屹滨互联网科技有限公司 山东有哪些互联网科技公司 每天都有哪些好的互联网科技 宇信科技在杭州互联网排第几 悟空问答互联网科技 中国主要互联网科技公司
0