程序包管理器:
源代码 –> 目标二进制格式(二进制程序,库文件,配置文件,帮助文件)–>组织成为一个或有限几个“包”文件;
安装,升级,卸载,查询,校验
安装: -ivh, --nodeps, --replacepkgs 卸载: -e, --nodeps 升级:-Uvh , -Fvh , --nodeps, --lodpackage 查询:-q, -qa , -qf , -qi , -qd , -qc ,-q --scripts, -q --changlog, -q --provides, -q --requires 校验:-V 程序包管理器: debian : dpt, dpkg, ".deb" redhat: rpm S.U.S.E: rpm Gentoo: ports Archlinux: 源代码:name-VERSION.tar.gz VERSION:major.minor.release rpm包命名格式: name-VERSION-release.arch.rpm VERSION:major.minor.release release.arch:rpm包的发行号 relae.os:2.ei7.i386.rpm archetecture:i386,x64(amd64),ppc,noarch redis-3.0.2.targz --> redis-3.0.2-1.centos7.x64.rpm 拆包: 主包和支包 主包:name-VERSION-release.arch.rpm 支包:name-function-VERSION-release.arch.rpm
前端工具:自动解决依赖关系;
yum:rhel系列系统上rpm包管理器的前端工具;
apt-get(apt-cache):deb包管理器的前端工具;
zypper:suse的rpm管理器的前端工具;
dnf:Fedord 22+ 系统上rpm包管理器的前端工具;
程序包管理器: 功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装,升级,卸载和查询等管理操作; 1.程序包的组成清单(每个程序包都单独实现); 文件清单 安装或卸载时运行的脚本 2.数据库(公共) 程序包的名称和版本 依赖关系 功能说明 安装生成的各文件的文件路径及校验码信息
rpm包的数据库
[root@Centos7ip11 ~]# ls /var/lib/rpm
Basenames db.002 Group Obsoletename Requirename Triggername
Conflictname db.003 Installtid Packages Sha1header
__db.001 Dirnames Name Providename Sigmd5
获取程序包的途径:
1.系统发行版的光盘或官方的文件服务器(或镜像站点);
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirors.163.com
2.项目的官方站点 3.第三方组织 a.EPEL b.搜索引擎 https://pkgs.org/ http://www.rpmfind.net http://rpm.pbone.net 4.自动动手, 建议:检查其合法性 来源合法性 程序包的完整性
Centos系统上rpm命令管理程序包:
安装,升级,卸载,查询和校验,数据库维护
http://www.runoob.com/linux/linux-comm-rpm.html
安装: [root@Centos7ip11 ~]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm
rpm命令: 选项: 安装:-i, --install 升级:-U,--update, -F,--freshen 卸载:-e,--erase 查询:-q,--query 校验:-V,--verify 数据库维护:--builddb,--initdb -h: bash marks输出进度条;每个#表示2%的进度; --test:测试安装,检查并报告依赖关系及冲突消息等; --nodeps:忽略依赖关系;不建议; --replacepkgs:重新安装 注意:rpm可以自带脚本; 四类: 都不执行 --noscripts preinstall:安装过程开始之前运行的脚本,%pre , --nopre postinstall:安装过程完成之后运行的脚本,%post , --nopost preuninstall:卸载过程真正开始执行之前运行的脚本,%preun , -- nopreun postuninstall:卸载过程完成之后运行的脚本,%postun , --nopostun --nosignature:不检查包签名信息,不检查来源合法性; --nodigest:不检查包完整性信息;
升级: [root@Centos7ip11 ~]# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm [root@Centos7ip11 ~]# rpm -Fvh zsh-5.0.2-28.el7.x86_64.rpm 选项: -U : 升级或安装; -F:升级 --oldpackage :降级; --force:强制升级; 注意: 1.不要对内核做升级操作;linux支持多内核版本并存,因此,直接安装新版本内核; 2.如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个牌子文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
卸载: 选项: -e, --erase:卸载 --allmatches:卸载所有匹配指定名称的程序包的各版本; --nodeps:忽略依赖关系 --test:测试卸载,dry run模式
实例:
[root@Centos7ip11 ~]# rpm -q zsh
zsh-5.0.2-28.el7.x86_64
[root@Centos7ip11 ~]# rpm -e zsh
查询:
rpm {-q|–query} [select-options] [query-options]
选项: [select-options] -a, --all:查询所有已经安装过的包; -f FILE:查询指定的文件由哪个程序包安装生成; -p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作; --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供; --whatrequires CAPABILITY:查询指定的CAPABILITY 被哪个包依赖; [query-options] --changelog:查询rpm包的changlog; -l,--list:程序安装生成的所有文件列表; -i,--info:程序包相关的信息,版本号,大小,所属的包组,等; -c,--configfiles:查询指定的程序提供的配置文件; -d,--docfiles:查询指定的程序包提供的文档; -provides:列出指定的程序包提供的所有的CAPABILITY; -R,--requires:查询指定的程序包的依赖关系; --scripts:查看程序包自带的脚本片段; 用法: -qi -qf -qc -ql -qd -qpi -qpl
实例:
[root@Centos7ip11 ~]# rpm -q --whatprovides bash bash-4.2.46-31.el7.x86_64 [root@Centos7ip11 ~]# rpm -q --provides bash /bin/bash /bin/sh bash = 4.2.46-31.el7 bash(x86-64) = 4.2.46-31.el7 config(bash) = 4.2.46-31.el7
校验:
rpm -V|-y|–verify [verify-options]
5 MD5校验和 S 文件大小 L 符号连接 T 修改时间 D 设备 U 用户 G 组 M 模式(包括许可和文件类型)
包来源合法性验证和完整性验证: 来源合法性验证: 完整性验证: 获取并导入信任的包制作者的密钥: 对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 验证: 1.安装此组织签名的程序时,会自动执行验证; 2.手动验证:rpm -k PACKAGE_FILE
数据库重建:
rpm管理器数据库路径:/var/lib/rpm/
查询操作:通过此处的数据库进行;
rpm {--initdb | --rebuilddb} {--dbpath DIRECTORY} [--root DIRECTORY] 对这些模式唯一的选项是--dbpath --initab: 初始化数据库,当前无任何数据库可实现初始化创建一个新的;当前有时不执行任何操作; --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建; ~]# rpm --initdb --dbpath=/tmprpm