千家信息网

程序rpm包管理的示例分析

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,程序rpm包管理的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。程序是什么?指令+数据也好,算法+数据结构也罢。它的存在形式有两
千家信息网最后更新 2025年02月23日程序rpm包管理的示例分析

程序rpm包管理的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

程序是什么?指令+数据也好,算法+数据结构也罢。它的存在形式有两种:

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

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

其中,使用源代码安装的过程如下:

预处理(用到预处理器) --> 编译(编译器) --> 字节码Bitcode 进行汇编(汇编器) --> systemcall直接运行;libcall需要链接(链接器);最终得到可执行的二进制程序文件

汇编时,不一样的硬件往往不能兼容互通。因此诞生了一个国际化标准:

POSIX:Portable Operating System 可移植操作系统。至于IX是向unix致敬一下下

最终二进制文件到底能不能执行,取决于计算机的ABI接口。在不同OS上有着明显的差异,类unix系统上,ABI往往是ELF格式,如果是Windows系列 ;一般是exe或者msi格式.

我们再来回顾一下编程语言的分类

应用级编程语言:

Java(做应用程序很强,做系统菜鸡)

hadoop2-大数据处理平台,hbase-数据库,ELK-日志查询和分析检索系统

这些软件运行环境需要专有的一个环境叫:JVM

Python(离底层硬件距离太远,刚开始太消耗系统资源。现在来说,消耗已经可以忽略了 )

Openstack--云栈,saltstack--自动化运维管理工具 运行环境:PVM

perl、ruby(日本流行,开发很多曾经的经典游戏。)

PHP、go

而JVM PVM 和其他应用级语言所需要的解释器,都是由C语言开发的;

系统级编程语言:

C/C++

Linux、Unix的内核编程语言

编译开发环境:预处理器、编译器、头文件、开发库文件(能够让编译库运行的库)

(而像Java或者Python等应用级语言的开发环境:预处理器、编译器、开发库文件;)

通常情况下,源代码文件有多个,这些文件之间存在着一定的关联关系;我们称之为依赖关系;

软件项目构建工具:

C/C++:make

Java:maven

Python:buildout

尽管有了这些构建工具,编译源代码还是十分困难,因此有一些人把常用的代码打包封装成程序包,发布开源社区,方便使用

程序包的管理器:

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

Debian:dpt-Debian Package Toolkits。所有软件包封装成.deb后缀名的包文件,命令行工具 dpkg

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

rpm称为linux的程序包管理器的行业标准

开始使用的是perl语言编写,后来用C语言重写了rpm,公布后改名为rpm is package manager。

Slackware(S.u.S.e):用的是rpm,但是对rpm进行了修改,以至于得到Redhat认可

Gentoo:从内核开始,可以供用户任意选择挑选软件;

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

Archlinux:pacman

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

1.程序包的命名规则:

源代码包:software_name-VERSION.tar.gz

VERSION:major.minor.release

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

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

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

rpm程序包:

源代码包: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 i686 x64(amd64) ppc sparc noarch...

例如 gcc-4.8.5-4.el7.x86_64.rpm

在制作rpm程序包的时候,通常其制作者会采用分包技术来构建rpm程序包:根据程序的不同功能,构建多个程序包;被分包的一般分为两类

1.主程序包:

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

2.附属功能包:

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

一般来讲,主程序包和附属功能包具有相同版本号 发行版本号 操作系统要求和硬件架构类型

所以 主程序包往往被所有的附属程序包所依赖;依赖关系:A --> B -->C D --> A 构成一个依赖黑洞 因此rpm存在着诸多'不与人为善'的弊端

获取程序包的途径:

1.系统发行版的光盘,或镜像

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

http://mirrors.aliyun.com

http://mirrors.sohu.com

http://mirrors.163.com

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

http://mirrors.hust.edu.cn

...

3.某项目的官方站点 例如apache

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

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

搜索引擎:

http://pkgs.org 基本可以搜索到所有

http://rpmfind.net 法国的一个站点

http://rpm.pbone.net

5.自己制作 咯

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

1.来源合法性

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

2.程序包完整性

sha-1校验码

rpm命令行工具:

安装 卸载 升级(降级) 查询 文件校验

【通用选项】:

-v --verbose:显示安装历程详情,仅仅显示安装软件名

-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 {-U|--upgrade} [install-options] PACKAGE_FILE ...

可以升级也可以全新安装

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

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

常用选项与安装相同

特殊的选项:

--oldpackage 降级安装

--force 强制升级

注意:

1.强烈建议:不要对内核进行升级操作;linux支持多内核

2.升级后带来文件的变化,系统默认不会直接更改之前的配置文件,新程序包的配置文件会被重命名,通常是:FILENAME.rpmnew

卸载:

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

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

--nodeps:忽略依赖关系

--test:测试卸载

--nopreun

--nopostun

查询:

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

[select-options]

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

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

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

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

--whatrequires CAPABILITY

[query-options]

-c,--configfiles: 查看相关配置文件

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

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

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

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

--scripts: 查询程序包的脚本

校验:

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

[select-options] 与查询的[select-options]相同

认证:

--import PUBKEY ...导入相应的/PATH/TO/KEY_FILE

{-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE ...

手动测试 验证软件包的合法性

数据库管理:

数据库的初始化和重建:/var/lib/rpm

rpm {--initdb|--rebuilddb}

[--dbpath DIRECTORY]

看完上述内容,你们掌握程序rpm包管理的示例分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

程序 文件 版本 软件 管理 系统 语言 查询 工具 数据 源代码 软件包 升级 编译 发行 开发 功能 环境 站点 编程语言 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库中入库检查内容 深圳服务器电源种类有哪些 oracle数据库查重复 网络技术处理员考试 服务器打开打开任务管理器 数据库并 厦门互联网科技大会 从事软件开发上什么学比较好 软件开发与安全 浦口区一站式软件开发质量推荐 方舟生存进化新服务器 网络安全课代码 云服务器申请软件服务 触摸一体机查询软件开发 网络安全共享网络文明征文 f8进入网络安全模式没反应 方舟生存进化专用服务器怎么调节 应用云服务器租赁费用 海尔电视虾米音乐显示服务器出错 网络安全和信息安全自查报告 郑州大学网络服务器ip 数据库系统主要分为哪几部分 中国最厉害的软件开发 以下哪些网络安全主体责任 供销社有大数据库吗 建立数据库高中信息技术面试 超威服务器主板x9 网络安全监测探针设备 软件开发工作量人月缺点 小度网络安全为主的手抄报
0