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

对于Linux运维人员来说,软件包管理无疑是一份非常重要的日常工作,只有轻车熟路的管理好软件包,日常运维工作才能得以进行。在基于CentOS6或者红帽6的平台上,熟练运用RPM和yum来进行服务器软件包管理,有着重要的意义。

 利用rpm包管理器管理软件

 什么是rpm?

rpm是红帽自主研发的一款软件包管理器,早起的rpm被称为Red hat package Manager,而后成为了Linux界软件包管理器的标准,所以现在的rpm是由RPM Package Manager的递归缩写,现在不止是在红帽系列系统上使用,还可以在其他发行版的Linux系统上使用,如Open SUSE。

   rpm使用方式

        软件包管理就是对软件包进行安装、卸载、升级、查询等,这些都可以使用rpm来完成,以下将对使用rpm进行软件包安装的常用方式做说明。

 安装

rpm -i|--install [install-options] PACKAGES_FILE1...

[install-options]

-v|-vv|-vvv:详细显示安装过程,v越多其越详细

-h:以#方式显示安装进度,一个#代表安装已完成2%

例1:安装zsh-4.3.10-7.el6.x86_64.rpm并显示其安装过程和进度

[[email protected] Packages]# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:zsh                    ########################################### [100%]
[[email protected] Packages]#

--test:测试安装,即只是测试其是否能安装成功,而不真正地把软件包安装上

例2:测试安装tree-1.5.3-2.el6.x86_64.rpm

[[email protected] Packages]# rpm --test -ivh tree-1.5.3-2.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
#只执行完Preparing,而不真正执行安装过程

--nodeps:安装时忽略依赖关系

例3:安装tomcat6-6.0.24-80.el6.x86_64.rpm

[[email protected] Packages]# rpm -ivh tomcat6-6.0.24-80.el6.x86_64.rpm 
error: Failed dependencies:
	/lib/lsb/init-functions is needed by tomcat6-0:6.0.24-80.el6.x86_64
	jakarta-commons-collections is needed by tomcat6-0:6.0.24-80.el6.x86_64
	jakarta-commons-daemon is needed by tomcat6-0:6.0.24-80.el6.x86_64
	jakarta-commons-dbcp is needed by tomcat6-0:6.0.24-80.el6.x86_64
	jakarta-commons-logging is needed by tomcat6-0:6.0.24-80.el6.x86_64
	jakarta-commons-pool is needed by tomcat6-0:6.0.24-80.el6.x86_64
	java is needed by tomcat6-0:6.0.24-80.el6.x86_64
	jpackage-utils is needed by tomcat6-0:6.0.24-80.el6.x86_64
	log4j is needed by tomcat6-0:6.0.24-80.el6.x86_64
	mx4j is needed by tomcat6-0:6.0.24-80.el6.x86_64
	tomcat6-lib = 0:6.0.24-80.el6 is needed by tomcat6-0:6.0.24-80.el6.x86_64
#常规安装会在检查后报错,提示有依赖关系,此时就不能正常安装
[[email protected] Packages]# rpm -ivh --nodeps tomcat6-6.0.24-80.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:tomcat6                ########################################### [100%]
#使用--nodeps忽略其依赖关系

--replacepkgs:重新安装(覆盖原有文件安装)

例4:覆盖安装当前已经安装过的tree-1.5.3-2.el6.x86_64.rpm

[[email protected] Packages]# rpm -ivh --replacepkgs tree-1.5.3-2.el6.x86_64.rpm

Preparing...                ########################################### [100%]

1:tree                   ########################################### [100%]

以下选项不是经常用,不举例介绍

--force:强制安装(升级程序包时包之间有冲突,可强制使用此选项安装,)

--oldpackage:降级安装,即所要安装的包比当前系统上已安装的版本古老

--relocate:重新把包安装的路径

--replacefiles:安装时替换部分文件

--feplacepkgs:安装时替换相关的包

 升级

rpm {-U|--upgrade} [install-options] PACKAGE_FILE...

升级或安装

rpm {-F|--freshen} [install-options] PACKAGE_FILE

只是升级,若没安装则不去安装

例5:升级或安装tree包

查看当前系统上所安装的tree(后面会补充)

[[email protected] tmp]# rpm -q tree
tree-1.5.0-4.x86_64

使用新版本包升级

[[email protected] Packages]# rpm -U tree-1.5.3-2.el6.x86_64.rpm 
[[email protected] Packages]# rpm -q tree
tree-1.5.3-2.el6.x86_64

卸载

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME

--allmatches:如果程序包同时安装多个版本,则此选项一次全部卸载之

--nodeps:卸载时如果存在依赖关系,则忽略依赖关系

--noscripts:卸载时不执行脚本

例6:卸载当前系统上所安zsh

[[email protected] Packages]# rpm -e zsh
[[email protected] Packages]#

    查询

    rpm {-q|--query} [select-options] [query-options]

[select-options]

1.查询某包或某些包是否安装

rpm -a PACKAGE_NAME

例7:查询当前系统上是否已经安装了vsftpd软件包

