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

Linux基础之软件包管理

2013-07-27 20:54 316 查看
一、介绍现在Linux上软件的安装方式有多种,有源码包编译,软件包管理器,软件包管理器前端工具,通用二进制编译等。源码包,优点是,灵活性和可定制性比较好,缺点是,技术要求高,操作复杂,虽然网上有编译安装软件的文档,也有很多人在使用,也都是默认或者简单配置后编译的。后来出了软件包管理工具RPM,RPM软件包管理软件方便多了但是它的依赖关系让人头疼,所以又推出出了YUM解决了让人头疼的依赖关系。在这里我给大家介绍一下我学到的几种Linux软件安装方式。

二、软件包的组成
1、二进制文件 所分布的目录:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin
2、库文件
所分布的目录:/lib,/usr/lib,/usr/local/lib
3、配置文件
所分布目录:/etc
4、帮助文件
手册:README INSTALL /usr/share/doc
man文档:/usr/share/man 定义man文档的配置文件定义在/etc/man.config
三、程序安装方式 1、通用二进制编译:别人编译好的,解压之后配置就能使用。 2、软件包管理器:使用rpm命令安装就可以使用了,但安装时要考虑到依赖关系。 3、软件包管理器前端工具:可以自动解决软件包的依赖关系。
4、源码包:源码包就是程序的源代码,必须通过编译器编译成二进制后才能使用,在编译时,软件所需的库文件一定要有,不然编译是不能成功的。
四、RPM软件包管理工具 RPM: RPM Package Manager 1、基本功能: 打包、安装、查询升级、校验、卸载、数据库管理(重建) 2、rpm软件包包含: 文件清单 文件存放路径
提供的功能说明 依赖关系
3、数据库:软件包信息,软件包校验 4、源程序命名方式: name-version.tar.{gz|bz2|xz}
版本号:major.minor.release 主版本号.次版本号.发行号 5、rpm包的命名方式: name-version-release.arch.rpm 发行号:用于标识rpm包的本身发行号,可还包含所适用的操纵做系统
例如:el6:RHEL6
arch:主机平台 例如:i386、x86_64、amd64、ppc、noarch不区分平台
注意:下载软件包时要注意区分操作系统和平台,不然可能会装不上的
6、rpm分包 主包:核心包 分包:支包 例如:bind bind-devel
7、常用软件包下载地址: http://mirrors,sohu.com http://rpmfind.net http://rpm.pbone.net 8、rpm包的验证机制: 来源的合法性、软件包的完整性 RrdHat系列的官方公钥: /etc/pki/rpm-gpg/
RPM-GPG-KEY-redhat-
可以使用rpm命令检测软件包的合法性 rpm -K 软件包名 rpm -checksig 软件包名 9、安装软件包:rpm -i /path/to/rpm_file1 rpm_file2...
-i|--install :安装一个新的软件包 Vendor:rpm软件包的制作者 Release:发行号 Build Date:软件包编译的时间 Install Date:软件包安装的时间 Build host:在那个系统上编译成rpm包的 License:软件包的许可证 Singnature:软件包签名信息 Packager:软件包制作者 URL:软件包的链接地址 Summary:简要说明信息 Description:详细说明信息 -v :显示安装过程,-vv显示更详细的安装过程
-h :以#显示安装进度。一个#号表示2%的进度;
-ivh :通常这几个选项组合使用
--nodeps :安装时忽略依赖关系
--test :测试安装
--replacepkgs :重新安装 10、卸载软件包:
rpm -e :卸载一个软件包
11、查询软件包:rpm -q
-q|--query
-qa :查询所有已安装的软件包
rpm -qa |grep 'pattern'
-qi :查询软件包的摘要信息
-ql :查询软件包生成的文件清单:
-qf :查询某文件由那个软件包安装生成:
-qc :查询包安装生成的配置文件
-qd :查询包安装生成的帮助文件
-q --scripts :查询软件包相关的脚本
preinstall :安装前脚本
postinstall :安装后脚本
preuninstall :卸载前脚本
postuninstall :卸载后脚本
12、查询尚未安装的包的相关信息 rpm -qpi /path/to/rpm_file
-qpi -qpl -qpd -c --scripts
13、升级:
-U:升级+安装
-F:升级
-Uvh
-Fvh

