您的位置:首页 > 运维架构 > Linux

Linux软件管理

2012-02-22 17:22 176 查看
Linux 软件管理
在linux下说道软件管理,大家自然会想到RPM(RedHat Package Management)和DPKG(Debian Linux),在这里我们只介绍RedHat Linux环境下的RPM;由于RPM软件包管理自身存在软件包依赖关系的缺陷,于是我们便想到YUM这款软件管理工具,YUM能很好的解决RPM包之间的依赖关系,下面我们先谈谈RPM:包括RPM包的安装、查询、更新、卸载、RPM的验证与数字证书以及RPM数据库的重建;然后了解如何利用YUM来进行软件包的安装、查询、升级与删除;最后详细介绍如何构建YUM服
务。

RPM:
安装,说到安装,我们来了解下Linux环境软件安装的方法:
1.手动编译安装源代码
2.使用专门的软件包管理工具:
rmp软件包制作复杂,解压直接使用,但是硬件平台必须一致(i386,x86_64,power)
rpm包的格式:
createrepo-0.4.11-3.el5.noarch.rpm(以此rpm软件包微粒介绍RPM)
name-version-release.arch.rpm
Name:软件包的名称
Version:
major 主版本号
minor 此版本号
modify 修改时间
Release:发行号
Arch: 硬件平台
.rpm 后缀名
RPM 命令格式:
# rpm [options] PACKAGENAME

安装:
# rpm -i(--install) PACKAGENAME
-i install
--nodeps 忽略依赖关系
--force 不兼容是强行安装
PS:在安装rpm包的时候-i选项常与-v和-h选项配合使用;-v显示安装信息,-h以#显示安装进度,每个#表示2%的进度;PACKAGENAME必须是该软件包的绝对路径。
example:# rpm -ivh /media/cdrom/Server/createrepo-0.4.11-3.el5.noarch.rpm

卸载:
# rpm -e(--erase) Absolutely_Path/PACKAGENAME
PS:卸载的时候只需指出rpm软件包的包名,不必给出其绝对路径

升级:
# rpm -Fvh Absolutely_Path/PACKAGENAME
# rpm -Uvh Absolutely_Path/PACKAGENAME
PS:-v和-h选项同安装相同;-U与-F的区别:使用-F选项时,老版本的软件包必须存在,-U选项则是软件包不存在就直接安装

查询:
# rpm -q PACKAGENAME 查看软件包是否安装
# rpm -qa 查看当前系统安装的rpm包
# rpm -qi PACKAGENAME 显示软件包的相关信息
# rpm -ql PACKAGENAME 显示软件包安装之后生成的文件列表
# rpm -qd PACKAGENAME 显示软件包安装后生成的目录
# rpm -qc PACKAGENAME 查看软件包安装后生成的配置文件
# rpm -q --script sPACKAGENAME显示软件包安装过程中执行的脚本
# rpm -qf NAME 查询某个文件有哪个软件包安装生成
# rpm -q --changelog PACKAGENAME 查看软件包的修正信息
# rpm -qp{i|c|d|f|l|} Absolutely_Path/PACKAGENAME 查看软件包没安装之前的相关信息

校验:
# rpm -V
S 文件大小改变
M 权限和文件类型改变
5 MD5校验值发生改变
D 设备文件的主设备此设备号发生改变
L readlink发生改变
U 属主发生改变
G 属组发生改变
T 最近修改时间发生改变

数据重建:
在安装、卸载、更新等操作过程中可能导致/var/lib/rpm数据库文件损坏,这会导致不能进行查询、校验等操作,这时我们必须重建rpm数据库
# rpm --initdb 数据库初始化,若数据库存在不会覆盖原数据库
# rpm --rebuilddb 数据库重建

