1、软件包和包管理器
1.1、主流的程序包管理器
- redhat:rpm文件, rpm 包管理器,rpm:Redhat Package Manager,RPM Package Manager
- debian:deb文件, dpkg 包管理器
1.2、常见的arch
- x86: i386, i486, i586, i686
- x86_64: x64, x86_64, amd64
- powerpc: ppc
- 跟平台无关:noarch
1.3、rpm包命名方式
- name-VERSION-release.arch.rpm
- VERSION: major.minor.release
- release:release.OS
1.4、包的分类
- Application-VERSION-ARCH.rpm: 主包
- Application-devel-VERSION-ARCH.rpm 开发子包
- Application-utils-VERSION-ARHC.rpm 其它子包
- Application-libs-VERSION-ARHC.rpm 其它子包
1.5、包的依赖
软件包之间可能存在依赖关系,甚至循环依赖,即:A包依赖B包,B包依赖C包,C包依赖A包,安装软件包时,会因为缺少依赖的包,而导致安装包失败。
解决依赖包管理工具:
- yum:rpm包管理器的前端工具
- dnf:Fedora 18+ rpm包管理器前端管理工具,CentOS 8 版代替 yum
- apt:deb包管理器前端工具
- zypper:suse上的rpm前端管理工具
1.6、程序包管理器相关文件
- 包文件组成 (每个包独有)
- 包内的文件
- 元数据,如:包的名称,版本,依赖性,描述等
- 可能会有包安装或卸载时运行的脚本
- 数据库(公共):/var/lib/rpm
- 程序包名称及版本
- 依赖关系
- 功能说明
- 包安装后生成的各文件路径及校验码信息
1.7、获取程序包的途径
#系统发版的光盘或官方网站
https://www.centos.org/download/
http://mirrors.aliyun.com
https://mirrors.huaweicloud.com/
https://mirror.tuna.tsinghua.edu.cn/
http://mirrors.sohu.com
http://mirrors.163.com
http://cdimage.ubuntu.com/releases/
http://releases.ubuntu.com
#第三方组织提供
#Fedora-EPEL:Extra Packages for Enterprise Linux
https://fedoraproject.org/wiki/EPEL
https://mirrors.aliyun.com/epel/
https://mirrors.cloud.tencent.com/epel
#其他软件官方源
#docker
#mysql
......
2、rpm 包管理器
CentOS 系统上使用rpm命令管理程序包,安装、卸载、升级、查询、校验、数据库维护。
2.1、安装
rpm {-i|--install} [install-options] PACKAGE_FILE…
-v: verbose
-vv:
-h: 以#显示程序包管理执行进度
#rpm包安装[install-options]
--test: 测试安装,但不真正执行安装,即dry run模式
--nodeps: 忽略依赖关系
--replacepkgs | replacefiles
--nosignature: 不检查来源合法性
--nodigest: 不检查包完整性
--noscripts: 不执行程序包脚本
%pre: 安装前脚本 --nopre
%post: 安装后脚本 --nopost
%preun: 卸载前脚本 --nopreun
%postun: 卸载后脚本 --nopostun
2.2、升级和降级
#rpm包升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
upgrade:安装有旧版程序包,则"升级",如果不存在旧版程序包,则"安装"
freshen:安装有旧版程序包,则"升级", 如果不存在旧版程序包,则不执行升级操作
--oldpackage:降级
--force: 强制安装
- 升级注意项
- 不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核
- 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件不会直接覆盖老版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后保留
2.3、包查询
rpm {-q|--query} [select-options] [query-options]
[select-options]
-a:所有包
-f:查看指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作
[query-options]
--changelog:查询rpm包的changelog
-c:查询程序的配置文件
-d:查询程序的文档
-i:information
-l:查看指定的程序包安装后生成的所有文件
--scripts:程序包自带的脚本
--last 最后安装的包
--changelog 安装包的变更历史
#和CAPABILITY相关
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
--provides:列出指定程序包所提供的CAPABILITY
-R,--requires 查询指定的程序包所依赖的CAPABILITY
#查看最近安装的包
rpm -qa --last|head
2.4、包卸载
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test]
PACKAGE_NAME ..
#当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留
#强行删除rpm包,并恢复
rpm -e rpm --nodeps
#重启进入rescue模式
#mkdir /mnt/cdrom
#mount /dev/sr0 /mnt/cdrom
#rpm -ivh /mnt/cdrom/Packages/rpm-4.11.3-40.el7.x86_64.rpm --root=/mnt/sysimage
#reboot
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END