linux下RPM及yum学习
- linux中程序管理程序主要分为两类
dpkg(Debian Packager):debian,Ubuntu,Knoppix
rpm(Redhat Package Manager):Redhat,Centos,Fedora
linux通过管理程序实现程序的安装,但不管是dpkg还是rpm安装软件时若软件存在依赖性关系,则自动安装所需要软件及相关配置,为实现此功能,rpm需包含自己的数据库(/var/lib/rpm),将安装程序分别安装到指定位置,本次学习以rpm为本进行学习
- RPM管理程序:
- RPM是什么
RPM是Redhat开发的为Redhat系列的linux提供程序安装管理的管理程序
RPM与SRPM
Linux由于开源关系导致其各发行版或多或少有点不一样,由于RPM安装程序事先编译按照,因此不可能适应全部发行版的linux环境,针对此现象可使用SRPM程序包,此程序包包含RPM源码,可根据具体发行部再行编译安装
RPM使用
打包:rpmbuild:基于specs文件进行打包
主包:包含包的主要功能(app-version)
分包:包含包的部分非常用功能,根据需要进行安装(app-devel-version)
version格式:主版本号.此版本号.release号
例子: zlib-1.2.7-13.el7.x86_64.rpm(主包)
zlib-devel-1.2.7-13.el7.x86_64.rpm(分包)
获取包方式:
1.发行版提供的程序包
2.Fedora-EPEL 个别开源程序;
3. 项目官方站点
4.搜索引擎
安装:
格式:rpm {-i|--install} [install-options] PACKAGE_FILE ...
-i:表示安装程序
-v:表示显示安装过程
-vv:显示调试信息
--percent:以百分比方式显示安装进度
--excludedocs:不安装包中的文档文件
--ignoreach:不校验包结构
--includedocs:安装文档
--noscripts:不运行安装脚本
--prefix:安装到指定目录下
--force:忽略文件冲突
-h:安装时输出hash记号#
--nodeps:忽略依赖关系
--test:仅做测试
--replacepkgs:重装程序包
例子:
升级:
格式:rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
常用命令格式:
-Uvh:若有旧版程序则升级,若无则安装
-Fvh:若有旧版程序则升级,若无则不做操作
--nodeps:忽略依赖关系
--oldpackage:降级
--force:强制升级
--test:仅做测试
卸载:
格式: rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
[--nodeps]:卸载忽略依赖关系
[--noscripts]:卸载时不运行脚本
[--test]:只是测试
查询:
格式:rpm {-q|--query} [select-options] [query-options]
-q:查询
-qa:查询本机安装的所有程序
-qf FILE:查询FILE由那个安装包生成
-p:查询未安装的软件包
--whatprovides:查询所有提供了功能的软件包
--whatrequires:查询所有要求功能的软件包
-qc:查询程序包生成的配置文件
-qd:查询程序包生成的文档
-qi:查询程序包的信息
-ql:查询程序包生成的文件列表
-q --scripts:查询程序包相关脚本
preinstall:安装前
postinstall:安装后
preuninstall:卸载前
postuninstall:卸载后
例子:
校验:
格式:rpm {-V|--verify} [select-options] [verify-options]
校验码含义:
S: 文件大小发生了变化
M:权限发生变化
5:MD5校验码变化
D:设备文件不匹配
U:属主改变
T:最近修改时间戳改变
P:功能变化
由于安全性考虑文件可能需要秘钥进行校验:
导入秘钥:rpm --import
校验: rpm -k FILE
yum:
网上存在较多镜像站点,其中repodata所在父目录即仓库路径
yum仓库:
文件服务器:
ftp://hostname/PATH/TO/REPO
http://hostname/ PATH/TO/REPO
file:///PATH/TO/REPO
yum配置文件:
全局配置文件:/etc/yum.conf
单个仓库或同类仓库:/etc/yum.repos.d/*.repo
name:仓库名称
baseurl:参照yum仓库文件服务器设置,可设置多个,随机挑选一个
mirrorlist:将仓库写成列表,在通过列表读取baseurl,实现baseurl冗余
gpgcheck:是否检验包的合法性(0/1)
gpgkey:秘钥文件
enable:是否启用(0/1)
cost:指明仓库开销,越小越优先
添加后yum repolist生效仓库
仓库定义变量:
$releasever:当前系统主版本号
$basearch:当前系统架构:
i386,i486,i586,i686
例子:
yum管理软件:
安装:install
卸载:remove(自动卸载依赖关系包)
升级:update(yum check-update检察升级包)
查询:
info:不管安装没安装都能查询相关信息
search KEYWOED [all]:all代表只要出现了都search,没有all代表只搜索包名出现关键字的
list all|installed|availiable:显示所有包|已安装包|可安装包
provides:查询文件由那个包生成的
重新安装:reinstall
降级:downgrade
清理: [ packages | metadata | expire-cache | rpmdb | plugins | all ],一般可以clean all
生成缓存:makecache
包组:一次管理一组程序包
grouplist:列出所有包组
groupinfo GROUPNAME:查看GROUPNAME信息
groupinstall “GROUPNAME”包组安装
groupremove “GROUPNAME”包组卸载
仓库:
列出仓库: repolist [all|enabled|disabled] 默认enableed
查看仓库信息:repoinfo [all|enabled|disabled]
查看仓库包安装情况: repository-packages