学习下软件包管理工具:RPM、YUM

既然我们学习RPM,那什么是RPM呢?
       RPM(RedHat Package Manager),最早由RedHat公司提出的软件包标准,后来随着rpm的不断发 而又增加许多功能,逐渐的成为linux公认的软件包管理标准。
        所以简单的理解就是将你所需要安装的软件包以一种形式安装到你的Linux系统上的一套软件包管理软件。


  1. RPM软件安装的原理:  
  2.     源代码程序->编译->对应平台汇编语言->链接->运行  
  3.     所以我们安装的rpm软件包是经过编译并通过一些底层共享库实现转换成二进制代码程序。  
  4. 下面我们就来说下经过编译过的RPM的优点和缺点:  
  5.     优点:安装方面,不需要编译即可安装,而且方面查询、升级等功能  
  6.     缺点:只能安装在和源码编译代码所使用的平台一致时方可安装,那意思就是说平台和编译平台不一致时是不可以安装rpm包的。  
  7.     注:(以上理解均为自己理解,如理解有误欢迎提出,达到共同学习、进步) 

 


  1. # rpm -qa     
  2.     用于查看系统中已安装的所有的rpm包 

  1. # rpm -q PACKAGE_name  
  2.         查询软件包是否安装,如果所查询的软件包已安装,会显示完整包名名称 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释) 


  1. rpm -ivh    /PATH/TO/PACKAGE_FILE  
  2.     安装软件包并显示安装过程。i:安装 、v:可视化安装、h:安装进度 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. # rpm -qi   
  2.         指定软件包的说明信息 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. # rpm -ql   
  2.         查询软件包安装时所安装的路径 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释) 


  1. # rpm -qf FILE_name  
  2.         查询指定文件是由哪个软件包安装所生成的文件 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. # rpm -qc PACEAGE_NEME:查询指定包安装的配置文件 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. # rpm -qd PACKAGE_NAME: 查询指定包安装的帮助文件  
  2.         # rpm -qd vsftpd   查询vsftpd软件包安装所产生的帮助文件  
  3.  
  4.     # rpm -q --scripts PACKAGE_NAME: 查询指定包中包含的脚本  
  5.       
  6.     如果某rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件;  
  7.     # rpm -qpi /PATH/TO/PACKAGE_FILE   显示某个软件包的信息  
  8.     # rpm -qpl  查询某个软件包安装时所安装的路径  
  9.     # rpm -e RPM包名 用于卸载软件包(而且软件包不能有依赖关系)  
  10.     # rpm -e --nodeps 包名 用于删除存在依存关系的软件包,该命令可以将和该包存在依存关系的所有的软件包统统删除。  
  11.     # rpm -Uvh  RPM包名(新版本软件包)   :如果系统安装老版本则升级,否则安装软件包  
  12.     # rpm -Fvh  RPM包名(新版本软件包)   :如果有老版本则升级新版本,否则退出  
  13.     # rpm --oldpackage: 降级软件包版本  
  14.       
  15. RPM软件包管理器不能安装带有依赖的软件包,如果强制安装则会出现一定的软件故障,所以我们常用YUM来安装解决包依赖情况  
  16.     常用于软件包的安装、卸载、查询、更新等软件包  
  17. 下面介绍下yum仓库中的元数据文件:  
  18. primary.xml.gz  
  19.     所有RPM包的列表;  
  20.     依赖关系;  
  21.     每个RPM安装生成的文件列表;  
  22. filelists.xml.gz  
  23.     当前仓库中所有RPM包的所有文件列表;  
  24. other.xml.gz  
  25.     额外信息,RPM包的修改日志;  
  26. repomd.xml  
  27.     记录上面三个文件的时间戳和校验和; 

YUM常用到的一些选项并做个简单的说明
 


  1. 1.列出所有可更新的软件清单  
  2.     # yum check-update  简单的理解就是检查当前系统所安装的软件包和YUM仓库里有没有新版本的软件包 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 2.安装所有更新软件  
  2.     # yum update 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 3.仅安装指定的软件  
  2.     # yum install <package_name> 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释) 


  1. 4.仅更新指定的软件  
  2.   #yum update <package_name> 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 5.列出当前系统可安裝的仓库列表  
  2.   # yum list 

  1. 一、用YUM安装软件包  
  2.     格式:# yum install <package_name>  
  3.  
  4. 二、用YUM删除软件包  
  5.     格式:# yum remove <package_name>  
  6.  
  7. 用YUM查询软件信息  
  8. 1、  # yum search keyword 根据关键字在YUM仓库进行搜索  
  9.     # yum info packagename 获取软件包的详细信息。   
  10.         里面包括软件的名字、使用平台、版本、软件大小、简单软件包描述、版权等信息 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 2、  列出软件包提供哪些文件  
  2. 命令:yum provides <package_name> 这个命令我们会经常用到 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 清除YUM缓存  
  2. 1.清除缓存  
  3.     格式:# yum clean all 

