Linux下的软件包众多,且几乎都是经 GPL 授权、免费开源(无偿公开源代码)的。这意味着如果你具备修改软件源代码的能力,只要你愿意,可以随意修改。
1.Linux源码包
源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。由于源码包的安装需要把源代码编译为二进制代码,因此安装时间较长。
2.Linux二进制包
二进制包,也就是源码包经过成功编译之后产生的包。由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快(同 Windows下安装软件速度相当),且安装过程报错几率大大减小。
二进制包是 Linux 下默认的软件安装包,因此二进制包又被称为默认安装软件包,也是我们通常所说的rpm包。
3.两者的对比
RMP 包安装软件包管理系统简单,只通过几个命令就可以实现包的安装、升级、査询和卸载。但功能选择不如源码包灵活,通常需要解决一定的依赖性。
源码包安装软件可以自由选择所需的功能,因为软件是编译安装的,所以更加适合自己的系统,更加稳定,效率也更高。但安装过程步骤较多,编译时间较长。
RPM 二进制包的命名需遵守统一的命名规则,用户通过名称就可以直接获取这类包的版本、适用平台等信息。
RPM 二进制包命名的一般格式如下:
包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名
例如,RPM 包的名称是httpd-2.2.15-15.el6.centos.1.i686.rpm,其中:
(1)httped:软件包名。这里需要注意,httped 是包名,而 httpd-2.2.15-15.el6.centos.1.i686.rpm 通常称为包全名,包名和包全名是不同的,在某些 Linux 命令中,有些命令(如包的安装和升级)使用的是包全名,而有些命令(包的查询和卸载)使用的是包名,一不小心就会弄错。
(2)2.2.15:包的版本号,版本号的格式通常为主版本号.次版本号.修正号。
(3)15:二进制包发布的次数,表示此 RPM 包是第几次编程生成的。
(4)el*:软件发行商,el6 表示此包是由 Red Hat 公司发布,适合在 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用。
(5)centos:表示此包适用于 CentOS 系统。
(6)i686:表示此包使用的硬件平台。
?
使用 rpm 做查询命令的格式如下:
[root@localhost ~]# rpm 选项 查询对象
rpm -q:查询软件包是否安装
用 rpm 查询软件包是否安装的命令格式为: rpm -q 包名
rpm -qa:查询系统中所有安装的软件包
使用 rpm 查询 Linux 系统中所有已安装软件包的命令为: rpm -qa
rpm -qi:查询软件包的详细信息
通过 rpm 命令可以查询软件包的详细信息,命令格式如下: rpm -qi 包名
rpm -ql:命令查询软件包的文件列表
通过前面的学习我们知道,rpm 软件包通常采用默认路径安装,各安装文件会分门别类安放在适当的目录文件下。使用 rpm 命令可以查询到已安装软件包中包含的所有文件及各自安装路径,命令格式为: rpm -ql 包名
rpm -qf:命令查询系统文件属于哪个RPM包
rpm -qR:查询软件包的依赖关系
主要rpm选项:
安装:rpm-i|-install rpmfile.
rpm -ivh*.rpm -force ?//强制安装软件包
·升级:rpm -U | --upgrade rpmfile
·刷新:rpm -F ?| --freshen rpmfile
·删除:rpm -e | --erase package
1.-U可升级已安装的软件,升级时原有的软件包(不包括配置文件)将被删除,取而代之新的的软件包,原来软件包的配置文件将以.rpmsave扩展名存在.
2.-F和-U几乎完全相同,但如果命令行中指定的软件包还没有在系统安装,这二者就有所区别:
当使用-F在刷新时,如果系统中没有安装该软件包,那么该软件包会被忽略.U升级时,无论软件包是经安装,都会在系统中安装该软件包。
3.使用-e(erase)命令行选项可将软件从你的系统中删除,软件包参数必须是已安装软件包的名称,不是软件包文件名。
·输出选项:-v:查看更详细的安装信息画面,-h:以安装信息栏显示安装进度.
·URL支持:ftp://(带匹配),http://
五、YUM软件包管理器
yum是一个专门为了解决包的依赖关系而存在的软件包管理器。就好像 Windows 系统上可以通过 360 软件管家实现软件的一键安装、升级和卸载,Linux 系统也提供有这样的工具,就是 yum。
它很好的解决了 RPM 所面临的软件包依赖问题。yum 在服务器端存有所有的 RPM 包,并将各个包之间的依赖关系记录在文件中,当管理员使用 yum 安装 RPM 包时,yum 会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的 RPM 包并进行安装。
yum 软件可以用 rpm 命令安装,安装之前可以通过如下命令查看 yum 是否已安装:
[root@localhost ~]# rpm -qa | grep yum
yum-metadata-parser-1.1.2-16.el6.i686
yum-3.2.29-30.el6.centos.noarch
yum-utils-1.1.30-14.el6.noarch
yum-plugin-fastestmirror-1.1.30-14.el6.noarch
yum-plugin-security-1.1.30-14.el6.noarch
在无法联网的情况下,yum 需要考虑用本地光盘(或安装映像文件)、网络共享目录作为 yum 源。
搭建本地光盘的yum源步骤:
1、放入 CentOS 安装光盘,并挂载光盘到指定位置。
[root@localhost ~]# mount /dev/sr0 /mnt
mount: block device/dev/sr0 is write-protected, mounting read-only
2、修改光盘 yum 源配置文件 local.repo,参照以下方修改:
[root@localhost yum.repos.d]# vim local.repo
[rhel76]
name=rhel76
baseurl=file:///mnt/
#地址为你自己的光盘挂载地址
gpgcheck=1
enabled=1
#把enabled=0改为enabled=1, 让这个yum源配置文件生效
yum查询命令
yum list:查询所有已安装和可安装的软件包
yum search 关键字:从 yum 源服务器上查找与关键字相关的所有软件包。
yum info 包名:查询执行软件包的详细信息。
yum常用操作
yum 安装软件包的命令基本格式为:yum -y install 包名
yum 升级命令:yum -y update 包名:升级特定的软件包。
yum 卸载命令:yum remove 包名。(除非你能确定卸载此包以及它的所有依赖包不会对系统产生影响,否则不要使用 yum 卸载软件包。)
yum查询软件组包含的软件
既然是软件包组,说明包含不只一个软件包,通过 yum 命令可以查询某软件包组中具体包含的软件包,命令格式如下:yum groupinfo 软件组名
例如,查询 Web Server 软件包组中包含的软件包,可使用如下命令:
[root@localhost ~]#yum groupinfo "Web Server"
#查询软件组"Webserver"中包含的软件
?
七、实验
1、分别用源码包、二进制包、yum方式安装一种软件包