自学Linux Shell9.2-基于Red Hat系统工具包存在两种方式之一:RPM包
9.2-基于Red Hat系统工具包存在两种方式之一:RPM包
本节主要介绍基于Red Had的系统(测试系统centos)
1. 工具包存在两种方式:RPM包与源码包
- 源码包是开源的,比RPM包安装更自由,但是它安装更慢,更容易报错;
- RPM包是经过编译的,不能看到源代码,但是它安装更快,报错更容易解决,只有依赖性问题。
缺点:安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
- RPM包不需要指定安装位置,它会安装到系统默认位置;
- 源码包是人为手工设置的
- /etc/ 配置文件安装目录
- /usr/bin/ 可执行的命令安装目录
- /usr/lib/ 程序所使用的函数库保存位置
- /usr/share/doc/ 基本的软件使用手册保存位置
- /usr/share/man/ 帮助文件保存位置
- .安装在指定位置当中,一般是/usr/local/软件名/
1.3 安装位置不同带来的影响
- /etc/rc.d/init.d/httpd start
- service httpd start
- /usr/local/apache2/bin/apachectl start
2. RPM包
如果你的光驱中还有系统安装盘的话,你可以通过”mount /dev/cdrom /mnt”命令把光驱挂载到/mnt目录下,那么你会在/mnt/Packages目录下看到很多.rpm的文件,这就是RPM包。
2.1 rpm包的组成
name-version-release.arch.rpm
- name:表示包的名称,包括主包名和分包名
- version:表示包的版本信息
- release:用于标识rpm包本身的发行号,可还包含适应的操作系统
- arch:表示主机平台,noarch表示此包能安装到任意平台上面
yum-utils-1.1.31-45.el7.noarch.rpm
- yum是这个包的主包名,utils是这个包的分包名;
- 1.1.31是表示版本信息,1为主版本,1为此版本,31为修订号;
- 45.el7中的45是表示发行号,el7表示是RHEL7;
- noarch是表示包适合任何平台
zziplib-0.13.62-5.el7.x86_64.rpm
- zziplib是这个包的主包名;
- 0.13.62是表示版本信息,0为主版本,13为此版本,62为修订号;
- 5.el7中的5是表示发行号,el7表示是RHEL7;
- x86_64是表示为64位的平台
2.2 RPM包管理的用途
- 可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;
- 通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;
- 可以在查询系统中的软件包是否安装以及其版本;
- 作为开发者可以把自己的程序打包为RPM 包发布;
- 软件包签名GPG和MD5的导入、验证和签名发布
- 依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;
2.3 RPM 的使用权限
- RPM软件的安装、删除、更新只有root权限才能使用
- 对于查询功能任何用户都可以操作
- 如果普通用户拥有安装目录的权限,也可以进行安装
2.4 RPM命令管理
参数 | 参数解释 | 举例 | |
安装命令 | -i | 安装 | |
-v|-vv|-vvv | 显示详细信息 | ||
-h | 以#显示安装进度一个#2表示%的进度 | ||
--nodeps | 忽略依赖关系 | ||
--test | 测试安装 | ||
--replacepkgs | 重新安装(之前安装包已经安装了) | ||
升级命令 | -U -Uvh | 升级+安装 | |
-F -Fvh | 升级(之前已经安装包了) | ||
--force | 有冲突强制升级 | ||
--nodeps | 忽略包依赖性关系 | ||
卸载命令 | -e | 卸载 | rpm -e 包名 |
--nodeps | 忽略包依赖性关系 | ||
查询命令 | -q |--query | rpm -q|--query 包名 | |
-qa | 查看所有已经安装的包 |
rpm -qa 查看所有包名 |
|
-qi | 查看包的摘要信息 | ||
-qf | 查看文件是有那个包安装的 | rpm -qf /path/to/file | |
-ql | 查看包安装生成的文件清单 | ||
-qc | 查看包安装生成的配置文件 | ||
-qd | 查看包安装生成的帮助文档 | ||
-q --scripts | 查看相关的脚本 | rpm -q--script 包名 | |
-qp[i|l|d|c] | 查看尚未安装包的详细信息 | rpm -qpi /path/to/rpm_file | |
校验 | -V | rpm -V 包名 | |
数据库管理 | --initdb | 新建 | rpm --initdb |
--rebuilddb | 重建 | rpm --rebuilddb |
2.5 RPM的安装
rpm -ivh package_name01 #安装package_name01,并显示详细安装信息及安装进度
rpm -ivh package_name01 package_name02 #同时安装两个package_name01 package_name02 ,并显示详细安装信息及安装进度
rpm -ivh http://websites.name/path/pkgname.rpm #直接由网络上面的某个文件安装,以网址安装
2.6 RPM包安装的依赖性问题
依赖性问题举例:
rpm -qa | grep dhcp # 查询是否讯在DHCP包
[root@localhost Packages]# rpm -e dhcp-common # 删除dhcp包报错
error: Failed dependencies:
dhcp-common = 12:4.2.5-68.el7.centos is needed by (installed) dhclient-12:4.2.5-68.el7.centos.x86_64
[root@localhost Packages]# rpm -e dhcp-common --force #删除时不能使用强制--force
rpm: only installation and upgrading may be forced
[root@localhost Packages]# rpm -e dhcp-common --nodeps #删除时使用忽略强制 --nodeps
[root@localhost Packages]# rpm -e dhcp-libs --nodeps
[root@localhost Packages]# rpm -qa | grep dhcp # 删除后查询不到dhcp包
[root@localhost Packages]#
[root@localhost Packages]# rpm -ivh dhcp-common-4.2.5-68.el7.centos.x86_64.rpm
warning: dhcp-common-4.2.5-68.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
error: Failed dependencies:
dhcp-libs(x86-64) = 12:4.2.5-68.el7.centos is needed by dhcp-common-12:4.2.5-68.el7.centos.x86_64 # 如果先安装dhcp-common,依赖于dhcp-libs,所以要先安装dhcp-libs
[root@localhost Packages]# rpm -ivh dhcp-libs-4.2.5-68.el7.centos.x86_64.rpm
warning: dhcp-libs-4.2.5-68.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:dhcp-libs-12:4.2.5-68.el7.centos ################################# [100%]
[root@localhost Packages]# rpm -ivh dhcp-libs-4.2.5-68.el7.centos.x86_64.rpm
warning: dhcp-libs-4.2.5-68.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
package dhcp-libs-12:4.2.5-68.el7.centos.x86_64 is already installed
[root@localhost Packages]# rpm -ivh dhcp-common-4.2.5-68.el7.centos.x86_64.rpm
warning: dhcp-common-4.2.5-68.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:dhcp-common-12:4.2.5-68.el7.cento################################# [100%]
[root@localhost Packages]#
3. RPM属性依赖的解决方式: YUM在线升级
Linux系统维护中令管理员很头疼的就是软件包之间的依赖性了,往往是你要安装A软件,但是编译的时候告诉你X软件安装之前需要B软件,而当你安装Y软件的时候,又告诉你需要Z库了,好不容易安装好Z库,发现版本还有问题等。
由于历史原因,RPM软件包管理系统对软件之间的依存关系没有内部定义,造成安装RPM软件时经常出现令人无法理解的软件依赖问题。其实开源社区早就对这个问题尝试进行解决了,不同的发行版推出了各自的工具,比如Yellow Dog的YUM,Debian的APT等。开发这些工具的目的都是为了要解决安装RPM时的依赖性问题,而不是额外再建立一套安装模式。这些软件也被开源软件爱好者们逐渐移植到别的发行版上。目前,APT和YUM都可以运行在Red Hat系统上。目前yum是Red Hat/Fedora系统上默认安装的更新系统。
........
自学Linux Shell9.2-基于Red Hat系统工具包存在两种方式之一:RPM包的更多相关文章
- 自学Linux Shell9.4-基于Red Hat系统工具包存在两种方式之二:源码包
点击返回 自学Linux命令行与Shell脚本之路 9.4-基于Red Hat系统工具包存在两种方式之二:源码包 本节主要介绍基于Red Had的系统(测试系统centos) 1. 工具包存在两种方式 ...
- 自学Linux Shell9.3-基于Red Hat系统工具包:RPM属性依赖的解决方式-YUM在线升级
点击返回 自学Linux命令行与Shell脚本之路 9.3-基于Red Hat系统工具包:RPM属性依赖的解决方式-YUM在线升级 本节主要介绍基于Red Had的系统(测试系统centos) yum ...
- 内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式.
内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式. 一丶IDT解析. 我们知道.IDT表中存放着各种中断信息.比如当我们调用int 3的时候,则会调用IDT表中的第三项来进行调用. 而函数 ...
- Linux下安装mysql(yum和源码编译两种方式)
这里介绍Linux下两种安装mysql的方式:yum安装和源码编译安装. 1. yum安装 (1)首先查看centos自带的mysql是否被安装: # yum list installed |grep ...
- nginx 服务器 在 centos7 系统下的两种方式
选用系统 Centos7 < 一 > 使用 yum 安装,该方法比较方便,如果不追求版本推荐使用 01, 添加 nginx 储存库 yum -y install epel-releas ...
- vs2013和.net 4.5.1调用.net core中的Kestrel(基于libuv)的http服务器代码 两种方式
nuget获取相关的包:两个:Microsoft.AspNetCore.Server.Kestrel 和 Microsoft.Extensions.Logging.Console 编译完成后手工将pa ...
- 基于aspectj实现AOP操作的两种方式——注解方式
- 基于aspectj实现AOP操作的两种方式——xml配置
1. 要导入的 jar 包: 常用的aspectj表达式: 权限修饰符可以省略,以下表示:返回值类型为任意,com.chy.service包以及其子包下的.任意类的.参数任意的.任意方法 execut ...
- linux中添加一个用户到指定用户组的两种方式,修改一个用户到指定用户组的一种方式
添加一个用户到指定用户组: gpasswd –a 用户名 组名usermod –G 组名 用户名 //第一种:gpasswd –a 用户名 组名 [root@localhost ~]# id user ...
随机推荐
- Flask核心机制--上下文源码剖析
一.前言 了解过flask的python开发者想必都知道flask中核心机制莫过于上下文管理,当然学习flask如果不了解其中的处理流程,可能在很多问题上不能得到解决,当然我在写本篇文章之前也看到了很 ...
- LNMP 1.x升级到LNMP 1.4教程及注意事项和多PHP版本使用教程
LNMP 1.x版本基本都可以正常升级到1.4使用1.4的管理脚本和新的功能. 升级管理脚本:wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz &am ...
- 11.10 (下午)开课二个月零六天(ajax验证用户名,ajax调数据库)
用ajax验证用户名是否可用 testuid.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...
- Scala学习(七)练习
控制结构和函数 1. 编写示例程序,展示为什么 package com.horstmann.impatient 不同于 package com package horstmann package im ...
- CentOS搭建NAT和DHCP服务,实现共享上网
什么是NAT? NAT(Network address translation)即网络地址转换,作为一种过渡解决手段,可以用来减少对全球合法IP地址的需求.简单的说,NAT就是在内部专用网络中使用内部 ...
- Helper
//检测端口是否使用 public static bool VerifyListenerPort(int port) { bool inUse = false; System.Net.NetworkI ...
- 微信扫描 安卓和ios 不会
wx.ready(function(){ $('#scan').click(function(){ wx.scanQRCode({ needResult: 1, // 默认为0,扫描结果由微信处理,1 ...
- 关于本科毕业论文《Laguerre小波在数值积分与微分方程数值解中的应用》存在的问题与小结
本科的毕业设计<Laguerre小波在数值积分与微分方程数值解中的应用>是通过Laguerre小波函数来近似表达某个需要求积分或解微分方程的函数,将原函数很难求得函数用小波函数表达出来,这 ...
- 总结 推广app
扫一扫二维码即可安装使用我们的app,方便快捷. 电脑端下载地址:http://pan.baidu.com/s/1bocWPPX http://a.app.qq.com/o/simple.jsp?pk ...
- [福大软工] Z班——Alpha现场答辩情况汇总
Alpha现场答辩 小组互评(文字版) 各组对于 麻瓜制造者 的评价与建议 队伍名 评价与建议 *** 界面较友好,安全性不足,功能基本完整.希望能留下卖家的联系方式而不是在APP上直接联系,APP上 ...