RPM学习笔记

前言:

在操作系统上安装程序是个很常见的事。但在Linux中,很多程序都是由网上的黑客或是项目组使用C,C++或perl开发的源程序包。想要将这些源程序进行安装,就必须要将程序进行编译。这大概就想要经过以下几步:预处理——>编译——>汇编——>链接。然后才能真正的安装运行起来。但不是所有的用户都有这个能力安装。所以这就出现了简化用户安装使用的程序包管理器。

-------------------------------------------------------------------------------------------

包管理器的分类:

Debian:dpkg

RedHat:rpm(redhat package manager)

包管理器的功能:

打包

安装

卸载

升级

校验

数据库管理

包管理器的发展:前端工具

dpkg:apt-get

rpm:yum

-------------------------------------------------------------------------------------------

程序的命名格式:

源代码:

name-version.tar.{gz,bz2,xz}

version:major.minor.release

rpm包:

name-version-relase.arch.rpm

version:major.minor.release,同源代码。

relase:rpm自身的发行号,与程序源码的发行号无关,仅用于标识对rpm包不同制作的修订;同时,release还包含此包适用的OS。

arch: 适用于的硬件平台。

获取rpm的途径:

1.发行的光盘或站点服务器

镜像:

http://mirrors.163.com

http://mirrors.sohu.com

2.项目的官网

源代码

rpm包

3.很多第三方机构或个人制作并公开发布许多rpm包

http://rpmfind.net

http://rpm.pbone.net

可靠的途径:EPEL

Fedora-EPEL

rpm包的合法性验证:

包制作者制作完成之后会附加数字签名于包上;

验证方式:

来源合法性

包的完整性

验证过程:

前提:必须有可靠机制获取到包制作者的公钥;

1.使用制作者的公钥解密加密的特征码,能解密意味着来源合法;

2.使用与制作者同样的意向加密算法提取原始数据的特征码,并与解密出来的特征码作比对,相同,则意味着完整性没问题;

-------------------------------------------------------------------------------------------

rpm包管理器的使用:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

安装

rpm [option] /path/to/package_file

-i:install 安装

-v 显示

-vv 详细显示

-vvv 详细+显示

-h 以#号显示进度

组合选项:-ivh

--test:仅作测试,没有真正执行安装

如果依赖于其它包:

1.解决依赖关系

2.忽略依赖关系

能安装上,但有可能无法运行;

--nodeps 忽略依赖关系

重新安装:

--replacepkgs

如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为.rpmnew

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

卸载程序包:

rpm [option] package_name

-e erase

如果被其它包所依赖:

1.将依赖于此包的所有包一并卸载

2.忽略依赖关系

能卸载,但依赖于此包程序可能会运行不正常

--nodeps 忽略依赖关系

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

升级程序包:

新版本替换老版本

rpm [option] /path/to/package_file

1.升级或安装

-Uvh

2.纯升级

-Fvh

--force 强制升级

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

查询操作:

1.查询某包是否安装

rpm -q package_name...

2.查询所有已经安装的包

rpm -qa

3.查询包的描述信息

rpm -qi package_name

4.查询某包安装生成了哪些文件

rpm -ql package_name

(1)查询某包安装生成了哪些配置文件

rpm -qc package_name

(2)查询某包安装生成了哪些帮助文件

rpm -qd package_name

(3)查询程序包的相关脚本

rpm -q --scripts package_name

5.查询某文件是由哪个包安装生成的

rpm -qf /path/to/some_file

6.对尚未安装的包执行查询

rpm [option] /path/to/package_file

-qpi 查询未安装的某包生成了哪些信息

-qpl 查询未安装的某包生成了哪些文件

-qpc 查询未安装的某包生成了哪些配置文件

-qpd 查询未安装的某包生成了哪些帮助文件

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

校验:

用于检查包安装生成的文件属性是否发生变化

rpm -V package_name

-  -  -  -  -  -  -  -  -  -  -  -

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包来源合法性及完整性检验:

前提:在当前系统上导入包的制作者的公钥

导入:

rpm --import /path/to/key_file

#rpm -qa gpg-pubkey*

显示所有已经导入的gpg格式的公钥

#rpm -qi gpg-pubkey-NAME

显示密钥的详细信息

检查包:安装过程中会自动执行

手动检查:

rpm -K /path/to/package_file