数字签名:
签名:验证某物是否合法,必须用公钥验证
用私钥加密数据的MD5叫做签名;私钥一般不加密数据,通常用来加密数据对应的MD5值
在安装软件包之前我们必须验证软件包的是否合法
# rpm -K 来验证软件包的合法性
验证软件包的合法性的步骤:
1.导入公钥
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
2.验证
# rpm -K /media/cdrom/Server/createrepo-0.4.11-3.el5.noarch.rpm
# rpm -K --digest /media/cdrom/Server/createrepo-0.4.11-3.el5.noarch.rpm 不对数据完整性进行验证
# rpm -K --signature /media/cdrom/Server/createrepo-0.4.11-.el5.noarch.rpm 不对签名进行验证

YUM:(Yellow dog Update Modified)
是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

Yum Repository:可以由以下三种途径提供yum服务:
1.ftp://
2.http://
3.file:///
Yum客户端配置文件的两个组成部分:
1./etc/yum.conf
2./etc/yum.repos.d/*.repo

/etc/yum.conf
# vim /etc/yum.conf
[main] 主配置段,定义全局属性
cachedir=/var/cache/yum 缓存目录
keepcache=0 安装软件之后是否继续保留
debuglevel=2 调试级别
logfile=/var/log/yum.log yum安装日志的保存目录
tolerant=1 是否容许出错
exactarch=1 精确匹配硬件平台
obsoletes=1 是否启用检查废弃包的文件
gpgcheck=1 安装软件包前是否检查其签名
plugin=1 是否启用插件功能
metadata_expire=1h 元数据过期时间

/etc/yum.repos.d/
# vim /etc/yum.repos.d/my.repo
[base] yum源的识别符号,除了[main]之外可以随意指定
name= 指定yum源的完整名称
baseurl= 指定yum源的位置
gpgcheck= 是否检查签名
enabled= 是否启用(默认启用)

yum本地命令:
# yum list{all | installed | available | updates}
all 所有的软件包
installed 已经安装的软件包
available 可用的软件包
updates 可更新的软件包

# yum check-update 检查可升级的软件包
# yum info package_name ... 查看软件包的信息
# yum provides /etc/profile 查询文件是由哪个软件包安装生成的
# yum downgrade package_name ... 降级软件包
# yum reinstall package_name ... 重装软件包
# yum repolist {all | enabled | disabled}
# yum repolist 显示yum源
# yum repolist all 显示所有的yum源
# yum clean all 清除缓存
# yum grouplist 显示包组信息
# yum groupinstall "Development Tools" 中间有空格必须加引号
# yum groupremove ""
# yum groupinfo "" 查看包组信息
# yum --nogpgcheck localinstall /Absolutely_Path/PACKAGENAME(本安装会自动检查包的签名和完整性) 自动到yum库下载依赖的rpm包

创建Yum源:(ftp, http:以后补充) file

创建本地yum服务,并把yum repository指向光盘
# vim /etc/yum.repos.d/local.repo
[base]
name=Server
baseurl=file:///media/cdrom/Server
gpgcheck=0

[VT]
name=VT
baseurl=file:///media/cdrom/VT
gpgcheck=0

[Cluster]
name=Cluster
baseurl=file:///media/cdrom/Cluster
gpgcheck=0

[CS]
name=ClusterStorage
baseurl=file:///media/cdrom/ClusterStorage
gpgcheck=0

yum如何解决rpm包之间的依赖关系
yum通过读取yum源对应repodata目录下文件来解决rpm包之间的依赖关系

Yum源的元数据文件repodata目录
primary.xml.gz 包含所有rpm文件及其彼此间的依赖关系,还包含每一个rpm包中的文件名
filelists.xml.gz yum源中每一个rpm包中文件的相关信息
other.xml.gz 额外信息,比如changelog等
repomd.xml 定义primary,filelists,other文件的校验码和时间戳,验证本地缓存文件与yum服务器是否一致
comps-rhe15-server-core.html 软件包的分组信息

如何把本地的rpm包目录设置为yum源:
1.用createrepo 生成yum源的repodata元数据文件
# createrepo /Absolutely_Path/DERECTORY
2.配置/etc/yum.repos.d/local.repo
[target]
name=my yum
baseurl=file:/yum/myyum/
gpgcheck=0

本文出自 “Obscur” 博客,请务必保留此出处http://urchin.blog.51cto.com/4356076/786927
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: