漫漫运维路——基于CentOS6平台软件包管理2

上文(http://7703592.blog.51cto.com/7693592/1631539)已经介绍过使用rpm对CentOS6上的软件包进行管理,之所以强调是在CentOS6之上,是因为在新出的CentOS7上部分操作还可以更简化,而对于Linux运维工程师来说,掌握CentOS6上的使用方式,在CentOS7上就不成问题了,而接下来要谈的是另外一个软件包管理工具,或者说是rpm的前端工具——yum。

为什么要用yum

来聊一个话题,那就是Linux的特性之一:组合小程序完成复杂任务,在Linux中,大多数的软件都遵循这个特性,尽可能把软件的功能做的单一。若是要完成比较复杂的任务,宁愿再添加一个软件,也不会在原来的软件之上添加新功能。因此,一个大的软件就会去调用其他软件的功能,组合成一个大软件来完成复杂任务。所以想要安装的软件若有依赖的其他软件尚未安装则会报错,如下所示:

[[email protected] Packages]# rpm -ivh telnet-server-0.17-48.el6.x86_64.rpm 
error: Failed dependencies:
	xinetd is needed by telnet-server-1:0.17-48.el6.x86_64
#:该错误提示,在安装telnet-server时,其依赖于xinetd。也就是说xinetd是telnet-server的一个重要组成部分,没有xinetd则telnet-server不能正常工作。

根据以上提示,你若继续使用rpm来进行软件安装,那么你可以有两种选择,其一,使用--nodeps选项,强制忽略其依赖关系并安装;但是如此一来,telnet-server就不能使用。其二,你还可以先找到xinetd包,然后安装,接着再安装telnet-server包;使用此法可正常安装使用,但是当其依赖的包过多,达到十个,二十个,甚至更多时怎么办呢?依然使用此法显然不是明智的选择。所以此时就迫切需要一个工具来自动帮助我们解决软件管理过程中所遇到的种种问题,yum就应运而生了。

   什么是yum

    yum是yellowdog update modifier取首字母得来的,是一个基于RPM的前端包管理软件,其可以根据用户设置的yum仓库自动寻找软件安装,并自动解决依赖关系。

yum的工作机制

    在rpm中,可以使用--test选项进行测试安装,测试出即将安装的包所依赖的其他软件包,rpm只能测试出需要的包,但是不能自动解决,而yum则可以根据测试出的包,然后再从用户指定的yum仓库中寻找并下载下来安装,所以对于yum来说首先得有另外的服务为其提供软件仓库,所以从工作模式上来说,yum是一个C/S的架构。他依赖于FTP或者NFS和http服务,当然还可以使用一批本地的软件包作为其仓库。

yum相关配置

首先是其主配置文件,其主配置文件/etc/yum.conf,对于其主配置文件,有如下常用选项:

cachedir:缓存目录

keepcache=0:是否把下载的软件包缓存下来,0表示不缓存

debuglevel=2:调试信息级别

logfile:指定日志文件存放位置

obsoletes:检查包是否废弃

gpgcheck=1|0:检查包的来源合法性和完整性

plugins:yum是否支持插件

bugtracker_url:做bug追踪的路径

根据以上选项,使用时可根据需求设置即可。除此之外,上面谈到的仓库则在/etc/yum.repo.d/目录下以.repo的所有文件都是,其配置项如下:

[repository]

#对于当前系统的yum来讲,此repository用于唯一标识此repository指向,因此,其必须唯一

name=

#当前仓库的描述信息

baseurl=

#指明repository的访问路径,通常为一个文件服务器上输出的repository

url:

ftp服务:

ftp://SERVER/PATH/TO/REPOSITORY

http服务

http://SERVER/PATH/TO/REPOSITORY

本地目录:

file:///PATH/TO/REPOSITORY

nfs服务:

nfs://SERVER/PATH/TO/REPOSITORY

enabled=1|0:

#表示此仓库是否被启用,0表示不启用,1则相反,默认值为1

gpgcheck=1|0:

#是否进行完整性检查,默认值为1

gpgkey=url://PATH/TO/keyfile:

#指明验证密钥存放位置

cost=#

#指明当前repository访问开销,默认为1000,越低越优先使用

yum命令使用详解   

1.仓库管理:

repolist:列出已配置的所有可用仓库

all|enabled|disabled

例1:查看当前系统可用仓库

[[email protected] Packages]# cd /etc/yum
yum/         yum.conf     yum.repos.d/ 
[[email protected] Packages]# yum repolist all
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
repo id                                           repo name                                      status
oldpackagepath                                    centos6.6
enabled: 3,348
repolist: 3,348#:可使用软件包数量

2.缓存管理

clean:清理缓存

#:缓存存放位置:/var/cache/yum/

[ packages(包) | metadata(源数据) | expire-cache(过期缓存) | rpmdb(数据库) | plugins(插件) | all(所有) ]

makecache:缓存创建{自动连接至每一个可用仓库,下载其所有数据,将其创建为缓存}

例2:清理当前yum缓存并重新创建缓存

[[email protected] yum]# yum clean all
Loaded plugins: fastestmirror, refresh-packagekit, security
Cleaning repos: oldpackagepath
Cleaning up Everything
Cleaning up list of fastest mirrors
[[email protected] x86_64]# yum makecache
Loaded plugins: fastestmirror, refresh-packagekit, security
Determining fastest mirrors
oldpackagepath                                                                          | 2.1 kB     00:00     
oldpackagepath/group                                                                    | 920 kB     00:02     
oldpackagepath/filelists_db                                                             | 3.9 MB     00:07     
oldpackagepath/primary_db                                                               | 2.0 MB     00:05     
oldpackagepath/other_db                                                                 |  10 MB     00:19

3.程序包查看

list

yum list [all(所有) | glob_exp1] [glob_exp2] [available(可安装的包)] [exreas(已安装,但是没有仓库提供的包)]

程序包组查看

grouplist

[hidden] [groupwildcard] [...]

4.程序包安装

install

package1 [package2] [...]:可跟上VERSION

重新(覆盖)安装

reinstall

package1 [package2] [...]:可跟上VERSION

例3:使用yum安装tree软件包

[[email protected] base]# yum install tree -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package tree.x86_64 0:1.5.0-4 will be installed
--> Finished Dependency Resolution

Dependencies Resolved...#后续已省略

  Installing : tree-1.5.0-4.x86_64                                                                         1/1 
  Verifying  : tree-1.5.0-4.x86_64                                                                         1/1 

Installed:
  tree.x86_64 0:1.5.0-4                                                                                        
Complete!

6.升级

update、upgrade

update [package1] [package2] [...]

upgrade [package1] [package2] [...]

降级

downgrade

检查可升级情况

check-update

例4:先升级tree到新版tree.x86_64 0:1.5.0-4 然后再降级,可使用先前说过的rpm -q查看当前版本验证

[[email protected] base]# rpm -q tree
tree-1.5.0-4.x86_64
[[email protected] base]# yum update tree -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Update Process
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package tree.x86_64 0:1.5.0-4 will be updated
---> Package tree.x86_64 0:1.5.3-2.el6 will be an update
--> Finished Dependency Resolution

...#后续已省略
Updated:
  tree.x86_64 0:1.5.3-2.el6                                                               [[email protected] base]# rpm -q tree
tree.x86_64 0:1.5.3-2.el6                     
[[email protected] base]# yum downgrade tree -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Downgrade Process
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package tree.x86_64 0:1.5.0-4 will be a downgrade
---> Package tree.x86_64 0:1.5.3-2.el6 will be erased
--> Finished Dependency Resolution
...#后续已省略                                                                                       

Complete!
[[email protected] base]# rpm -q tree
tree-1.5.0-4.x86_64

7.卸载

remove | erase:所有依赖于正卸载曾虚报的程序都会被一并卸载

package1 [package2] [...]

例5:使用yum卸载zsh

[[email protected] base]# yum remove zsh
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package zsh.x86_64 0:4.2.6-3.el5 will be erased
--> Finished Dependency Resolution
...#:中间部分已被省略
  Erasing    : zsh-4.2.6-3.el5.x86_64                                                                      1/1 
  Verifying  : zsh-4.2.6-3.el5.x86_64                                                                      1/1 

Removed:
  zsh.x86_64 0:4.2.6-3.el5                                                                                     

Complete!
[[email protected] base]#

8.查询

info:查询程序包的相关简要信息

package1 [package2][...]

serach:在包名和sumary信息中搜索指定的关键字:

KEYWORD...

provides|whatprovides:查询指定文件是由哪个程序包安装生产

packages...

例6:查询/etc/httpd/是由哪个程序包生成的

[[email protected] base]# yum whatprovides /etc/httpd/conf/httpd.conf 
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
httpd-2.2.3-31.el5.centos.x86_64 : Apache HTTP Server
Repo        : oldpackagepath
Matched from:
Filename    : /etc/httpd/conf/httpd.conf

httpd-2.4.6-31.el7.centos.x86_64 : Apache HTTP Server
Repo        : installed
Matched from:
Other       : Provides-match: /etc/httpd/conf/httpd.conf

9.安装本地的程序包文件

localinstall

[rpmfile1] [rpmfile2]...

使用本地的程序包升级或安装

localupdate

10.包组管理

列出所有包组:

grouplist

安装包租

groupinstall

卸载包组

groupremove

更新包租

groupupdate

11.yum命令可用选项:

-y:自动回答为yes

--disablerepo=:临时禁用在配置文件中配置并启用的某repository

--enabledrepo:临时启用

--nogpgcheck:禁止做包校验

例7:使用尚未启用的old仓库安装tree命令,并且指定安装时不做包校验

[[email protected] yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
repolist: 0
[[email protected] yum.repos.d]# yum  install tree --enablerepo=old --nogpgcheck
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package tree.x86_64 0:1.5.0-4 will be installed
--> Finished Dependency Resolution
...#中间已省略

Installed:
  tree.x86_64 0:1.5.0-4                                                                                        

Complete!
[[email protected] yum.repos.d]#

至此,软件包管理介绍已完成,以上介绍足以应付平常软件包管理需求,若要查看rpm相关使用技巧可查阅以下文章

http://7703592.blog.51cto.com/blog/7693592/1631539

时间: 2024-10-24 10:00:34

漫漫运维路——基于CentOS6平台软件包管理2的相关文章

漫漫运维路——基于CentOS6平台软件包管理1

对于Linux运维人员来说,软件包管理无疑是一份非常重要的日常工作,只有轻车熟路的管理好软件包,日常运维工作才能得以进行.在基于CentOS6或者红帽6的平台上,熟练运用RPM和yum来进行服务器软件包管理,有着重要的意义.  利用rpm包管理器管理软件  什么是rpm? rpm是红帽自主研发的一款软件包管理器,早起的rpm被称为Red hat package Manager,而后成为了Linux界软件包管理器的标准,所以现在的rpm是由RPM Package Manager的递归缩写,现在不止

漫漫运维路——基于rpm包安装实现LAMP

LAMP早期即为Linux+Apache+MySQL+PHP,以基于Linux平台的三个软件搭建出动态网页站点,而现在的LAMP不仅仅代表以上几个软件,因为现在的开源软件种类较多,网站的构建人员的选择也较多,所以现在的M可以为MySQL,也可以为maria DB或者是其他的数据库管理系统.而P则也不仅可代表PHP,在实际应用中还可能是Python.Perl.JSP等语言. 本文将基于rpm包安装的形式实现Linux+Apache+MySQL+PHP的LAMP平台,并且实现以下功能: 1.创建两个

漫漫运维路——基于fpm的LAMP平台的构建

构建LAMP平台,可以把PHP编译为apache的一个模块或者直接把PHP编译为一个单独的服务,然后独立运行,当apache需要和PHP通信时,apache就变为了一个客户端,向PHP发起请求,然后由PHP把apache发去的代码解释后发回apache,最后由apache返回给客户端. 要编译实现fpm模式的LAMP平台,可以使用两台或者三台虚拟机,分别在虚拟机上编译出apache和PHP和MariaDB,在此我使用两台虚拟机.一台独立运行MariaDB,另一台运行apache和PHP.规划如下

漫漫运维路——进程基本概念及管理相关工具介绍

进程的概念     进程是系统进行资源分配的基本单位,当一个应用程序启动时就向内核发起请求,然后由进程创建出新的进程,此时应用程序就启动了.创建进程的进程此时被称作父进程,而被创建出来的进程被称为子进程,此外子进程不可脱离父进程而存在,当一个父进程被销毁时,其子进程也会一并被销毁. 在Linux中,进程被内核所管理,内核为每一个进程虚拟处一块内存空间,所以当进程被调度到内存中执行时,只能看到自己和内核,从而避免进程之间发生冲突,影响其他进程的运行.但是进程独立并不代表其不能互相通信,当进程之间需

漫漫运维路——各种加密方式介绍及基于OpenSSL实现HTTPS

一.为什么要加密 在网络中通信有时通信双方会发送一些比较敏感的信息,如果直接明文在网上传输,就可能被居心叵测的人截获,从而达到其非法的目的.为保证通信双方信息传输不被第三方所知晓,使用加密技术把双方传输的数据进行加密,即使数据被第三方所截获,那么第三方也不会知晓其数据的真实含义.在此,通信双方所交换的信息中,未被加密的数据称为明文,而加密后的数据称为密文,加密采用的方式称作加密密钥. 二.常见加密方式以及其用途 对称加密 对称加密是指在加密通信过程中,把明文加密为密文的密钥和把密文解密为明文的密

漫漫运维路——使用NFS构建出共享存储的LAMP平台,实现Wordpress论坛的数据同步

假设现在需要构建一个Wordpress论坛站点,为了减轻站点压力,使用两台主机用于Apache服务器,对外提供WEB服务.且此两台主机都有独立IP地址.要求用MariaDB和NFS实现两个站点之间的数据同步. 拓扑如下 如上图所示.SERVER1有两块网卡,一块负责和外网通信,一块通过S1和内网中的SERVER2和SERVER3交互.以下是各主机的地址规划 主机 地址 用途 SERVER1 Eth0:192.168.252.10 配置两台虚拟主机,都安装上Wordpress Eth1:192.1

漫漫运维路——使用sickstart实现系统自动安装

安装Linux系统时,可能需要安装多个相同的系统到不同主机上,此时如若一一指定每个主机所安系统的属性则显得十分繁琐,如设置时区,语言,键盘类型,安装完成后指定系统相关属性等,此时如果使用kickstart实现自动部署,为每一台主机设置自动安装就显得十分便捷. 实验环境介绍:使用kickstart配合vsftpd完成无人值守CentOS6.6系统安装. 实验过程 一.首先定制kickstart文件 在CentOS6.6系统上,可以直接打开/root目录下编辑anaconda-ks.cfg文件,或者

漫漫运维路——集群基础知识

集群的基本概念 随着计算机科学的发展,对计算机的性能要求越来越高,比如在很多流量比较大的门户网站以及科学实验环境中需要海量计算的环境,这时候就迫切需要后端的服务器性能有提升.而对于提升后端服务器性能所采用的方式有两种,其一为提升服务器本身的性能,即向上扩展,通过增加服务器的内存,CPU核心数等来实现:其二就是向外扩展,一台服务器不能完成的任务就使用两台.三台甚至更多.在此,以不同的方式把许多服务器组合起来的服务器组就是集群. 集群的分类 按照集群功能的不同,可以把集群分为以下三类: LB集群 L

漫漫运维路——网络服务之DNS

一.DNS和BIND是什么? DNS即Domain Name Service的缩写,即为域名服务.在网络出现以后,计算机的通信就是通过IP地址加端口号等形式来进行,人对于数字的记忆往往却有限,随着连入网络的用户的不断增多,用户需要记住的IP地址越来越多,早期为了方便使用,把每一个IP地址对应为一个主机名,如:www.domainname.com对应1.1.1.1形式,并把此种对应关系统一记录于/etc/hosts(GNU/Linux下,windows则有所差异)文件中.但是后来连入网络的用户越来