点击返回 自学Linux命令行与Shell脚本之路

9.2-基于Red Hat系统工具包存在两种方式之一:RPM包

本节主要介绍基于Red Had的系统(测试系统centos)

1. 工具包存在两种方式:RPM包与源码包

1.1.RPM包与源码包区别
安装之前的区别:概念上的区别
  • 源码包是开源的,比RPM包安装更自由,但是它安装更慢,更容易报错;
  • RPM包是经过编译的,不能看到源代码,但是它安装更快,报错更容易解决,只有依赖性问题。
            缺点:安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
安装之后的区别:安装位置不同
  • RPM包不需要指定安装位置,它会安装到系统默认位置;
  • 源码包是人为手工设置的
1.2.安装位置
  RPM包是按照在默认位置中
  RPM包默认安装路径
  • /etc/ 配置文件安装目录
  • /usr/bin/ 可执行的命令安装目录
  • /usr/lib/ 程序所使用的函数库保存位置
  • /usr/share/doc/ 基本的软件使用手册保存位置
  • /usr/share/man/ 帮助文件保存位置
   源码包安装位置
  • .安装在指定位置当中,一般是/usr/local/软件名/

1.3 安装位置不同带来的影响

.RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法是:
  • /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  查看所有包名
rpm -qa |  grep 包名查看某个包名

-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包的更多相关文章

  1. 自学Linux Shell9.4-基于Red Hat系统工具包存在两种方式之二:源码包

    点击返回 自学Linux命令行与Shell脚本之路 9.4-基于Red Hat系统工具包存在两种方式之二:源码包 本节主要介绍基于Red Had的系统(测试系统centos) 1. 工具包存在两种方式 ...

  2. 自学Linux Shell9.3-基于Red Hat系统工具包:RPM属性依赖的解决方式-YUM在线升级

    点击返回 自学Linux命令行与Shell脚本之路 9.3-基于Red Hat系统工具包:RPM属性依赖的解决方式-YUM在线升级 本节主要介绍基于Red Had的系统(测试系统centos) yum ...

  3. 内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式.

    内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式. 一丶IDT解析. 我们知道.IDT表中存放着各种中断信息.比如当我们调用int 3的时候,则会调用IDT表中的第三项来进行调用. 而函数 ...

  4. Linux下安装mysql(yum和源码编译两种方式)

    这里介绍Linux下两种安装mysql的方式:yum安装和源码编译安装. 1. yum安装 (1)首先查看centos自带的mysql是否被安装: # yum list installed |grep ...

  5. nginx 服务器 在 centos7 系统下的两种方式

    选用系统 Centos7 < 一 >  使用 yum 安装,该方法比较方便,如果不追求版本推荐使用 01, 添加 nginx 储存库  yum -y install epel-releas ...

  6. vs2013和.net 4.5.1调用.net core中的Kestrel(基于libuv)的http服务器代码 两种方式

    nuget获取相关的包:两个:Microsoft.AspNetCore.Server.Kestrel 和 Microsoft.Extensions.Logging.Console 编译完成后手工将pa ...

  7. 基于aspectj实现AOP操作的两种方式——注解方式

  8. 基于aspectj实现AOP操作的两种方式——xml配置

    1. 要导入的 jar 包: 常用的aspectj表达式: 权限修饰符可以省略,以下表示:返回值类型为任意,com.chy.service包以及其子包下的.任意类的.参数任意的.任意方法 execut ...

  9. linux中添加一个用户到指定用户组的两种方式,修改一个用户到指定用户组的一种方式

    添加一个用户到指定用户组: gpasswd –a 用户名 组名usermod –G 组名 用户名 //第一种:gpasswd –a 用户名 组名 [root@localhost ~]# id user ...

随机推荐

  1. vue 动态创建组件(运行时创建组件)

    function mountCmp (cmp, props, parent) { if (cmp.default) { cmp = cmp.default } cmp = Vue.extend(cmp ...

  2. Luogu P4427 [BJOI2018]求和

    这是一道巨狗题,我已无力吐槽为什么我怎么写都不过 我们对于这种无修改的边权题目有一个经典的树上差分套路: \(ans=sum_x+sum_y-2\cdot sum_{LCA(x,y)}\) 这里的\( ...

  3. Bayesian Personalized Ranking 算法解析及Python实现

    1. Learning to Rank 1.1 什么是排序算法 为什么google搜索 ”idiot“ 后,会出现特朗普的照片? “我们已经爬取和存储了数十亿的网页拷贝在我们相应的索引位置.因此,你输 ...

  4. python中和生成器协程相关的yield之最详最强解释,一看就懂(一)

    yield是python中一个非常重要的关键词,所有迭代器都是yield实现的,学习python,如果不把这个yield的意思和用法彻底搞清楚,学习python的生成器,协程和异步io的时候,就会彻底 ...

  5. 安装Visual Studio2013

    安装Visual Studio2013现在官网下载在选择安装的可选功能这里,大家可以根据自己需要勾选,也可以默认全选.这里有个小功能,把鼠标放在文字上,会弹出各个功能的详细描述.选择四个常用的功能,另 ...

  6. Peer Programming Project: 4 Elevators Scheduler 附加题 157 165

    1.改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享. 每个电梯增加目标楼层数组,这样可以更好地进行任务的分配,在我们的电梯中,这个数 ...

  7. Scrum Meeting 6

                第六次会议 由于之前队员一直在做数据库和编译大作业,课业压力较大,所以软工进度往后拖了好多. No_00:工作情况 No_01:任务说明 待完成 已完成 No_10:燃尽图 N ...

  8. Oracle系列(一): Oracle数据恢复

     Oracle数据恢复 在使用Oracle的时候,突然一部小心update或者delete全部数据后怎么办? select * from table as of timestamp to_timest ...

  9. 我的software

    每个学计算机软件的同学都有可能经历以下的情况: 1.  哎,我家电脑开不了机了,来帮帮忙 2.  我耳机坏了,你给修修吧 3.  你能换手机屏不 4.  过来看下,我的Word打不开了 等等等等 这些 ...

  10. JavaScript的类、对象、原型、继承、引用

    以CSS为例,有一种为所有class为"xxxx"的元素添加样式(外联样式),那么所有class为xxx的元素样式就会改变,在css中像下面这么写: <html> &l ...