会不会有那么一天,生活可以简单到每天清早踏上一辆载着鲜花的脚踏车,微笑着穿过窄窄的街巷,为爱花的人送去芬芳,为需要知识的你送去帮助。
本章节会详细给大家介绍Linux安装软件包。
1.软件包的封装类型
对于各种应用程序的软件包,在封装时可以采用不同的类型,不同类型的软件包其安装方法也各不相同,常见的软件包封装类型如下所示:
RPM软件包:它是Redhat Linux可用的一种包封装格式,这种软件包文件的扩展名为“.rpm”,只能在使用RPM(RPM Package Manager,ROM软件包管理器)机制的linux操作系统中安装,如:RHEL,Fedora,Centos等,RPM本质上就是一个包,包含可以立即在特定机器体系结构上安装和运行的Linux软件,安装RPM软件包需要使用RPM命令或yum命令。
DEB软件包:是Debain Linux提供的一种包封装格式,这种软件包文件的扩展名为“.deb”,只能在使用DPKG(Debian package,Debian包管理器)机制的Linux操作系统中进行安装,如:Debian,ubantu等,安装deb软件包需要使用dpkg命令。
源代码软件包:这种软件包是程序开发完成的原始代码,它的内容多是一种可编译运行的源代码,编译方法稍后会提到,这种软件包文件的后缀为.tar.gz,tar.Z,tar.bz2或.tgz,因多数是使用Unix系统打包工具tar打包的,所以经常被称为“TarBall”。安装源码需要使用相应的编译工具,如Linux中的C/C++语言编译器gcc,gcc-c++。
附带安装程序的软件包:这种软件包的扩展名不一,但仍以TarBall格式的居多,软件包中会提供于安装的可执行程序或脚本文件,ruinstall.sh,setup等,有时会以.bin格式的单个安装文件形式出现,安装时只需运行安装文件就可以根据向导程序的提示完成安装操作。
开放源代码的自由软件大多数选择以TarBall的形式发布,而RPM软件包,DEB软件包等则使用了二进制的文件格式,代码相对比较封闭,一般来说,自己动手编译源程序能够更具灵活性,但也容易遇到各种问题和困难,而相对来说,下载那些可执行程序包,反而是更容易完成软件的安装,当然那样灵活性就差多了,所以一般一个软件总会提供多种打包格式的安装程序的,你可以根据自己的额情况来选择。
2.使用RPM软件包管理工具
RPM概念:
RPM软件包管理机制最早由Red hat公司提出,后来随着版本的升级逐渐融于更多的优秀特性,成为众多Linux发行版本中公认的软件包管理标准,其官方网站https://rpm.org/,可以了解到关于RPM包管理机制的详细资料。
使用RPM机制封装的软件包文件拥有约定俗的命名格式,一般使用“软件名-软件版本-发布次数.操作系统类型,硬件架构类型.rpm”的文件形式。如:
httpd-2.4.6-80el7.centos.x86_64.rpm
httpd:软件名。
2.4.6:是软件的版本号。版本号的格式通常为“主版本号.次版本号.修正号”。
80:是发布版本号(发布次数),表示这个RPM包是第几次编译而成的。硬件平台通常为“i386”或“i686”,x86_64,noarch等,表示适用的硬件平台,x86_64表示适用于64位的系统,如果是noarch表示不区分硬件架构。
Centos的DVD安装光盘携带的软件包都在Packages目录中,一般情况下(指的是桌面环境),Centos启动后安装光盘会自动挂载到系统的/run/media/root/CentOS 7 x86_64/目录下。
执行df命令查看文件系统的挂载情况(使用df -hT会更详细)
例如:

若是启动到字符终端,需要手动挂载光驱设备,先将centos的光盘镜像放入光驱设备中,上图我们执行了df命令发现光驱设备未挂载。下面执行mount命令挂载光盘设备。
mount命令功能是挂载一个文件系统。
格式:mount [选项] device dir
其中device是要挂载的文件系统或设备,dir是挂载点目录。
使用mount命令挂载光盘,例如:

我们第一次挂载可能会出现这样的情况,它说没有在sr0上找到介质,原因是我们vmWare里没有连接光驱,
首先打开虚拟机界面,如图:

然后我们右击上图的光盘图表,点击连接,我们的光盘就连接到虚拟机了。
如图:

接下来我再次使用mount命令来挂载光盘,就成功了,如图:

这时候我们在使用df -hT命令查看文件系统的挂载情况会发现最下面的一样就是我们刚才手动挂载的光盘。
如图:

我们进入到mnt目录中可以看到CentOS7的光盘内容
如图:

