第五部分 linux 软件安装RPM SRPM与YUM
软件管理员简介
RPM与DPKG两大主流
rpm: redhat centos suse 命令:yum
redhat package manager 将软件先编译 再打包成rpm机制
包中记录的安装的时候必须具备的相依赖属性 当安装时候 rpm会先依照软件里的资料查询linux主机的相依赖属性软件是否满足 如果满足则安装 如果不满足 则不安装 。
1. rpm软件管理存在的问题
软件安装环境必须与打包时候的环境要求一致或相当
需要满足软件的相依赖属性
卸载时,底层的软件不可以先卸载 否则会造成整个系统的问题
2. 如果需要其他发行版的rpm软件 则需要srpm这个文件 source rpm的意思 即就是这个RPM文件里面包含未经过编译的原始代码
仍然包含该关键需要的相依性说明以及所有rpm文件提供的资料
与rpm不同的地方:提供了参数设置文件 也就是configure 与makefile
通常此文件的扩展文件名是***.src.rpm
安装此文件时 需要
先将该软件以RPM管理的方式编译 此时SRPM会被编译成为RPM文件
再将编译完成的RPM文件安装到linux系统当中
所以就可以通过修改srpm内的参数配置文件 然后重新编译生成能适合我们linux环境的rpm文件
3.rpm在打包软件的时候,同时加入一些信息登陆的功能,这些信息包括软件的版本,作者,依赖关系,软件功能说明,软件的所有文件记录等等,然后在linux系统上面也建立一个rpm软件资料库,当安装的时候,rpm会检验一下资料库里面是否已经存在相关的软件了。
4.克服依赖关系 可以用yum线上安装的方式
原理:在rpm包内会有记录相依赖关系的文件,在安装此软件的时候 与系统内已经安装的软件相比较,没有安装的相依赖软件一同安装,就会解决相依赖关系的问题 此种机制就是YUM
centos 1 将软件放在yum服务器上
2.分析这些软件的依赖关系 形成软件依赖的清单列表 这些信息与软件所在的本机或网络位置称为容器或者软件仓库
3.客户端有安装的需求时,用户端主动的向yum服务器下载依赖的清单列表,然后通过此表与本机的rpm数据库 已存在的软件比较,就能够一起安装需要的相依赖的软件了
默认清单会更新到本地的/var/cache/yum里面 利用此清单与本地的rpm数据库进行比较 这样就知道应该安装什么
然后yum会在yum server下载所有需要的软件 (因为清单里面含有详细的地址),然后再通过rpm机制安装下载下来的软件。
yum服务器提供的软件内容差异:
原版文件 更新的文件 特殊的文件(例如第三方软件)这三类不同的软件需要软件库的概念来处理 不同类型的软件放在不同的位置。
dpkg: b2d ubuntu 命令:apt-get
rpm软件管理程序:rpm
软件安装完毕后
相关信息会写到/var/lib/rpm/目录下面的数据库文件中,此文件比较重要,比较版本和查询都需要此文件
安装软件的相关目录
/etc 配置文件
/usr/bin 可执行文件
/usr/lib 动态函数库
/usr/share/doc 软件使用手册与说明
/usr/share/man man page文件
1.rpm安装 install
root身份
rpm -ivh /mnt/packages/****.rpm
-i install
-v verbose 详细
-h 显示安装进度
光盘:
rpm -ivh /mnt/Packages/rp***.rpm
安装多个软件
rpm -ivh a.rpm b.rpm *.rpm
网络安装
rpm -ivh http://website.name/pkgname.rpm
可以利用参数强制安装
--nodeps 不考虑依赖
--replacefiles 覆盖安装 当出现已安装或者版本不合适 无法还原
--replacepkgs 重复安装 只适合已经安装过的软件
--force 是上面两个的综合
--test 尝试安装 测试软件是否有依赖关系的问题
--justdb rpm数据库出现错误时 利用此参数来更新数据库中的相关信息
--nosignature 忽略数字签名
--prefix 新路径 将软件安装到其他的非正规目录 安装到/usr/local 或者其他的目录 而非/bin /etc等
--noscripts 不让改软件在安装过程中 自动执行某些系统脚本命令
举例:光盘安装
挂载: mount /dev/sr0 /mnt
找文件的实际路径: find /mnt -name 'pam-devel*'
测试相依性: rpm -ivh pam-devel... --test
直接安装: rpm -ivh pam-devel...
卸载光盘: umount /mnt
2.RPM升级与更新
-Uvh 软件未安装过 则直接安装 ;如果是旧版 则自动更新到新版
-Fvh 如果未安装过 则不会安装 也就是只有安装过的软件才会被升级
尽量使用Fvh 避免不需要的软件被安装进系统
3.RPM 查询 query
查询的数据库文件为/var/lib/rpm/这个目录下的文件 rpm也可以查询未安装的rpm文件内的信息
-qa 已经安装的软件
-q[licdR]已安装的软件的名称
-qf 存在于系统上面的某个文件名
-qp[licdR]未安装的某个文件的名称
q后面跟的参数
a 列出所有 all
i 详细信息 information
l 所有文件与目录所在的完整文件名 list
c 列出配置文件 config
d 列出说明 description
R 相依赖软件的有关文件 required
f 后面接的文件名称 找出该文件属于哪一个已经安装的软件
--scripts 列出是否有安装后需要执行的脚本文件,可以用debug
-qp 找出某个未安装的软件的信息 packages 这里需要加上完整的文件名 版本号等
范例:
rpm -q logrotate
rpm -ql logrotate 列出属于该软件提供的所有目录与文件 可以用于追踪
rpm -qR logrotate 如果成功安装软件 还需要什么文件的帮忙
rpm -qpR filename.i386.rpm 找出该文件需求的文件
RPM验证与数字签名 verify/signature 侧重于安全方面
使用/var/lib/rpm下面的rpm数据库来比对目前linux系统的环境下的软件,当不小心遗失文件时或错误修改文件时,可以用此方法来验证原来的文件系统,了解修改哪些文件了
语法:
rpm -Va 列出所有可能更动过的文件
rpm -V 已经安装的软件名称 该软件包含的文件被更动过 才会列出来
rpm -Vp 某个RPM文件的文件名
rpm -Vf 在系统上面的某个文件 某个文件是否被更动过
范例
rpm -V logrotate
软件是否被更动过
rpm -Vf /etc/crontab 查询一下此文件是否被更动过
查询更动过的内容
rpm -V logrotate
出现..5....T. c /etc/logrotate.conf
c 代表的是configuration
S 文件的容量大小
M 文件的类型或属性
5 MD5这个指纹码的内容不同
T 文件的建立的时间
........
所以上面例子中的 md5值和建立的时间已经改变了
SM5DLUGTP c filename 对应的位置
例子中的c 代表配置文件
d 数据文件
g ghost file
l license file 授权文件
r read me 读我文件
数字签名 GNU的gpg 签名系统
先安装厂商提供的公钥文件
再安装rpm软件的时候,rpm指令会去读取RPM文件的数字签名 与本机的签名比对
如果相同则安装 否则不安装
cat /etc/pki/rpm-gpg/RPM-GPG-KEY-cENTos-7
内容为乱数
安装公钥系统软件
安装方式:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-Centos-7
寻找此文件的命令:locate GPG-KEY
或者
find /etc -name '*GPG-KEY*'
查看某软件的公钥文件
rpm-qa | grep pubkey
rpm -qi gpg-pubkey-f4a8.......
出现的内容就是厂商提供的公钥信息
RPM反安装与重建数据库(erase/rebuilddb)
卸载的过程必须由上层忘下层卸载 先拆第6层楼 再拆第5层 最后到地基
语法:
rpm -e pam
卸载 安装 升级过程中可能会导致rpm数据库被破坏 可以利用--rebuilddb选项来重建rpm数据库
命令:rpm --rebuilddb
yum线上升级机制
yum查询、安装、升级与删除功能
查询
yum [list|info|search|provides|whatprovides]
yum [option][查询工作项目][相关参数]
-y yes 去掉交互
--installroot=/some/path 将软件安装到后面的额路径 而不是默认的路径
search 搜寻某个软件名称或者是秒数的重要关键字
list 类似于rpm -qa 列出目前yum 所管理的所有软件名称与版本
info 类似rpm -qai
provides 根据文件去搜索软件 查询是哪个软件提供的 很有用
-
软件安装 RPM SRPM YUM
RPM介绍 RPM是已经编译好的软件安装库.编译是有相应环境相适应的,包括系统,版本等相关信息都要跟编译版本一致才行,否则肯定会出现安装不成功的情况,强制安装的话,也会出现各种各样的问题. 在这种情况 ...
-
Linux学习笔记(13)linux软件安装rpm与yum--理论篇
该文章linux知识点如下 1.linux中 软件包介绍 2.linux源码软件安装 3.linux二进制软件安装 4.linux rpm软件包管理 5.linux yum软件包管理 1.linux中 ...
-
linux软件安装(rpm,源码编译)
1.rpm(redhat package manager)管理器主要目的在于解决软件的安装.卸载.升级.查询.验证等,例如升级过程中,保留软件的配置文件,安装过程中,检查软件依赖的库文件,以及卸载过程 ...
-
鸟哥的linux私房菜学习记录之软件安装RPM,SRPM,YUM
-
Linux软件安装-RPM安装
RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux. S ...
-
Linux软件安装,RPM与YUM
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3843955.html ...
-
Linux软件安装中RPM与YUM 区别和联系
.tc-nav-row{ height:38px; margin: 8px 15px; } .tc-nav-tab{ text-align: center; color:#333333; line-h ...
-
Linux软件安装管理之——dpkg与apt-*详解 apt命令(dpkg和apt代替rpm)
apt list *python* Nosee123关注赞赏支持 Linux软件安装管理之--dpkg与apt-*详解 [Linux软件安装管理系列]- - 传送门: - -<Linux软件 ...
-
Linux软件安装管理:rpm与yum
目录 1. rpm包的管理 1.1 介绍 1.2 rpm包的简单查询指令 1.3 rpm 包名的基本格式 1.4 rpm其它指令 1.5 卸载rpm包 1.6 安装rpm包 2. yum 2.1 说明 ...
随机推荐
-
Simple Infinite automaton [C]
Today I read the book Formal Language and Automaton Theory. And I learnt the infinite automaton. Her ...
-
[转]Gson过滤字段
原文地址:http://my.oschina.net/orgsky/blog/368768 摘要 Gson过滤字段 Gson过滤字段 Gson 过滤 字段 属性 目录[-] 最简单的用法 方法1:排除 ...
-
[Stanford 2011] Ordinary Calculator(By myself)
说明: 前面的RPN计算器是按照stanford课程做的,是后缀表达式的计算.现在这个计算器是自己做的.这个是一般的计算器,即中缀表达式的计算,而且把计算过程也显示在屏幕上, 设计方法: 在Model ...
-
转:python webdriver API 之定位 frame 中的对象
在 web 应用中经常会出现 frame 嵌套的应用,假设页面上有 A.B 两个 frame,其中 B 在 A 内,那么定位 B 中的内容则需要先到 A,然后再到 B.switch_to_frame ...
-
HDU 5093 Battle ships(二分图最大匹配)
题意:一个m行n列的图由#.*.o三种符号组成,分别代表冰山.海域.浮冰,问最多可放的炮舰数(要求满足以下条件) 1.炮舰只可放在海域处 2.两个炮舰不能放在同一行或同一列(除非中间隔着一个或多个冰山 ...
-
Hadoop的文件读写操作流程
以下主要讲解了Hadoop的文件读写操作流程: 读文件 读文件时内部工作机制参看下图: 客户端通过调用FileSystem对象(对应于HDFS文件系统,调用DistributedFileSystem对 ...
-
利用Format函数格式化时间和日期
在做机房收费系统的时候,因为需要使用到日期进行查询,所以在数据表中没有使用自动添加日期的功能,而是采用了自定义的格式插入.但由于事先没有对时间转换的格式进行统一,导致后面查询时出现的问题不断. 插入时 ...
-
mysql快速翻页查询方法
SELECT SQL_NO_CACHE *FROM softdb_testWHERE id > (SELECT idFROM softdb_testORDER BY id DESCLIMIT 5 ...
-
ios01
http://code4app.com/ 0.全部Swift http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/ ...
-
hdu2795 线段树 贴广告
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...