(一)软件包的分类:

(1)源码包:

①优点:

1、开源,如果有足够的能力,可以修改源代码


2、可以自由选择所需的功能


3、软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高


4、卸载方便{直接删除安装目录}



②缺点:

1、安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误


2、编译过程时间较长,安装比二进制安装时间长


3、因为是编译安装,安装过程中一旦报错新手很难解决





(2)脚本安装包:源码包在开发,不用一步一步安装{直接运行安装的脚本即可}

脚本安装包并不是独立的软件包类型,常见安装的是源码包。是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。非常类似于Windows下软件的安装方式。






(3)二进制包{软件厂商把源码包已经进行了编译,在安装的时候看不到源代码,特点是安装速率快}{RPM,系统默认包}

①优点:

1、包管理系统简单,只通过几个命令就可以卖现包的安装、升级、查询和卸载


2、安装速度比源码包安装快的多



②缺点:

1、经过编译,不再可以看到源代码


2、功能选择不如源码包灵活


3、依赖性



③rpm包默认安装位置:

1、/etc/:配置文件安装目录


2、/usr/bin/:可执行的命令安装目录


3、/usr/lib/:程序所使用的函数库保存位置


4、/usr/share/doc/:基本的软件使用手册保存位置


5、/usr/share/man/:帮助文件保存位置




④RPM包命名规则:

httpd-2.2.15-15.el6.centos.1.i686.rpm

1、httpd:软件包名



2、2.2.15:软件版本



3、15:软件发布的次数



4、el6.centos:适合的Linux平台



5、i686:适合的硬件平台



6、rpm:rpm包扩展名



7、包名和包全名的规则:

<1>包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径包名:


<2>操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm/中的数据库





(4)安装位置不同带来的影响:

①RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法有2种:

1、/etc/rc.d/init.d/httpd start //使用绝对路径启动:


2、service httpd start //使用系统命令来启动,这个命令一般是红帽系列才有的,其中service的意思是去“/etc/rc.d/init.d下去找有没有这个httpd的服务”如果有的话就启动,但是带的问题是如果是通过源码包安装的软件就没法通过"service"来实现重启



②源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理,如:

1、/usr/local/apache2/bin/apachectl start






(二)源码包的安装:

(1)源码包安装位置:

①安装在指定位置,一般是/usr/local/软件名/

②源代码保存位置:/usr/local/src/





(2)源码包安装过程:

①安装gcc编译器



②上传软件包到指定位置



③解压安装包的目录,并且进入到该目录



④阅读安装步骤:


linux软件包的管理_软件包的管理



<1>$ ./configure --prefix=PREFIX //软件的配置和检查,/configure --help,使用帮助;./configure --prefix=/usr/local/apache2 //定义apache的安装位置

定义需要的功能和选项

检测系统环境是否符合安装要求

把定义好的功能和检测系统环境的信息都写入Makefile文件中,用于后续的编辑



<2>$ make //make的作用就是把源码包编译成机器语言;make clean //可以清空make产生的临时文件




<3>$ make install //这时候才会写入真正的数据




<4>$ PREFIX/bin/apachectl start //启动安装的业务,这里的“ PREFIX”意思是路径的意思,安装的时候放在哪里就从哪里进入启动

/usr/local/apache2/bin/apachectl start




⑤源码包的卸载:直接把安装的文件夹给删除掉

rm -fr /usr/local/apache2/




⑥注意事项:什么时候选择源码包什么时候选择rpm包:

1、源码包是经过编译的执行效率更高,也会对外访问, 更加适合当前的计算机,应该选择源码包安装

2、不对外访问比如gcc选择rmp包安装更加简单





(三)RMP安装前的问题-->包的依赖性:

(1)树形依赖:a->-b>->c





(2)环形依赖:a->-b>->c->a





(3)模块依赖:http://www.rpmfind.net/





(四)rpm-rpm包的安装中的事宜:

(1)rmp -ivh包全名:





(2)选项:

①i:安装


②v:显示详细信息


③h:显示进度


④--nodeps:不检测依赖性





(3)安装过程:{要进到安装包的路径或者指定绝对路径}

①安装要安装的主包使用“包全名”“提示”错误

[root@kvm Packages]# rpm -ivh httpd-2.4.6-90.el7.centos.x86_64.rpm

错误:依赖检测失败:

/etc/mime.types 被 httpd-2.4.6-90.el7.centos.x86_64 需要

httpd-tools = 2.4.6-90.el7.centos 被 httpd-2.4.6-90.el7.centos.x86_64 需要

.0()(64bit) 被 httpd-2.4.6-90.el7.centos.x86_64 需要

.0()(64bit) 被 httpd-2.4.6-90.el7.centos.x86_64 需要


②复制被依赖的“名字”,比如“/etc/mime.types”去rpm依赖网站去寻找系统对应的rpm包,然后安装,一步一步依赖

linux软件包的管理_软件包的管理_02




③先安装这个包 rmp -ivh mailcap-2.1.41-2.el7.noarch.rpm

linux软件包的管理_软件包的管理_03





(4)RPM包升级:{要进到安装包的路径或者指定绝对路径}

①rpm -Uvh 包全名:



②选项:

U:升级





(5)RPM包卸载:

①rpm -evh 包名



②选项:

e:卸载





(6)RPM包的查询:

①rpm -qi 包名



