程序包管理之----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]

时间: 2024-10-26 09:13:20

程序包管理之----rpm的相关文章

程序包管理:RPM YUM的总结

程序包管理:RPM YUM的总结 一.RPM的简介 RPM 是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,是公认的行业标准. 二.RPM程序包管理的用途 1.可以安装.删除.升级和管理软件:当然也支持在线安装和升级软件: 2.通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪

CentOS系统程序包管理之---rpm、yum和编译

一.程序包管理器 1.软件的运行 2.程序包管理 将编译好的文件打包成一个或有限的几个文件,可用于实现便捷的安装.卸载.升级.查询,校验等程序管理. centos常用的程序管理器有rpm和yum 二.程序包管理器之RPM  1.rpm是什么    RPM 是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的.RPM包管理器(RPM)是一个强大的命令行驱动的包管理系统能够安装.卸载.验证.查询和更新计算机软

程序包管理:rpm&yum命令

1.软件包管理简介 Windows中所有的软件包都不可以直接在linux系统中直接安装使用. linux系统中软件包分类: 源码包(脚本安装包) 源代码直接开放的包,绝大部分是C语言写的: 二进包(源码包编译之后的包.RPM包.系统默认包) 优点:安装快速,简化安装过程但不能看到源代码,例如qq等: redhad系列和ubanto系列最大的区别就是二进制软件包不同,rehad用的二进制包是.rpm包,debin系列用的是deb包,其余的部分两种发行版本基本一致. 源码包的优点: 开源,可以修改源

Linux程序包管理:RPM和YUM

Linux程序包管理:RPM和YUM   就像Window一样,我们安装了windows系统如果没有相应的应用软件,如OFFICE,IE,等各种软件,用户是无法使用计算机,linux 完成各种应用功能,也需要各种应用程序,所以程序包的管理就非常必要. Linux平台的内核功能:进程管理.内存管理.网络协议栈.驱动程序....             应用程序:              早期的linux程序包的组成部分:                二进制程序:/bin, /sbin,/ /u

CentOS程序包管理器rpm、yum以及程序包编译安装详解

一.程序包管理器RPM和Yum简介 程序包管理器:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,可以更方便地实现程序包的安装.升级.卸载和查询等管理操作. rpm软件包管理器(RPM Package Manager):rpm包存在依赖关系,依赖关系复杂,安装时间很长,虽然可以忽略依赖关系,但是可能会导致程序包安装后无法正常使用. yum程序包管理器( Yellow dog Updater, Modified):yum是基于RPM包管理,自动解决程序包间的依赖关系.根据配置文件的资源地

  程序包管理器之 RPM的用法

在Linux中我们经常回遇到安装个卸载各种程序,但是我们又没有必要每次都对源代码进行预处理.编译.汇编.链接,这样很不方便,于是我们就可以使用RPM包管理器. 一:RPM包的介绍:RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了. 二:RPM包的功能介绍:

[Linux程序包管理之RPM及YUM]

Linux程序包管理之RPM及YUM 一.RPM和YUM简介 RPM,全称RPM Package Manager,是由Red Hat推出的软件包管理系统,现在在各个发行版普遍使用. RPM包管理器,将编译好的程序打包成一个文件或有限的几个文件,可用于实现便捷地安装.卸载.升级.查询.校验等程序管理:通常用与RHEL,红帽衍生系统,如CenOS等系统,用来实现对Linux程序包进行快捷管理. RPM包命名格式: Yum,全称Yellow dog Updater, Modified , 由Duke

2015年9月10日课程作业【程序包管理:rpm, yum】_JY1506402-19+liuhui880818

<Linux系统管理> (1)磁盘和文件系统管理: (2)RAID, LVM; btrfs; (3)程序包管理:rpm, yum(dnf) (4)Linux的网络管理; (5)进程和作业管理:htop, glances, tsar: (6)sed和awk: (7)Linux系统的开机启动流程: (8)内核基础知识,内核定制编译: (9)系统安装:kickstart, pxe 一.作业(练习)内容: 1.总结rpm和yum实现程序包的管理功能. 要求:作业要图文并茂 二.完成时间: 2015年9

CentOS程序包管理器之rpm前端管理器

CentOS的程序包管理器: 首先,我们要来了解一下程序包(源代码包)的命名规则: software_name-VERSION.tar.gz VERSION:major.minor.release major:主版本号,通常代表重大功能改进的版本分支: minor:次版本号,通常代表在某个版本的分支中的某个功能发生变化: release:发行版本号,修复了某些bug或者对某段代码进行了优化: 例如:apache-tomcat-7.0.63.tar.gz 而rpm程序包命名规则为: 源码包:sou

Linux学习笔记——程序包管理之rpm命令

RPM rpm是Linux上一个很好用的程序包管理管理器,它具有安装.卸载.升级.查询.校验.数据库维护等功能. 下面分别介绍一下rpm的各个功能: 安装: rpm {-i|--install} [install-options] PACKAGE_FILE ... -v:详细显示安装过程 -vv:相对-v更加详细 -h: 以#显示程序包管理执行进度:每个#表示2%的进度 安装过程如图 另外还有一些其他选项 [install-options] --test: 测试安装,但不真正执行安装过程:dry