学习下软件包管理工具:RPM、YUM
既然我们学习RPM,那什么是RPM呢?
RPM(RedHat Package Manager),最早由RedHat公司提出的软件包标准,后来随着rpm的不断发 而又增加许多功能,逐渐的成为linux公认的软件包管理标准。
所以简单的理解就是将你所需要安装的软件包以一种形式安装到你的Linux系统上的一套软件包管理软件。
- RPM软件安装的原理:
- 源代码程序->编译->对应平台汇编语言->链接->运行
- 所以我们安装的rpm软件包是经过编译并通过一些底层共享库实现转换成二进制代码程序。
- 下面我们就来说下经过编译过的RPM的优点和缺点:
- 优点:安装方面,不需要编译即可安装,而且方面查询、升级等功能
- 缺点:只能安装在和源码编译代码所使用的平台一致时方可安装,那意思就是说平台和编译平台不一致时是不可以安装rpm包的。
- 注:(以上理解均为自己理解,如理解有误欢迎提出,达到共同学习、进步)
- # rpm -qa
- 用于查看系统中已安装的所有的rpm包
- # rpm -q PACKAGE_name
- 查询软件包是否安装,如果所查询的软件包已安装,会显示完整包名名称
- rpm -ivh /PATH/TO/PACKAGE_FILE
- 安装软件包并显示安装过程。i:安装 、v:可视化安装、h:安装进度
- # rpm -qi
- 指定软件包的说明信息
- # rpm -ql
- 查询软件包安装时所安装的路径
- # rpm -qf FILE_name
- 查询指定文件是由哪个软件包安装所生成的文件
- # rpm -qc PACEAGE_NEME:查询指定包安装的配置文件
- # rpm -qd PACKAGE_NAME: 查询指定包安装的帮助文件
- # rpm -qd vsftpd 查询vsftpd软件包安装所产生的帮助文件
- # rpm -q --scripts PACKAGE_NAME: 查询指定包中包含的脚本
- 如果某rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件;
- # rpm -qpi /PATH/TO/PACKAGE_FILE 显示某个软件包的信息
- # rpm -qpl 查询某个软件包安装时所安装的路径
- # rpm -e RPM包名 用于卸载软件包(而且软件包不能有依赖关系)
- # rpm -e --nodeps 包名 用于删除存在依存关系的软件包,该命令可以将和该包存在依存关系的所有的软件包统统删除。
- # rpm -Uvh RPM包名(新版本软件包) :如果系统安装老版本则升级,否则安装软件包
- # rpm -Fvh RPM包名(新版本软件包) :如果有老版本则升级新版本,否则退出
- # rpm --oldpackage: 降级软件包版本
- RPM软件包管理器不能安装带有依赖的软件包,如果强制安装则会出现一定的软件故障,所以我们常用YUM来安装解决包依赖情况
- 常用于软件包的安装、卸载、查询、更新等软件包
- 下面介绍下yum仓库中的元数据文件:
- primary.xml.gz
- 所有RPM包的列表;
- 依赖关系;
- 每个RPM安装生成的文件列表;
- filelists.xml.gz
- 当前仓库中所有RPM包的所有文件列表;
- other.xml.gz
- 额外信息,RPM包的修改日志;
- repomd.xml
- 记录上面三个文件的时间戳和校验和;
YUM常用到的一些选项并做个简单的说明
- 1.列出所有可更新的软件清单
- # yum check-update 简单的理解就是检查当前系统所安装的软件包和YUM仓库里有没有新版本的软件包
- 2.安装所有更新软件
- # yum update
- 3.仅安装指定的软件
- # yum install <package_name>
- 4.仅更新指定的软件
- #yum update <package_name>
- 5.列出当前系统可安�b的仓库列表
- # yum list
- 一、用YUM安装软件包
- 格式:# yum install <package_name>
- 二、用YUM删除软件包
- 格式:# yum remove <package_name>
- 用YUM查询软件信息
- 1、 # yum search keyword 根据关键字在YUM仓库进行搜索
- # yum info packagename 获取软件包的详细信息。
- 里面包括软件的名字、使用平台、版本、软件大小、简单软件包描述、版权等信息
- 2、 列出软件包提供哪些文件
- 命令:yum provides <package_name> 这个命令我们会经常用到
- 清除YUM缓存
- 1.清除缓存
- 格式:# yum clean all
下面以光盘作为YUM仓库并解决包的依赖关系
- 一、将光盘放入光驱并挂载到/mnt目录下
- 二、创建YUM源配置文件:(名字可以随便取,但后缀必须是.repo)
- cd /etc/yum.repos.d/
- vim yum.repo
- 三、清除YUM缓存信息
- # yum clean all
- 四、查看YUM相关信息
- # yum list
- # yum repolist all 查看当前系统所使用的YUM源信息
- 五、测试
- # yum install smb* 以安装smb软件包为例
下面一起来学习如何在Linux系统上进行源码编译安装
- 这里我们以web(http)服务源码编译安装来做个简单的解释:
- 我们使用RPM包来安装web服务,当作者在编译源代码程序的时候,有可能绑定了许多功能,而我们所需要的只是其中几个功能,甚至软件包里面并没有我们所需要的
- 功能时,那怎么办呢?而且编译时被绑定的其它功能也一并安装到Linux主机上,这样就可能造成一些安全隐患。为什么这么讲呢?因为RPM软件包的更新并没有源代码
- 更新快(例如:在原有的源代码上添加了某些功能,修复了某些运行所产生的BUG等等)。
- 所以我们还是建议以源码安装软件,这样我们需要哪些功能就安装哪些功能,不需要的一律关闭,而且我们的硬件平台还能充分发挥其作用。
- 一起学习下,如何实现编译安装WEB服务器(这里只是简单实现访问)
- 一、安装前的配置工作(2.6.18-308.el5)
- 1、安装以下开发所用到的rpm包组
- Development Libraries
- Development Tools
- Legacy Software Development
- X Software Development
- # yum grouplist 查看当前系统所安装以及有效的组软件包
- For example:
- # yum -y groupinstall "Development Libraries" "Development Tools" "Legacy Software Development" "X Software Development"
- 二、在编译安装web服务,得首先确定系统是否安装了web相关的rpm软件包
- # rpm -q httpd
- 三、下载 httpd-2.2.16.tar.bz2源码软件包(http://www.apache.org/)
- # tar xf httpd-2.2.16.tar.bz2
- # cd httpd-2.2.16
- # ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd
- 四、执行编译(项目管理工具)
- # make ;make install 能把我们的c程序多个不同的项目文件做成一个项目,并且把这个项目编译过程通过一个配置文件。makfile定义了make(gcc,g++)按何种次序去编译这些
- 源程序文件中的源程序。
- 五、下面我们就进入我们的安装目录/usr/local/apache目录下看看都生成了哪些文件
- [root@station16 ]# cd /usr/local/apache ; ls
- bin build cgi-bin error htdocs icons include(头文件) lib(库文件) logs man(帮助文件) manual modules
- 六、输出库文件
- 默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径:
- 在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添/usr/local/apache/lib写至此文件中;
- # ldconfig -v 通知系统重新搜寻库文件,并显示过程信息
- 可以使用此命令查看加载的关于http库文件
- # ldconfig -v | grep apr
- 七、输出头文件
- 默认:/usr/include
- 增添头文件搜寻路径,使用链接进行:
- # ln -s /usr/local/apache/include /usr/include/httpd 给目录创建软连接
- 八、输出帮助信息
- man文件路径:安装在--prefix指定的目录下的man目录;/usr/share/man
- 1、man -M /PATH/TO/MAN_DIR COMMAND 立即生效,重启则无效
- 2、在/etc/man.config中添加一条MANPATH
- MANPATH /usr/local/apache/man
- 这样我们就可以使用man文档来查看相关的二进制命令的使用啦
- 九、启动http服务,并查看端口
- 十、更改下测试网页内容:
- # cd /usr/local/apache/htdocs
- # vim index.html
- <html><body><h2>This is text page</h1></body></html>
- <html><body><h1>Welcome to www.magedu.com</h1></body></html>
- :wq!
- 然后我们用windows主机来测试,用IE浏览器测试默认网页http://IP地址即可测试
以上内容难免会出现配置错误以及对概念的理解,有发现的朋友及时提出,以免其它朋友理解错误...