[[email protected] Packages]# rpm -q vsftpd
vsftpd-2.2.2-13.el6_6.1.x86_64

2.查询已经安装的所有包

rpm -qa

3.查询某文件是由哪个包安装生成

rpm -qf /PATH/TO/SOMEFILE

例8:查询/etc/smaba/smb.conf文件是由哪个包安装生成的。

[[email protected] Packages]# rpm -qf /etc/samba/smb.conf 
samba-common-3.6.23-12.el6.x86_64

4.查询尚未安装的包文件的相关信息

rpm -qp+[query-options] PACKAGE_FILE

[query-options]:

1.查询某包的简要说明信息

rpm -qi PACKAGE_NAME

例9:查询iptables包的简要说明信息

[[email protected] Packages]# rpm -qi iptables
Name        : iptables                     Relocations: (not relocatable)
Version     : 1.4.7                             Vendor: CentOS
Release     : 14.el6                        Build Date: Wed 15 Oct 2014 07:30:07 AM PDT
Install Date: Mon 23 Mar 2015 07:33:52 AM PDT      Build Host: c6b8.bsys.dev.centos.org
Group       : System Environment/Base       Source RPM: iptables-1.4.7-14.el6.src.rpm
Size        : 855952                           License: GPLv2
Signature   : RSA/SHA1, Fri 17 Oct 2014 01:03:00 PM PDT, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.netfilter.org/
Summary     : Tools for managing Linux kernel packet filtering capabilities
Description :
The iptables utility controls the network packet filtering code in the
Linux kernel. If you need to set up firewalls and/or IP masquerading,
you should install this package.

2.查询某包安装生成的文件列表

rpm -ql PACKAGE_NAME

例10:查询apache安装所生产的文件列表

[[email protected] Packages]# rpm -ql httpd
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
                                .
                                .
                                .

3.查询某包安装后生成的所有配置文件

rpm -qc PACKAGE_NAME

4.查询某包安装后生成的所有文档

rpm -qd PACKAGE_NAME

5.查看某包制作时随版本变化的changelog信息

rpm -q --changelog PACKAGE_NAME

6.查询某包提供的capabilities(即安装后可以为其他软件提供的依赖文件等)

rpm -q --provides PACKAGE_NAME

例11:查询xinetd包的capabilities

[[email protected] Packages]# rpm -q -provides xinetd
inetd  
xinetd = 2:2.3.14-10.el5

7.查询某包所依赖的capablities

rpm -q --requires PACKAGE_NAME

8.查询某包安装或卸载时执行的脚本

rpm -q --scripts PACKAGE_NAME

    校验

rpm {-V|--verify} [select-options] [verify-options]

rpm -V PACKAGENAME:查询包安装生成后是否发生了改变,在返回结果中若出现以下字符则说明相应内容被更改

c %config configuration file.(配置文件是否发生改变)

d %doc documentation file.(文档是否发生改变)

g %ghost file (站位文件,文件内容部包含在软件包有效内容里)

l %license license file.(许可证文件)

r %readme readme file.(说明文件)

内容被更改的判断依据

S size 大小不一致

M mode 权限和类型不一致

5 md5 md5校验和不一致

D device 主/次设备号不一致

L readLink 路径不匹配

U user 属主不一致

G group 属组不一致

T mtime 修改时间不一致

P 功能不一致

注:上面判断依据的英文有一部分是我方便记忆使用的,并不全是其真的如此翻译。

例12:查询vsftpd软件包是否发生了改变

[[email protected] Packages]# rpm -V vsftpd
SM5....T.  c /etc/vsftpd/vsftpd.conf
#从以上返回文件可知vsftpd软件包在安装后配置文件(/etc/vsftpd/vsftpd.conf)发生了改变(当然我做了配置),大小、权限、md5校验和、时间戳都发生了改变

程序包的合法性验证

来源合法

由信任的制作者提供

依赖于:作者的数字签名;签名是作者使用自己的私钥加密程序包的特征性码进行的

内容合法

完整性校验成功,未被二次修改

依赖于:制作者提供的程序特征码

验证方式:安装着用同样的特征码提取算法提取程序包的特征码,并与原作者提供的相比较

验证其光盘中程序包的来源和法性

rpm --input /path/to/RPM-GPG-KEY-CentOS-6

验证:rpm {-K|--checksig} PACKAGE_FILE

--nosignature:不检查来源合法性

--nodigest: 不检查完整性

例13:校验vsftpd-2.2.2-12.e16——5.1.x86_64.rpm是否完整

[[email protected] Packages]# rpm -K --nosignature vsftpd-2.2.2-12.el6_5.1.x86_64.rpm 
vsftpd-2.2.2-12.el6_5.1.x86_64.rpm: sha1 md5 OK

到此,使用rpm实现软件包的基本管理已基本叙述完毕,写得十分仓促,若有不当之处请读者明示。

时间: 2024-10-05 05:26:32

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

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

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

漫漫运维路——基于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则有所差异)文件中.但是后来连入网络的用户越来