不检查包完整性:

rpm -K --nodigest

不检查来源合法性:

rpm -K --nosignature

rpm --checksig /path/to/package_file

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

数据库重建:

数据库目录位置:/var/lib/rpm

重建:

rpm --initdb:初始化

如果事先没有库,会新建一个;如果有,则不新建

rpm --rebuilddb:重建

直接重建,覆盖原有的数据库

时间: 2024-10-12 10:13:06

RPM学习笔记的相关文章

Docker 学习笔记【1】Docker 相关概念,基本操作

计划:Docker 学习笔记[2] Docker 基础操作实操记录,Docker仓库.数据卷,网络基础学习---40 注:所有操作在root下执行 --1--概念: 1.Docker镜像: 镜像就是一个只读的模板,用于创建docker容器. Docker提供了简单的机制创建或者更新现有镜像,也可以从别处拿来现成镜像直接使用. 2.Docker容器: 可以认为是精简版的linux运行环境包含 [root权限,进程空间,用户空间,网络空间等]和应用程序 另外:镜像是只读的,容器基于镜像启动后创建一层

[原创] linux课堂-学习笔记-目录及概况

本学习笔记基于:网易云课堂-linux课堂 课时1Centos 6.4安装讲解46:14 课时2Centos 6.4桌面环境介绍与网络连接04:30 课时3 Linux目录结构介绍及内核与shell分析37:19 课时4 Linux获得帮助_网络配置_合理关机64:23 课时5 Linux文件权限详解45:47 课时6Linux文件权限详解45:47 课时7目录显示个性操作与全局环境变量的使用与注意···43:25 课时8复制与远程复制_文件查找实例_文件内容查看的··57:49 课时9Linu

基于CentOS7上的搭建javaweb环境 - 学习笔记

一, 概述 上一篇记录了安装CentOS7的基本步骤及配置,现在要讲如何搭建基于CentOS7环境的javaweb环境了,我以 mysql + jdk1.8.0_91 + apache tomcat7.0.69 为例进行讲述. 二, 安装步骤 1, 首先在CentOS7下在线安装mysql数据库服务 (1)先查看是否已安装了mysql rpm -qa | grep mysql (2)若安装了,可以卸载,再重新安装 yum -y remove mysqlxxxxx (3)安装 yum -y ins

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

Docker 学习笔记【2】 Docker 基础操作实,Docker仓库、数据卷,网络基础学习

Docker 学习笔记[3] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,实操 网络基础  ---------高级网络配置和部分实战案例学习 ============================================================= Docker 学习笔记[1]Docker 相关概念,基本操作--------实操记录开始 ============================================================= 被

监控工具学习笔记--SNMP/RRDTOOL

一.SNMP 安装并启动SNMP: yum install net-snmp net-snmp-utils -y service snmpd start 测试SNMP: netstat -unlp    # 查看SNMP端口号:161 snmpwalk -v 2c -c public localhost    # 查看本机SNMP信息 ls /usr/share/snmp/mibs/    # 查看MIB库文件 less SNMPv2-MIB.txt     # 查看标准MIB库文件 cat /

一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建

作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装CentOS7 安装.NET Core SDK for CentOS7 搭建ftp服务器 安装mysql 部署ASP.NET Core应用程序 配置Nginx 配置守护服务(Supervisor) 环境说明 服务器系统:CentOS 7.3 64位 相关工具:putty.Xftp 服务器软件软件:.n

SystemTap 学习笔记 - 安装篇

https://segmentfault.com/a/1190000000671438 在安装前,需要知道下自己的系统环境,我的环境如下: uname -r 2.6.18-308.el5 Linux 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux 安装 为了部署 SystemTap,需要安装以下两个 RPM 包: systemtap systemtap-runtime 以 root

Linux程序设计学习笔记----进程间通信——管道

转载请注明出处: http://blog.csdn.net/suool/article/details/38444149, 谢谢! 进程通信概述 在Linux系统中,进程是一个独立的资源管理单元,但是独立而不孤立,他们需要之间的通信,因此便需要一个进程间数据传递.异步.同步的机制,这个机制显然需要由OS来完成管理和维护.如下: 1.同一主机进程间数据交互机制:无名管道(PIPE),有名管道(FIFO),消息队列(Message Queue)和共享内存(Share Memory).无名管道多用于亲