首页 > 分布式 > Linux > LINUX软件管理 (源代码、RPM、YUM)
2014
03-24

LINUX软件管理 (源代码、RPM、YUM)

本文主要介绍linux系统下三种形式的软件管理方式:源代码、RPM、YUM。

源代码形式

绝大多数开源软件都是以源代码形式发布的,源代码一般会被打包成tar.gz的归档压缩文件,程序源代码需要编译成为二进制形式之后才能够运行使用。虽然源代码形式的软件使用起来较为麻烦,但是兼容性及可控制性较好。

源代码形式程序安装流程一般如下:

①、$ tar -zxvf XXXX.tar.gz 解压、解包

②、$ cd XXXX 进入压缩后的文件夹

③、$ ./configure 检查编译环境、相关库文件以及配置参数并生成makefile

④、$ make 对源代码编译,生成可执行文件

⑤、# make install 安装编译好的可执行文件

注:1、开始configure前还是应该阅读源码目录下的README或者INSTALL文件,好多安装中的注意事项在这里都有所罗列。

2、configure实际上是一个脚本文件,在当前目录中键入”./configure”,shell就会运行当前目录下的configure脚本,有一点必须说明,在整个configure过程,其实编译尚未进行,configure仅仅是做编译相关的准备工作,它主要对您当前的工作平台做一些依赖性检查,比如编译器是否安装,连接器是否存在,如果在检测的过程没有任何错误,你很幸运,configure脚本会在当前目录下生成下一步编译链接所要用到的另一个文件Makefile。

3、开源软件一遍都会大量使用其他开源软件的功能,所以开源软件会有大量的依赖关系(使用某软件需要先安装其他软件),第一、二步大多在解决这个问题。

4、安装完成后清理临时文件:$make clean

卸载软件:# make uninstall

以上部分参考:http://www.cnblogs.com/huangfenghit/archive/2011/02/17/1957057.html

RPM软件包管理

RPM(redhat Package Manager)是Linux下最流行的软件包管理工具,通过将源代码基于特定平台系统编译为可执行文件,并保持依赖关系,来简化开源软件的安装管理。

RPM软件包命名规范:name-version-release.arch.rpm,其中,arch表示系统的发行版,如fc18、el6,表明这个软件包是在Fedora 18、RHEL 6.x / CentOS 6.x下使用的;arch表示硬件平台,常见的有:i386、x86_64等等。

基于RPM的管理工具有很多,分为两类:一类是命令,一类是GUI工具。本文只讲通过rpm命令进行软件包管理。

rpm命令可以完成软件包的五大功能:安装(install),卸载(uninstall),更新(upgrade),验证(verify),查询(query)。

1、安装:#rpm -ivh name-version-release.arch.rpm

i表示安装(install),v表示verbose,显示装的详细信息,h表示hash,显示安装进度百分比。

2、卸载:#rpm -e name

注意:卸载时要注意软件包的依赖关系,并不是所有的软件包都能够轻松的卸载的,但也可以强制卸载而忽略软件包的依赖关系,但是不推荐使用此方法,如:rpm -e –nodeps httpd

3、更新或者升级:#rpm -Uvh name-version-release.arch.rpm

4、验证

软件在传播的过程中可能会被恶意的修改,所以为了安全起见现代OS都加入了对软件的验证功能。验证一般使用非对称加密算法,所以需要一个密钥,一般linux发行版都有自己的密钥,默认都已经加入。

验证已安装的的软件有没有被修改过:#rpm -V name

验证rpm文件的完整性:rpm -K name-version-release.arch.rpm

5、查询

#rpm -q name 查询是否安装了软件包NAME

#rpm -qi name 查询已安装的软件包的详细信息

#rpm -ql name 查询指定软件包包含的文件列表

#rpm -qf file 查询指定文件属于哪个rpm包安装进来的

#rpm -qa 查询所有已安装的rpm软件

#rpm -qpi name-version-release.arch.rpm 查询rpm文件的信息

#rpm -qpl name-version-release.arch.rpm 查询rpm文件包含的文件

YUM软件管理

RPM无法自动解决软件的依赖关系,使用YUM可以解决这个问题。(debian,ubuntu发行版采用apt-get包管理工具)

YUM (yellowdog updater modified) 主要用于自动升级、安装/移除RPM软件包,它能够自动查找并解决RPM包之间的依赖关系,而无需管理员逐个手工的去安装每一个RPM包。

要成功使用YUM工具更新系统和软件,需要有一个包含各种RPM软件包的repository(软件仓库),提供软件仓库的服务器习惯称为“源”服务器。软件仓库可以基于HTTP,FTP协议或者本地文件目录提供服务,并收集目录中所有的RPM包的header(头部)信息组成repodata(仓库数据),以供YUM客户端工具查询分析。<i.e. 在建立好yum服务器后,yum客户端可以通过 http、ftp方式获得软件包,并使用方便的命令直接管理、更新所有的rpm包。>

一、创建、配置本地YUM仓库

Yum仓库分为本地yum和网络yum,本地yum是将rpm软件包放在本地主机上,而网络yum则是将服务器上面的文件通过http或者ftp方式下载到本地,然后进行安装。本文侧重讲解如何创建并配置使用本地YUM仓库。

1、创建YUM仓库(YUM服务器),步骤如下:

①、新建一个目录——该目录作为软件仓库,将光盘中的rpm包(位于Packages文件夹)保存到该目录下。

②、对该目录内的rpm软件包建立索引:createrepo -v rpm-directory,创建该目录下的rpm包索引,索引创建完成后,会在该文件夹下出现一个repodata目录,里面保存了仓库信息文件。

Ok,Yum仓库创建完成。

注:第②步中的createrepo工具在默认情况下是没有安装的,需要自己手动安装,安装方法如下:rpm -ivh createrepo-…….rpm。安装createrepo需要手动解决依赖关系,此处不做详细说明。(createrepo工具主要用于收集目录中RPM包文件的头信息,以创建repodata软件仓库数据(经gzip压缩的xml文件))

2、配置Yum客户端

在/etc/yum.repos.d目录下新建一个YUM仓库配置文件(.repo文件),在该文件内添加一条配置信息。

注:一个配置文件内可以保存多个仓库的配置信息,一条仓库配置信息的格式如下:

[repo-name]
name = This is repository’s description
baseurl = file://rpm-directory
enabled = 1
gpgcheck = 1

其中,baseurl规定了仓库所在位置,可以是本地路径(file://),也可以是网络地址(http:// or ftp://)。

二、YUM命令:yum [options] [command] [package ...]

其中,[options]是可选的,[command]为所要进行的操作,[package…]是操作的对象。

常用命令:

安装软件:yum install package-name

删除软件:yum remove package-name

升级软件:yum update package-name

YUM查询:

基于关键字搜索软件:yum search 关键字

列出所有的软件包(包括yum仓库中提供的和已安装的):yum list all

列出YUM仓库中提供的 / 可以更新的软件包:yum list available / updates

列出系统中已安装的软件包:yum list installed

显示软件包信息:yum info packagename(等于rpm -qi)

查询目标文件被包含在哪个软件包中:yum whatprovides filename

Yum缓存相关:

Yum会把下载的软件包和header存储在cache中(位于/var/cache/yum目录),而不会自动删除,如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除。

清除header:yum clean headers

清除下载的rpm包:yum clean packages

通通清除:yum clean all

除了yum命令行对软件包进行管理,CentOS还提供了基于yum的图形化界面的工具用来管理软件包,如添加/删除软件工具、软件更新工具等,他们均位于系统-管理菜单中。


留下一个回复

你的email不会被公开。