②选项:

1、q:查询


2、i:详细信息


3、p:查询未安装包信息


4、a:所有



linux软件包的管理_软件包的管理_04





(7)查询RPM包的安装位置:

①rpm -ql 包名



②选项:

1、l:列表


2、q:查询安装包的信息




(8)查询未安装的RPM包的可能会安装的位置:

①rpm -qlp 包全名



②选项:

1、l:列表


2、q:查询安装包的信息


3、p:查询未安装包的信息



③演示1:

rpm -qpl pam-1.1.8-22.el7.x86_64.rpm






(9)查询系统文件属于哪个RPM包:

①rpm -qf 系统文件名

1、 rpm -ql httpd


2、rpm -qf /usr/share/httpd/noindex/images //通过这个就知道这个文件是属于哪个包的



②选项:

f:查询系统文件属于哪个软件包





(10)查询软件包的依赖:

① rpm -qR httpd



②rpm -qpR mysql



②选项:

1、R:查询软件包的依赖性


2、p:查询未安装包信息





(11)RPM包效验:{看这个包是否被修改过}

①rpm -V 已安装包的包名 //不出现任何信息说明没呗修改

验证内容中的8个信息的具体内容如下:

1、S文件大小是否改变

2、M文件的类型或文件的权限(rwx)是否被改变

3、5文件MD5校验和是否改变(可以看成文件内容是否改变)

4、D设备的中,从代码是否改变

5、L文件路径是否改变

6、U文件的属主(所有者)是否改变

7、G文件的属组是否改变

8、T文件的修改时间是否改变


文件类型:

1、c配置文件(config file)

2、d普通文档(documentation)

3、g“鬼”文件(ghost file),很少见,就是该文件不应该被这个RPM包包含

4、I授权文件(license file)

5、r描述文件(read me)



②选项:

1、V:效验指定RPM包中的文件






(12)rpm包文件提取:{只提取rpm包中的某一个指定的文件}

①cpio 选项 <[文件|设备]



②rpm2cpio 包全名 | cpio -idv . 文件绝对路径 //把从rpm包中提取到的文件放在当前目录下

1、rpm2cpio:将rpm包转换成cpio格式的命令


2、cpio:是一个标准工具,它用于创建档案文件和从档案文件中提取文件



③选项:

1、i:copy-in模式,还原



2、d:还原时自动新建目录



3、v:显示还原过程



④演示1:

1、 rpm -qf /bin/ls //先查询丢失的命令属于哪个rpm包



2、mv /bin/ls /tmp //假设将ls命令给放到了tmp下,这时候系统命令就不能使用ls了



3、rpm2cpio /mnt/cdrom/Packages/util-linux-ng-2.17.2-12.7.el6.i686.rpm | cpio -idv ./bin/more //提取rmp包中的/bin下的/more命令到当前目录,使用d在当前目录新建了目录/bin/

这个命令在centos7中不能使用,发现没有创建文件件也提取不到这个包,在实验中只有centos6成功了



4、cp /root/bin/ls /bin/ //把ls命令复制到/bin/目录下修复丢失的文件





(五)rpm包-yum安装:

(1)yum源:vim /etc/yum.repos.d/CentOS-Base.repo

①base:容器名称,一定要放在[]中


②name:容器说明,可以自己随便写


③mirrorlist:镜像站点,这个可以注释掉


④baseurl:我们的yum源服务器的地址。默认是CentOS官方的yum源服务器,是可以使用的,如果你觉得慢可以改成你喜欢的yum源地址


⑤enabled:此容器是否生效,如果不写或写成enable=1都是生效,写成enable=0就是不生效


⑥gpgcheck:如果是1是指RPM的数字证书生效,如果是0则不生效


⑦gpgkey:数字证书的公钥文件保存位置。不用修改





(2)演示1:yum源示例

[base]

name=CentOS-$releasever - Base - mirrors.aliyun.com

failovermethod=priority

baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/

http:///centos/$releasever/os/$basearch/

http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/

enabled=1

gpgcheck=1

gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7




(3)yum命令:

①yum list //查询可用的软件包列表



②yum search [关键字] //搜索关键字相关的包




(4)yum的安装:

yum -y install 包名



①install //安装



②y:自动回答yes




(5)yum的升级:

yum update [包名] //如果不跟包名,会升级全部的包,包括内核




(6)yum的卸载:{危险操作,会导致某些依赖被卸载}

yum remove [包名]




(7)yum软件组管理:{这个过程和安装系统时候选择安装的是一样的}

①yum grouplist //列出所有可用的软件列表



②yum groups install [软件组名] //安装指定软件组,组名可以由grouplist查询出来



③yum groups remove [软件组名] //卸载指定的软件组





(六)yum管理-光盘管理:

(1)光盘yum源的搭建:


①mount /dev/cdrom /mnt/cdrom/ //挂载光盘



②让网络yum源失效,把除了光盘yum源都改名,因为yum检测是后缀repo,只留光盘yum即可


linux软件包的管理_软件包的管理_05



③修改yum源光盘文件:

[c7-media]

name=CentOS-$releasever - Media

baseurl=file:///mnt/cdrom //这里的地址为光盘挂载的位置,其中第三个/为根的意思

# file:///media/cdrom/

# file:///media/cdrecorder/

gpgcheck=1

enabled=1 //这里开关打开为1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7