其中光驱设备名是/dev/sr0或/dev/cdrom(/dev/cdrom是/dev/sr0的链接文件),/mnt就是挂载点目录。
如图:

卸除已挂载的文件系统
umount命令用于卸载已经加载的文件系统,利用设备名或挂载点都能umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。
umount [选项] device 或挂载点
我们使用umount命令卸除已挂载的文件系统,却提示/mnt目录正在使用,原因是我们当前工作的目录是/mnt目录,切回到家目录下或者非/mnt/目录就好了。
无法卸载如图:

卸载成功如图:

注意:上图是上上图的修改。
3.RPM包管理命令——rpm
主要功能
查询RPM软件,包文件的相关信息
安装,升级,卸载RPM软件包
维护RPM数据库信息
(1)查询已安装的PRM软件信息
格式:rpm -q[子选项] [软件名]
用法:结合不同的子选项,完成不同的查询
-qa : 查看系统中已安装的所有RPM软件包列表。
如图:

这时候的rpm包的数量是比价多的,如果我们想看当前主机安装的rpm包的数量时
如图:

这样就可以了。
-qi:查看指定软件的详细信息
如图:

-ql:查询指定软件包所安装的目录,文件列表
如图:

-qc:仅显示软件包安装的配置文件

-qd:仅显示指定软件包安装的文档文件

-qf :查询文件或目录属于哪个RPM软件
格式:rpm -qf 文件或目录名
如图:

(2)查询未安装的RPM包文件
格式:rpm -qp[子选项] RPM包文件
用法:结合不同的子选项,完成不同的查询。
-qpi :通过.rpm包文件查看该软件的详细信息
注意:查看未安装的软件信息需要切到 /mnt/Packages/ 下
如图:

-qpl :查看.rpm安装包内容所包含的目录,文件列表

-qpc :查看.rpm安装包内包含的配置文件列表

-qpd :查看.rpm安装包内包含的文档文件列表

(3)安装或升级RPM软件
格式:rpm [选项] RPM包文件...
用法:不同选项适用于不同情况
-i :安装一个新的rpm软件包
-U : 升级某个rpm软件,若原本未装,则进行安装。
-F :更新某个rpm软件,若原本未装,则放弃安装。
-h :在安装或升级软件包的过程中,以“#”好显示安装进度 -v:显示详细信息
-e :卸载指定的RPM软件。格式:rpm -e 软件名
--force :强制安装所指定的rpm软件包。
--nodeps :安装,升级,或卸载软件时,忽略依赖关系
(4)维护RPM数据库
RPM 数据库(/var/lib/rpm目录下)用于记录在Linux系统中安装,卸载,升级应用程序的相关信息,由RPM包管理系统自动完成维护,一般不需要用户干预,当RPM数据库发生损坏(误删文件,非法关机,病毒破坏等导致)且Linux系统无法自动完成修复时,将导致无法使用rpm命令正常的安装,卸载及查询软件包,这时候可以使用--rebuilddb或--initdb重建RPM数据库。
可以通过下面简单几个步骤来恢复:
删除rpm锁文件:
rm -rf /var/lib/rpm/_db.00*
2.重建RPM数据库:
rpm -vv --rebuilddb
(5)导入验证公钥
执行rpm命令时可能提示如下警告信息:

图中所画的警告信息是由于没有导入RedHat提供的公钥所致,但并不影响安装效果,可以忽略,如果需要导入公钥文件,可以参考如下步骤(导入公钥后,以后从centos光盘中安装软件时,就不在出现警告提示了)
输入如下代码,就可以导入公钥,并且没有警告信息:

(6)解决软件包依赖关系
RPM包依赖关系:
树形依赖:A-B-C-D
安装时要从后往前先从D开始,然后是C包...最后是A包
环形依赖:A-B-C-D-A
安装时要可以一条命令直接装完如:rpm -ivh A B C D
好了今天就说到这里,先说上半部分,说道这里其实大家都知道了,rpm软件包这里的依赖关系这里其实是有一些不足之处的,我们下篇会讲到弥补ROM软件包的的缺陷——yum命令。
故事很短,道理很长,学无止境,不忘初心,砥砺前行
今天的杂谈就到这里,不一定对每个人有用,但是对有需要的人会有帮助,做不到人民币,人人喜欢
如果觉得小编说的对,介绍给你们同事,朋友,亲戚吧,谢谢你们呦!,每天不定时更新哦!!!
微信搜索 “徐阿马杂谈” 关注公众号,把你们想知道的,想提的意见发给我,我会采纳!期待你的关注!







