首页 > 代码库 > Linux学习笔记(11)软件包管理

Linux学习笔记(11)软件包管理

Linux中的软件包分为源码包(脚本安装包)及二进制包(RPM包、系统默认包)。其中源码包的优点是:

1)源码包是开源的,如果有足够的能力,可以修改源代码;

2)可自由选择所需的功能

3)源码包需编译安装,所以更加适合自己的系统,稳定且效率高;

4)卸载方便,只需删除安装文件目录,且不留垃圾文件。

其缺点是:

1)安装过程步骤较多,尤其安装较大的软件集合时,容易出现拼写错误;

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

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

二进制包的优点是:

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

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

缺点是:

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

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

3)依赖性较强。

1 rpm命令管理

(1)rpm包的命名规则

rpm包如:httpd-2.2.15-15.el6.centos.1.i686.rpm

其中,httpd是软件包名,2.2.15是软件的版本,15是软件的发布次数,el6.centos是适合的Linux平台,i686是适合的硬件平台,rpm是rpm包扩展名

(2)rpm依赖性

树形依赖:包a依赖包b,包b又依赖包c,即a->b->c,卸载时的顺序是c->b->a。

环形依赖:如a->b->c->a,可以将a,b,c同时进行安装。

模块依赖:可以通过www.rpmfind.net网站查询模块依赖。

(3)rpm包的安装、升级与卸载

1)包全名与包名的区别

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

包名:操作已经安装的软件包时,将使用包名,主要是搜索/var/lib/rpm中的数据库

2)rpm安装,其格式为:

rpm -ivh 包全名

其中,-i表示安装(install),-v表示显示详细信息(verbose),-h表示安装进度(hash),--nodeps表示不检测依赖性

3)rpm包升级,其格式为:

rpm -Uvh 包全名

其中,-U选项表示升级(update)

4)rpm包卸载,其格式为:

rpm -e 包名

其中,-e表示卸载(erase),--nodeps表示不检查依赖性。

5)查询包是否安装,格式为:rpm -q 包名,其中-q选项表示查询(query)

   查询所有已安装的rpm包,格式为:rpm -qa 包名,其中-a表示所有(all)

6)查询软件包详细信息,格式为:rpm -qi 包名,其中-i选项表示查询软件信息(information),-p选项表示查询尚未安装的包信息(package)

7)查询包中文件的安装位置,格式为:rpm -ql 包名,其中-l选项表示列表(list),-p选项可以查看尚未安装的包中文件打算安装在哪个目录下(package)

8)查询系统文件属于哪一个rpm包,格式为:rpm -qf 系统文件名,其中-f选项表示系统文件,该文件必须是安装后生成的文件,自己创建的文件不能查询

9)查询软件包的依赖性,格式为:rpm -qR 包名,其中-R表示显示软件包的依赖性(requires)

(4)校验和文件提取

1)包校验主要是通过对比原始安装包,以检验包安装后的文件是否被修改。其格式为:

rpm -V 已安装的包名

其中-V选项表示检验(verify)

例:修改/etc/yum.conf中的注释部分,然后进行校验。

[root@localhost Packages]# rpm -V yumS.5....T.  c /etc/yum.conf

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

S

文件大小是否改变

M

文件的类型或文件的权限(rwx)是否被修改

5

文件MD5校验和是否被改变(可看成文件内容是否改变)

D

设备的代码是否改变

L

文件路径是否改变

U

文件的所有者是否改变

G

文件的所属组是否改变

T

文件的修改时间是否改变

之后的1信息表示文件类型,主要包含以下几种:

c

配置文件(config file)

d

普通文档(documentation)

g

"鬼"文档(ghost file),即该文件不应该被这个rpm包所包含

l

授权文件(license file)

r

描述文件(readme)

2)rpm包中文件的提取,常用于误操作,其格式为:

rpm2cpio 包全名 | cpio -idv .文件绝对路径

其中rpm2cpio命令是将rpm包转化为cpio格式的命令cpio是标准工具,用于创建软件档案文件及从档案文件中提取文件。其格式为:

cpio 选项 < [文件|设备]

其中-i选项为copy-in模式,表示还原,-d选项表示还原时自动新建目录,-v选项表示显示还原过程

例:

rpm -qf /bin/ls         #查询ls命令属于哪个软件包mv /bin/ls /tmp/       #造成ls命令误删的假象rpm2cpio /mnt/cdrom/Packages/coreutils-8.4--19.el6.i686.rpm | cpio -idv ./bin/ls    #提取rpm包中ls命令到当前目录的/bin/ls下cp ./bin/ls /bin/         #将ls命令复制回/bin目录,修复文件丢失

 

2  yum在线管理

yum主要是解决rpm包的依赖性问题。在不联网的情况下,可以将光盘作为yum源。

(1)IP地址配置

可以使用setup命令设置IP地址设置完之后需要将网卡设置为自启动,只需将/etc/sysconfig/network-scripts/ifcfg-eth0中的ONBOOT="no"修改为"yes"即可。设置完之后,需要重新启动网络服务,执行命令service network restart

(2)网络yum源

网络yum源保存在/etc/yum.repos.d/centos-Base.repo文件中

[base]name=CentOS-$releasever - Basemirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

文件内容具有如下类似的规则:

[base]                       #容器名称,一定要放在方括号"[]"中

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

mirrorlist                   #镜像站点,可注释掉

baseurl                      #yum源服务器地址

