Linux程序包管理:
- 包管理器功能:打包,包管理(安装,升级,卸载,查询,校验)
- 目前Linux中最常见有两种常用工具
- deb:debian Linux使用 包括ubuntu
- rpm:Redhat Package Manager ,Centos等在使用
- 程序包的组成:
- 二进制程序:/bin, /sbin, /usr/bin, /usr/sbin
- 库文件: /lib64, /usr/64
- 配置文件:/etc
- 帮助文件:manual, info
- 包管理器:
- 打包:将源文件,一个一个单一的归档文件中
- 安装:将文件释放到相应路径下
- 卸载:收集所有相关文件删除
- 升级:更新相关文件
- 查询:查询程序包相关信息
- 校验:程序包的来源合法性,完整性
rpm包:
- rpm打包:打包rpmbuild工具 基于specs文件按照各种规则完成打包。
- 分包机制:一个程序包含各种功能,其中可能只有几种功能常用,几种功能偶尔用,几种功能很少用,将程序功能分开打包,分为核心包和支包。
- 核心包:software-Version
- 支包:software-devel-Version
- rpm包命名机制:
- name-Version-Release.ARCH.rpm
5个字段
name:包名
Version:版本信息
- name-Version-Release.ARCH.rpm
major.minor 主版本号.次版本号
Release:发布版本次数
ARCH:适合的硬件平台 i386, i586, i686, x86_64
包与包之间:有可能存在依赖关系 例如安装A之前需要先安装B,安装B之前需要先安装C等等。rpm数据库:/var/lib/rpm
记录包名,安装生成文件,校验信息,依赖关系等等。
如何获取rpm包
- 发行版提供的程序包,在光盘中一般在Packages目录中
- fedora-EPEL ,组织收入rpm包,正式,权威,安全
- 项目的官方站点, 比如tomcat,SVN官方站点
- 搜索引擎:第三方提供,注意安全问题
rpm命令实现程序包管理
- 安装
- rpm {-i|--install} [install-options] PACKAGE_FILE ...
-i :install
-v:查看详细的安装信息;-vv,-vvv更加详细的安装信息
-h:显示安装进度
-
install-options [--allfiles] [--badreloc] [--excludepath OLDPATH] [--excludedocs] [--force] [-h,--hash] [--ignoresize] [--ignorearch] [--ignoreos] [--includedocs] [--justdb] [--nocollections] [--nodeps] [--nodigest] [--nosignature] [--noorder] [--noscripts] [--notriggers] [--oldpackage] [--percent] [--prefix NEWPATH] [--relocate OLDPATH=NEWPATH] [--replacefiles] [--replacepkgs] [--test]
- rpm {-i|--install} [install-options] PACKAGE_FILE ...
--nodeps:忽略依赖关系,强制安装
--replacefiles:当某程序已经安装了,使用该命令直接覆盖安装
--replacepkgs:重新安装某个软件
--test:测试软件是否可以安装到系统中
示例:
升级:
- rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...-Uvh:如果安装过旧版本程序包,则更新至新版本;如果没有,则直接安装
-Fvh:如果安装过旧版本程序包,则更新至新版本;如果没有,则不安装
此处选择[install-options] 同安装时的选项
--oldpackage:对程序进行降级安装
查询
- rpm {-q|--query} [select-options] [query-options]
-qa:查询本机已经安装的所有软件
-q :只查询指定软件是否安装
-qi : 查询指定软件的详细信息,开发商,版本等
-ql:查询软件安装生成的所有文件列表
-qc:查询指定程序包安装生成的配置文件
-q --scripts:查询程序包相关的脚步
preinstall:安装前脚本
postinstal:安装后脚本
preuninstall:卸载前脚本
postuninstall:卸载后脚本
-qp[icdl] :查询未安装软件的信息,参数作用和上面一样
示例:
卸载
- rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
校验
- rpm {-V|--verify} [select-options] [verify-options
-V:后面加软件名,若该软件中文件被修改了,就会被列出
-Va:列出系统上所有被改动过的文件
-Vf:勒出某个文件是否被改动过
S file Size differs 文件大小被修改
M Mode differs 权限和文件类型被修改
5 digest (formerly MD5 sum) differs MD5内容发生变化
D Device major/minor number mismatch 设备的主/次代码已经改变
L readLink(2) path mismatch Link路径发生变化
U User ownership differs 文件属主被修改
G Group ownership differs 文件属组被修改
T mTime differs 文件创建时间被修改
P caPabilities differ 依赖关系发生改变示例:
- 包校验
来源合法性校验:非对称加密 (公钥)
完整性验证:单向加密
#该路径下存放了密钥 公钥文件 [[email protected] Packages]# ls /etc/pki/rpm-gpg/ RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Debug-7 RPM-GPG-KEY-CentOS-Testing-7
导入密钥命令:
rpm --import /path/to/Key_file
手动校验:
rpm -K /path/to/rpm_file