程序包管理
Linux系统下有一系列系统管理程序包的工具。这些工具可以对程序包进行安装,升级,卸载,校验,查询等等操作;来更方便我们在Linux下对程序包的管理,常用的就属rpm和yum了,下面就详细介绍下者两种工具。当然,除了这两种,还有deb也是使用广泛的一种工具。现在,就先说说rpm吧。
一、rpm
rpm是redhat公司牵头开发的一款包管理工具,全称redhat package manager。rpm包是将程序源码用rpmbuild命令加工打包成的,rpmbuild可以根据自己的需要只将自己需要的功能打包成rpm包。节省用源码安装方式每次都要编译的过程,rpm包里包含可执行的二进制文件。然后,利用rpm命令就可以安装,卸载管理这个打好的rpm包了。
1、rpm功用
打包,安装,卸载,升级,查询,校验
2、rpm分包机制
打包: rpmbuild specs文件
分包机制:上面说到rpmbuild可以根据自己需要只将自己需要的功能打包成rpm包,这就是rpm的分包机制。
例如:一个APP源码包为testapp-VERSION.tar.gz,这个源码包中包含有这个APP提供的所有功能,但是我只需要他的主功能或者只需要这个app的开发模块功能就OK。那就可以指定主功能打包成核心包testapp-VERSION.rpm和开发模块功能打包成支包testapp-devel-VERSION.rpm这样两个包。这样的例子有很多。
3、rpm包的命名规则
name-VERSION-RELEASE.ARCH.rpm
name:包名
VERSION:版本号,指对应的源代码版本号
1.0.0 主版本号,次版本号,发布版本号
RELEASE:rpm的修订次数,发布版本。与VERSION对应的源代码版本号无关
ARCH:rpm包所支持的硬件平台。有x86_64,i386等
4、rpm包的获取方式
a、系统光盘或镜像中提供的程序包
b、Fedora-EPEL
c、程序项目的官方站点
d、搜索引擎
http://rpmfind.net
http://rpm.pbone.net
http://pkgs.org
5、rpm命令
a、安装
rpm {-i|--install} [install-options] PACKAGE_FILE ...
常用命令选项:rpm -ivh package
-i or --install:安装选项
-v:显示安装过程;-vv,-vvv 更详细的安装细节
-h:显示安装进度
--nodeps:忽略依赖关系安装
--replacepkgs:重装程序包
b、升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
两个选项的区别:
-U:如果有旧版程序包,则升级;如果没有,则安装。
-F:如果有旧版程序包,则升级;如果没有,不安装。
*其他一起使用的选项还有-v,-h,--nodeps 与安装时代表的意义相同
--oldpackage:降级,恢复旧版本
--force:会对其他程序产生影响时,强制升级
c、卸载
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts][--notriggers] [--test] PACKAGE_NAME ...
d、查询
rpm {-q|--query} [select-options] [query-options]
查询选择:
-qa:查询本机已经安装的所有程序包
-qf filename:查询文件由那个程序包安装生成
-qc:查询指定程序包安装生成的配置文件
-qd:查询指定程序包安装生成的文档
-qi:查询指定程序的相关信息
-ql:查询指定程序安装生成的所有文件列表
-q --scripts:查询程序相关的脚本
preinstall:安装前脚本
postinstall:安装后脚本
preuninstall:卸载前脚本
postuninstall:卸载后脚本
e、校验
rpm {-V|--verify} [select-options] [verify-options]
导入秘钥:
rpm --import /path/to/key_file
校验:rpm -K /path/to/rpm_file
二、yum
yum全称Yellow dog updater,yum用python开发写成,是为了提高rpm软件包安装性而开发的一种软件包管理器。yum的宗旨是自动化的升级,安装,移除rpm包收集rpm包的相关信息,检测并帮助用户自动解决rpm包依赖性。yum的理念是使用一个中心仓库管理程序包之间的关系,并根据计算的软件依赖关系进行相关的升级,安装,删除等操作,减少用户头痛的依赖问题。
yum的软件仓库,可以是http或ftp站点,也可以是本地软件池。但必须包含rpm的header信息,header包含了rpm的各种信息,包括描述,功能,提供的文件,依赖性等。正是因此,yum才能自动的完成许多工作。
软件仓库分类
ftp://hostname/path/to/repo
http://hostname/path/to/repo
file:///path/to/repo
yum配置文件
/etc/yum.conf
定义全局配置:对所有仓库都适用
/etc/yum.repos.d/*.repo
一个文件通常用于一个或一组功能相近或相关的仓库
yum命令
yum [options] [command] [package ...]
command:
安装:install
卸载:remove,erase
升级:update
查询:info
list all/installed/availiable
provides /path/to/file 查询文件由那个包安装生成
重新安装:reinstall
降级:downgrade
清理缓存:clean packages/metadata/expire-cache/rpmdb/plugins/all
生成缓存:makecache
包组:
查询列表:grouplist
查询信息:groupinfo "grp_name"
安装包组:groupinstall "grp_name"
卸载包组:groupmove "grp_name"
仓库
查询列表:repolist all/enabled/disabled
查询信息:repoinfo all/enabled/disabled
本文出自 “从头再来” 博客,请务必保留此出处http://4708705.blog.51cto.com/4698705/1694728
原文地址:http://4708705.blog.51cto.com/4698705/1694728