CentOS7主要有rpm和yum这两种包软件的管理。两种包的管理各有用处,其中主要区别是:YUM使用简单但需要联网,YUM会去网上的YUM包源去获取所需要的软件包。而RPM的需要的操作经度比较细,需要我们做的事情比较多。
软件包的安装和卸是很平常的事,但在Linux上面却不简单。Linux的其中一个哲学就是一个程序只做一件事,并且做好。组合小程序来完成复杂的任务,这样做有很多好处,但是各个小程序之间往往会存在着复杂的依赖关系。这时就有了redhat包管理器rpm。英文是redhat package manager ,redhat 软件包的管理。
rmp原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。
rpm是以一种数据库记录的方式来将所需要的套件安装在Linux主机的一套管理程序。也就是说Linux系统中存在一个关于rpm的数据库,它记录了安装的包与包之间的依赖相关性。rpm包是预先在Linux主机上编译好并打包的文件,安装起来非常快捷。
要安装rpm包,首先需要下载对应包,可用的下载链接:
http://rpmfind.net/
http://www.rpmseek.com/index.html
http://rpm.pbone.net/
以tree命令对应的rpm包为例,下载界面可能是这样的:
可以看到,有许多不同版本的rpm包,那么我们在确定应该下载哪个前,需要先了解rpm包的包名含义。
1. rpm包名详解
rpm包以.rpm结尾,而源码包以.src.rpm结尾。RPM软件包命令规则:
name-version-arch.rpm
name-version-arch.src.rpm
以tree-2.0.2-1.2.x86_64.rpm为例
- name,如:tree,是软件的名称
- version,如:2.0.2-1.2,是软件的版本号,版本号格式通常为“主版本号.次版本号.修正号”。
- arch,如:x86_64,是表示包适用的硬件平台,目前rpm支持的平台有:i386,i586,i686,sparc和alpha
- rpm和.src.rpm,是rpm包类型后缀,rpm是编译好的二进制包,.src.rpm是源码包
- 特殊名称:
(1)el*:表示发行商的版本,el6表示这个软件包是在rhel6.x/centos6.x下使用;rpm包有个特点,centOS7的rpm包一般只能装到CentOS7的系统里,CentOS6的软件包只能装到CentOS6的系统里。
(2)devel:表示这个rpm包是软件的开发包
(3)noarch:说明这样的软件包可以在任何平台安装和运行,不需要特定的硬件平台
仅了解包名定义还无法帮助我们准确的找到我们需要的包,因为arch这一项我们还不太解
2. 安装包的划分
1.安装包按操作系统划分,可以分为:
windows包,以.mis以及.exe结尾
linux包,以.rpm以及.deb结尾
2.也可以按照处理器进行划分,如:
xxx.x86_64.rpm,xxx.x86.exe,xxx_amd64.deb
上面x86_64,x86,amd64这三种属于x86架构。
xxx.aarch64.rpm
而aarch64这种属于arm架构
3. 处理器架构简介
关于arm架构和x86架构的介绍,不是此次学习重点,简略介绍。
3.1 x86架构
一般PC机都选择x86这种架构处理器
-
x86和x64
x86是指32位处理器、(x86_64有时简称为x64)x64是指64位处理器,因为x64指令是在x86指令集上扩展出来的,所以x86编译出来的程序可以在64位处理器上运行,反过来就不行。 -
x64和amd64
这个有点历史渊源,一开始interl和amd都是x86架构,后来intel和amd都开始研发各自的64位处理器指令集,intel选择开辟新的指令集,amd则选择在x86上扩展。后来证明intel方案失败了,最终intel也采用amd的64指令标准,做了稍微的修改,所以有了x64和amd64。
3.2 arm架构
32位处理器需要armv7,或者armv7s架构,
64位处理器需要arm64架构。
3.3 其他
i386 就是已经即将被淘汰的x86的以奔腾系列位代表的32位架构
power9 ppc64le ppc64对应IBM的power系列,仅作了解
aarch64 就是arm架构的64位系统(aarch64和arm64指的是同一件事,两者已合并,现称为aarch64)
更多细节以及处理器发展,可参考文章https://blog.csdn.net/zygblock/article/details/60867744
至此,我们再看最开始的那张图,就能明白每个包适用的系统了。
另外,要确定我们自己的linux版本,可以通关查看镜像文件的命名,或者终端输入uname -a查看
4. rpm常用命令
-i 安装软件包(–install)
可选附带参数:
–nodeps 不验证软件包的依赖
–force 强制安装,即使覆盖其他包的文件也要安装
-v 可视化,提供更多的详细信息的输出
-h 显示安装进度
-a 查询所有已经安装的软件包
-f 查询文件所属于的软件包
-q 查询软件包(通常用来看下还未安装的软件包,注意,查询时不需要带包名后缀,只需命令名,如rpm -q tree)
-l 显示软件包的文件列表
-e 卸载指定软件包(注意,卸载时需要指定具体包名后缀,如 rpm -e tree-1.7.0-1.30.x86_64)
-U 升级软件包,很少用
常用组合:
-ivh 安装指定rmp包并显示安装进度
-qa 查询所有已经安装的软件包
-qi 查询软件包安装信息
-ql 显示软件包的文件列表
-qf 查询文件所属的文件包
5. Ubuntu无法安装rpm包
ubuntu RPM should not be used directly install RPM packages, use Alien instead!
Ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb
1.alien默认没有安装,所以首先要安装它
sudo apt-get install alien
2.将rpm转换位deb,完成后会生成一个同名的xxxx.deb
sudo alien xxxx.rpm
3.安装
sudo dpkg -i xxxx.deb
关于ubuntu以及dpkg命令,另起文章介绍