enabled                     #此容器是否生效,0表示不生效,不写或1表示生效

gpgcheck                   #为1表示rpm的数字证书生效,为0表示不生效

gpgkey                       #数字证书的公钥文件保存位置,这里不用修改

(3)yum命令

注意yum命令没有包全名的概念!

1)查询所有可用软件包列表,其格式为:yum list搜索服务器上所有与关键字相关的包,其格式为:yum search 关键字

2)yum安装的格式为:yum -y install 包名,其中install表示安装,-y选项表示自动回答yes

3)yum升级的格式为:yum -y update 包名,其中update表示升级,-y选项表示自动回答yes

注意:如果不加包名的话,表示将升级所有的软件包,包括linux内核。

4)yum卸载的格式为:yum -y remove/erase 包名其中remove/erase表示卸载,注意使用yum卸载时会将所依赖的软件包也卸载掉,因此,yum升级和yum卸载尽量少用

5)yum软件组管理命令

列出所有可用的软件组列表,其格式为:yum grouplist

安装指定软件组(组名可以由grouplist查出来),其格式为:

yum groupinstall 软件组名

卸载指定软件组,其格式为:yum groupremove 软件组名

(4)光盘yum源搭建

yum源除了可以在网络上获取,也可以通过系统安装光盘获取。在VMware中将ISO镜像加载进来,并选中"已连接",如下图所示:

技术分享 

接下来的步骤是:

1)挂载光盘。在/mnt目录下创建光盘挂载点cdrom,随后使用mount命令进行挂载。

[root@localhost ~]# mkdir /mnt/cdrom[root@localhost ~]# mount /dev/cdrom /mnt/cdrommount: block device /dev/sr0 is write-protected, mounting read-only

2)使网络yum源失效,否则将自动检测网络yum源。即在/etc/yum.repos.d/目录下将相应的文件改名,仅保留CentOS_Media.repo

[root@localhost ~]# cd /etc/yum.repos.d/[root@localhost yum.repos.d]# lsCentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo  CentOS-Vault.repo[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak[root@localhost yum.repos.d]# mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak[root@localhost yum.repos.d]# mv CentOS-Vault.repo Debuginfo.repo.bak

3)修改光盘yum源文件,需严格遵守源文件格式

[root@localhost yum.repos.d]# vi CentOS-Media.repo[c6-media]name=CentOS-$releasever - Mediabaseurl=file:///mnt/cdrom/                 #注意此处为自己光盘的挂载地址#        file:///media/CentOS/        #将不存在的地址注释掉#        file:///media/cdrom/#        file:///media/cdrecorder/gpgcheck=1enabled=1                               #将0改为1,使光盘yum源配置文件生效gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

4)使用yum命令进行验证

[root@localhost yum.repos.d]# yum search zshLoaded plugins: fastestmirror, securityLoading mirror speeds from cached hostfile=====================N/S Matched: zsh =============================python-twisted-core-zsh.i686 : Tab completion for Zsh and Twisted Corezsh-html.i686 : Zsh shell manual in html formatzsh.i686 : A powerful interactive shell   Name and summary matches only, use "search all" for everything.

3. 源码包管理

(1)源码包与rpm包的区别

在安装之前是概念上的区别,安装后二者的安装位置不同。一般情况下,rpm包的默认安装位置如下:

/etc/

配置文件安装目录

/usr/bin/

可执行的命令安装目录

/usr/lib/

程序所使用的函数库保存位置

/usr/share/doc/

基本的软件使用手册保存位置

/usr/share/man/

帮助文件保存位置

源码包安装在指定的位置当中,一般是/usr/local/软件名/。rpm包安装的服务可以使用系统服务管理命令(service)来管理。

例:rpm包安装的apache的启动方法为:

service httpd start                          #使用service管理

/etc/rc.d/init.d/httpd start             #使用绝对路径来启动

注意:service命令是RedHat专有,该命令将会到系统默认位置搜索相关服务。

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

例:源码包安装的apache,使用如下方法启动:

/usr/local/apache2/bin/apachetl start

(2)源码包安装过程

安装前需要安装C语言编译器gcc,可以使用yum install gcc进行安装。然后下载apache源码包,下载地址为:http://mirror.bit.edu.cn/apache/httpd/。注意:源代码的保存位置为/usr/local/src,软件的安装位置为/usr/local。当安装过程停止,并出现error、warning或n的提示时,安装过程出现错误。

具体的安装过程如下:

1)下载源码包

2)解压缩下载的源码包,可以使用du -sh 文件名格式查询文件或文件夹大小

3)进入解压缩目录

4)查看软件自带的INSTALL文件中的安装方法。简要说明如下:

① ./configure主要用于软件配置与检查,主要执行的功能有定义需要的功能选项如安装目录,检测系统环境是否符合安装要求,把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑。

② make 编译,如果报错可以使用make clean将便以文件全部清空。

③ make install 编译安装,此步骤真正向目录中写入数据。

源码包卸载时不需要卸载命令,直接删除安装目录即可,且不会遗留任何垃圾文件。

4. 脚本安装包

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

例:安装webmin,该软件是基于web的linux系统管理界面,可以通过图形化的方式设置用户账号、apache、DNS、文件共享等服务。其安装方法如下:

1)下载包:http://sourceforge.net/projects/webadmin/files/webmin。

2)解压缩,并进入解压缩目录。

3)执行安装脚本webmin.sh

Linux学习笔记(11)软件包管理