下面以光盘作为YUM仓库并解决包的依赖关系


  1. 一、将光盘放入光驱并挂载到/mnt目录下 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 二、创建YUM源配置文件:(名字可以随便取,但后缀必须是.repo)  
  2.     cd /etc/yum.repos.d/  
  3.     vim yum.repo 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 三、清除YUM缓存信息  
  2.     # yum clean all 

  1. 四、查看YUM相关信息  
  2.     # yum list  
  3.     # yum repolist all   查看当前系统所使用的YUM源信息 

  1. 五、测试  
  2.     # yum install smb* 以安装smb软件包为例 

下面一起来学习如何在Linux系统上进行源码编译安装


  1. 这里我们以web(http)服务源码编译安装来做个简单的解释:  
  2.     我们使用RPM包来安装web服务,当作者在编译源代码程序的时候,有可能绑定了许多功能,而我们所需要的只是其中几个功能,甚至软件包里面并没有我们所需要的  
  3. 功能时,那怎么办呢?而且编译时被绑定的其它功能也一并安装到Linux主机上,这样就可能造成一些安全隐患。为什么这么讲呢?因为RPM软件包的更新并没有源代码  
  4. 更新快(例如:在原有的源代码上添加了某些功能,修复了某些运行所产生的BUG等等)。  
  5.     所以我们还是建议以源码安装软件,这样我们需要哪些功能就安装哪些功能,不需要的一律关闭,而且我们的硬件平台还能充分发挥其作用。  
  6.  
  7.       
  8. 一起学习下,如何实现编译安装WEB服务器(这里只是简单实现访问)  
  9.       
  10. 一、安装前的配置工作(2.6.18-308.el5)  
  11.  
  12. 1、安装以下开发所用到的rpm包组  
  13. Development Libraries   
  14. Development Tools  
  15. Legacy Software Development  
  16. X Software Development  
  17.  
  18. # yum grouplist     查看当前系统所安装以及有效的组软件包  
  19. For example:  
  20. # yum -y groupinstall "Development Libraries" "Development Tools" "Legacy Software Development" "X Software Development"  

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 二、在编译安装web服务,得首先确定系统是否安装了web相关的rpm软件包  
  2. # rpm -q httpd 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 三、下载 httpd-2.2.16.tar.bz2源码软件包(http://www.apache.org/)   
  2. # tar xf httpd-2.2.16.tar.bz2       
  3. # cd httpd-2.2.16  
  4. # ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)

 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)

 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 四、执行编译(项目管理工具)  
  2. # make ;make install 能把我们的c程序多个不同的项目文件做成一个项目,并且把这个项目编译过程通过一个配置文件。makfile定义了make(gcc,g++)按何种次序去编译这些  
  3. 源程序文件中的源程序。 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 五、下面我们就进入我们的安装目录/usr/local/apache目录下看看都生成了哪些文件  
  2.  
  3. [[email protected] ]# cd /usr/local/apache ; ls  
  4. bin  build  cgi-bin  error  htdocs  icons  include(头文件)  lib(库文件)  logs  man(帮助文件)  manual  modules 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 六、输出库文件  
  2.     默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径:  
  3.     在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添/usr/local/apache/lib写至此文件中;  
  4.     # ldconfig -v 通知系统重新搜寻库文件,并显示过程信息  
  5.     可以使用此命令查看加载的关于http库文件  
  6.     # ldconfig -v | grep apr 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 七、输出头文件  
  2.     默认:/usr/include  
  3.     增添头文件搜寻路径,使用链接进行:  
  4.     # ln -s /usr/local/apache/include  /usr/include/httpd   给目录创建软连接 

  1. 八、输出帮助信息  
  2.     man文件路径:安装在--prefix指定的目录下的man目录;/usr/share/man    
  3.         1、man -M /PATH/TO/MAN_DIR COMMAND  立即生效,重启则无效  
  4.         2、在/etc/man.config中添加一条MANPATH  
  5.             MANPATH /usr/local/apache/man  
  6.             这样我们就可以使用man文档来查看相关的二进制命令的使用啦 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 九、启动http服务,并查看端口 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)


  1. 十、更改下测试网页内容:  
  2.     # cd /usr/local/apache/htdocs  
  3.     # vim index.html   
  4.     <html><body><h2>This is text page</h1></body></html>  
  5.     <html><body><h1>Welcome to www.magedu.com</h1></body></html>  
  6.     :wq!  
  7.       
  8. 然后我们用windows主机来测试,用IE浏览器测试默认网页http://IP地址即可测试 

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)

软件包的管理及如何实现WEB源代码编译安装流程(内附图解释)

以上内容难免会出现配置错误以及对概念的理解,有发现的朋友及时提出,以免其它朋友理解错误...