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包的包名含义。
- 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这一项我们还不太解
- 安装包的划分
- 安装包按操作系统划分,可以分为: windows包,以.mis以及.exe结尾 linux包,以.rpm以及.deb结尾
- 也可以按照处理器进行划分,如: xxx.x86_64.rpm,xxx.x86.exe,xxx_amd64.deb 上面x86_64,x86,amd64这三种属于x86架构。 xxx.aarch64.rpm 而aarch64这种属于arm架构
- 处理器架构简介 关于arm架构和x86架构的介绍,不是此次学习重点,简略介绍。
- 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。
- 2 arm架构 32位处理器需要armv7,或者armv7s架构, 64位处理器需要arm64架构。
- 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查看
- 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 查询文件所属的文件包
- Ubuntu无法安装rpm包 ubuntu RPM should not be used directly install RPM packages, use Alien instead! Ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb
- alien默认没有安装,所以首先要安装它 sudo apt-get install alien
- 将rpm转换位deb,完成后会生成一个同名的xxxx.deb sudo alien xxxx.rpm
- 安装 sudo dpkg -i xxxx.deb