标签:rpm yum
Linux学习之程序包管理
1、包管理器就是对应用程序打包和包管理的应用软件,包管理包括安装、升级、卸载、查询和校验管理。
最早出现的包管理器是debian的deb,
随后reahat才推出了其包管理器rpm:RedHat package manager,之后就不断完善成为现在RedHat衍生版以及suse的包管理器;所以rpm的定义随之成为:RPM is package manager。
程序包是由以下四个部分组成:
1、二进制程序:/bin,/sbin,/usr/bin,/usr/sbin
2、库文件:/lib_64,/usr/lib_64
3、配置文件:/etc
4、帮助文档:manual,info
包管理器作用详解:
打包:将不同部分的文件归档组织存放的过程
安装:将包中的二进制文件、库文件、配置文件以及帮助文件存放至相应的目录,最后设置该程序的环境变量使程序能在系统中正常运行使用;
卸载:删除该程序的所有文件以及环境变量
升级:将新版的程序文件覆盖至就版本的程序文件上
查询:查看应用软件安装文件以及这些文件的信息
校验:核对包文件来源的合法性和完整性
2、rpm包:
分包机制:
PackageName-VERSION.tar.gz
其分包机制是将常用打包归档成为一个包,其他不常用的功能单独打包归档或以组合的方式打包归档;如:
核心包:PackageName-VERSION
支包:PackageName-Part1-VERSION
VERSION:版本包
版本号是由:主版本号(major)+次版本号(minor)+修正号(release)三部分组成的
主版本号:major的更改是软件的重要功能的加减引起的
次版本号:minor是一些小功能的增减引起的
修正好:release是弥补以前的bug
bash-4.2.4.tar.gz
rpm包的命名机制:
PackageName-VERSION-RELEASE.ARCH.rpm
VERSION:是软件包的版本号:
RELEASE:是rpm软件的修正号
ARCH:是表示该软件包使用的架构,如i386,x86_64等
如:
如何获取rpm包
a、发行版提供的程序包;这是安全级别最高的一种方式
b、Fedora-EPEL项目
c、项目的官方站点
d、搜索引擎 如:
3、基于rpm命令实现程序包管理:
安装:
rpm {-i|--install} [install-options] PACKAGE_FILE
-i:安装
-v:显示过程,-vv,-vvv更加详细的显示安装过程
-h:以#表示安装进度
--nodeps:忽略依赖关系安装
升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE
rpm {-F|--freshen} [install-options] PACKAGE_FILE
-Uvh:如果有旧版本的程序,则升级,如果没有则安装
-Fvh:如果有旧版本的程序,则升级,没有则不安装
--oldpackage:降级
--force:强制
卸载
rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_FILE
查询:
rpm {-q|--query} [select-options] [query-options]
查询选项:
-qa:查询本机已经安装的所有程序包
-qf /path/to/somefile:查询此处的文件由那个程序包安装生成;
-qc:查询指定程序包安装生成的配置文件
-qd:查询指定的程序包生成的文档
-qi:查询指定的程序包的祥光信息
-ql:查询程序包安装生成的所有文件的列表
-q --scripts:查询程序包相关的脚本
preinstall:安装前脚本
postinstall:安装后脚本
preuninstall:卸载前脚本
postuninstall:卸载后脚本
-p:查询正对是未安装的程序包文件;
校验:
rpm {-V|--verify} [select-options] [verify-options]
S file size differs//大小改变
M mode differs//权限改变
5 digest(formerly MD5 sum) differs//md5改变
D device major/minor number mismatch//设备文件的主次号不匹配
L readlin(2) path mismatch//
U user ownership differs//属主
G group ownership differs//属组
T mtime differs//修改时间戳
P caPabilities differs//删除文件
包校验:
来源的合法性
文件的完整性
导入密钥:rpm --import /path/to/KEY_FILE
校验:rpm -K /path/to/RPM_FILE
4、YUM:Yellow dog Updater Modified
通过仓库查找包并解决包依赖的问题
yum repositories:
文件服务器:
yum程序的配置文件:
/etc/yum.conf :定义全局配置,对有有的仓库都试用的配置
/etc/yum.repos.d/*.repo
一个文件通常用于一个或一组功能相近或相关的仓库
定义一个仓库指向:
[REPO_ID] //id是全局唯一的
name= //名字
baseurl= //文件服务器路径,建议不要指向多个
#mirrorlist=SCHME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE //baseurl的替代,MIRROR_LIST_FILE是一个定义了可用镜像文件列表的文本文件
enable={0|1} //是否启用仓库
gpgcheck={0|1} //是否对包进行校验
gpgkey= //指明使用哪个文件校验
cost //指明这个仓库的开销
定义仓库指向可用变量:
$releasever:引用当前系统的主版本号
$basearch:引用当前系统的基本架构
htpp://mirror.xxx.xx/centos/$releasever/$basearch
5、yum命令
yum [options] [command] [package...]
[command]
安装:install
[root@pizi yum.repos.d]# yum install nmap 已加载插件:fastestmirror, refresh-packagekit, security 设置安装进程 Loading mirror speeds from cached hostfile * base: mirrors.sina.cn * extras: mirrors.sina.cn * updates: mirrors.sina.cn base | 3.7 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 解决依赖关系 --> 执行事务检查 ---> Package nmap.x86_64 2:5.51-4.el6 will be 安装 --> 完成依赖关系计算 依赖关系解决 ========================================================================================================================== 软件包 架构 版本 仓库 大小 ========================================================================================================================== 正在安装: nmap x86_64 2:5.51-4.el6 base 2.8 M 事务概要 ========================================================================================================================== Install 1 Package(s) 总下载量:2.8 M Installed size: 9.7 M 确定吗?[y/N]:y 下载软件包: nmap-5.51-4.el6.x86_64.rpm | 2.8 MB 00:00 运行 rpm_check_debug 执行事务测试 事务测试成功 执行事务 正在安装 : 2:nmap-5.51-4.el6.x86_64 1/1 Verifying : 2:nmap-5.51-4.el6.x86_64 1/1 已安装: nmap.x86_64 2:5.51-4.el6 完毕!
卸载:remove
升级:update
查询: info
search KEYWORD
list all | installed|availiable
provide /path/to/somefile:查询执行文件由那个包安装生成
重新安装:reinstall
降级:downgrade
清理缓存:clean [package|metadata|expire-cache|apmdb|plugins|all]
手动生成缓存:makecache
包组:
grouplist
groupinfo ‘GRP_NAME‘
groupinstall "GRP_NAME"
groupremove "GRP_NAME"
仓库:
repolist [all|enabled|disabled]
repoinfo [all|enabled|disabled]
至此包管理就先写到这里,后续会有更加详细的补充。欢迎大家关注!
标签:rpm yum
原文地址:http://pizimsn.blog.51cto.com/7002551/1694185