--force 强制安装
--nodeps 不检查依赖关系

注意:内核不应该升级,应该尽可能安装,允许多版本并存;
14、校验:rpm -V 包名

15、rpm数据库
rpm database:/var/lib/rpm
重建rpm数据库
rpm --initdb :新建,不覆盖原有的数据库
rpm --rebuilddb :覆盖,覆盖原有数据库(常用)
16、源码格式的rpm包:rpm-name.varsion.release.src.rpm
不能直接使用,需要打包之后才能安装使用
打包rpm的包制作过程是根据spec文件来完成的。

五、YUM软件包管理YUM:Yellow dog Updater, Modified rpm的前端工具 1、自动解决依赖关系 2、repository:仓库,yum源
判断是不是yum源 repodata/ :所在的父目录就是yum仓库,如果当前目录有repodata就说明这是一个yum仓库
RHEL6:的光盘镜像就是一个yum源
例如:把RHEL6的光盘挂载到/media/cdrom,那yum源配置文件里"baseurl=file:///media/cdrom"
3、客户端:

/etc/yum.conf //yum主配置文件 /etc/yum.repos.d/*.repo //yum配置文件 全局配置//对所有的yum仓库都生效 /etc/yum.conf
[main]    //定义yum源名称
cachedir=/var/cache/yum    //定义yum的缓存目录
keepcache=0    //保存缓存
debuglevel=2    //调试级别
logfile=/var/log/yum.log    //日志文件所在目录
distroverpkg=redhat-release    //验证rpm发行版所使用的密钥文件
tolerant=1    //忽略已安装的软件
exactarch=1    //必须做平台的精确匹配
obsoletes=1    //是否检查废弃的包
gpgcheck=1    //是否检查rpm包的签名,验证rpm包来源的合法性
plugins=1    //是否启用插件
# Note: yum-RHN-plugin doesn't honor this.
metadata_expire=1h    //缓存文件在本地缓存多长时间
配置文件 /etc/yum.repos.d/*.repo
[repo]
name=Primary Yum repository
baseurl=http://mirror.sohu.com/fedora-epel/6/i386/    //yum源网址
enabled={0|1}       //{不开启|开启}
gpgcheck={0|1}      //{不检查|检查签名}
gpgkey=file:///etc/pki/RPM-GPG-KEY-redhat-base    //指定验证用的密钥文件
4、 yum命令
1)查询 yum list list {all|installed|available} :列出软件包 {所有|已安装|可安装} repolist {all|enabled|disabled} :列出yum源 {所有|开启的|未开启的}
info packag_name :查看软件包信息,也可以查询未安装的软件包的信息
groupinfo "group_name" :查询包组的信息
clean {packages|metadata|expire-cache|rpmdb|plugins|all} :清除yum缓存
makecache :生成yum缓存
2)安装 yum install
install -package_name
yum -y :自动回答为yes
reinstall package_name ... :重新安装软件包
groupinstall "package-group_name" :安装一个包组 安装开发组:编译软件包时基本就没有问题了,建议初学者在编译软件之前把这几个包组装上

RHEL6,CentOS6: "Development tools"、"Server Platform Development" "Desktop Platform Development"
RHEL5, CentOS5: "Development tools"、"Development Libraries"
localinstall :安装本地软件包;rehl6上直接用yum install就可以了

--nogpgckeck :安装时不对软件包做验证
3)升级 yum update
check-update :查询可升级的包
update package_name :升级软件包
update-to :升级到指定的版本
groupupdate "group_name" :升级包组 4)卸载 yum remove
remove package_name ... :卸载一个软件包
groupremove "group_name" :卸载一个包组

我总结的软件包管理rpm和yum的知识就这些了,如有不足之处请多提宝贵意见,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  yum rpm 软件包管理