1.软件包和包管理器
1.1软件包
-
.tar.gz打包的源码文件
-
Debain的dpkg包管理软件,.deb后缀的软件包
-
RedHat的rpm包管理系统,.rpm后缀的软件包
1.2软件包中的文件分类
-
二进制文件
-
库文件
-
配置文件
-
帮助文件
#利用cpio工具查看rpm包文件列表
rpm2cpio 包文件|cpio –itv #预览包内文件
rpm2cpio 包文件|cpio –id “*.conf” #释放包内文件
1.3程序包管理器
主流的程序包管理器:
-
redhat:rpm文件, rpm 包管理器,rpm:Redhat Package Manager,RPM Package Manager
-
debian:deb文件, dpkg 包管理器
1.4包命名
源代码打包文件命名:name-VERSION.tar.gz|bz2|xz,其中VERSION为major(主版本号).minor(次版本号).release(修正版本号),比如,nginx-1.18.0.tar.gz
rpm包命名:name-VERSION-release.arch.rpm,其中VERSION为major(主版本号).minor(次版本号).release(修正版本号),release为包的发布号,用于标识同一版本的不同发布,arch为目标操作系统的体系结构,常见的arch有x86: i386, i486, i586, i686,x86_64: x64, x86_64, amd64,powerpc: ppc,跟平台无关:noarch
1.5包的依赖
软件包之间可能存在依赖关系,甚至循环依赖,即:A包依赖B包,B包依赖C包,C包依赖A包,安装软件包时,会因为缺少依赖的包,而导致安装包失败。
解决依赖包管理工具:
-
yum:rpm包管理器的前端工具
-
dnf:Fedora 18+ rpm包管理器前端管理工具,CentOS 8 版代替 yum
-
apt:deb包管理器前端工具
-
zypper:suse上的rpm前端管理工具
1.6获取程序包的途径
软件包需要事先将源码进行编译后打包形成,获取包的途径如下:
CentOS镜像:
Ubuntu 镜像:
Fedora-EPEL:Extra Packages for Enterprise Linux
Extra Packages for Enterprise Linux (EPEL) :: Fedora Docs
Rpmforge:RHEL推荐,包很全,即将关闭
Community Enterprise Linux Repository:支持最新的内核和硬件相关包
软件项目官方站点
Index of /yum/10.4/centos8-amd64/rpms/
Index of /232905/yum/mysql-8.0-community/el/8/x86_64
搜索引擎,注意:第三方包建议要检查其合法性,来源合法性,程序包的完整性
自己制作,将源码文件,利用工具,如:rpmbuild,fpm等工具制作成rpm包文件
2.包管理器rpm
CentOS系统上使用rpm命令管理程序包
功能:安装、卸载、升级、查询、校验、数据库维护
2.1安装
#常用组合
rpm -ivh PACKAGE_FILE ...
2.2升级或降级
#常用组合
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
2.3包查询
#常用查询组合
-qi PACKAGE #information
-qf FILE #查看指定的文件由哪个程序包安装生成
-qc PACKAGE #查询程序的配置文件
-ql PACKAGE #查看指定的程序包安装后生成的所有文件
-qd PACKAGE #查询程序的文档
-qpi PACKAGE_FILE
-qpl PACKAGE_FILE
-qa
2.4包卸载
#常用组合
rpm -evh
2.5包校验
#检查包的完整性和签名
rpm -K|checksig rpmfile
#检查包中的文件是否和当初安装时有所变化
rpm -V rpmfile
3.yum和dnf
CentOS使用 yum, dnf 解决 rpm 的包依赖关系
YUM: Yellowdog Update Modififier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包
CentOS 8 用dnf 代替了yum ,不过保留了和yum的兼容性,配置也是通用的
3.1工作原理
yum/dnf 是基于C/S 模式
-
yum 服务器存放rpm包和相关包的元数据库
-
yum 客户端访问yum服务器进行安装或查询等
yum 实现过程:
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装包时,会自动下载repodata中的元数据,查询元数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
3.2yum客户端配置
#yum客户端配置文件
/etc/yum.conf #为所有仓库提供公共配置
/etc/yum.repos.d/*.repo #为每个仓库的提供配置文件
/etc/yum.conf
[main]
gpgcheck=1 #安装包前要做包的合法和完整性校验
installonly_limit=3 #同时可以安装3个包,最小值为2,如设为0或1,为不限制
clean_requirements_on_remove=True #删除包时,是否将不再使用的包删除
best=True #升级时,自动选择安装最新版,即使缺少包的依赖
skip_if_unavailable=False #跳过不可用的
/etc/yum.repos.d/*.repo
[repositoryID]
name=Some name for this repository #仓库名称
baseurl=url://path/to/repository/ #仓库地址
mirrorlist=http://list/ #仓库地址列表,在这里写了多个 baseurl指向的地址
enabled={1|0} #是否启用,默认值为1,启用
gpgcheck={1|0} #是否对包进行校验,默认值为1
gpgkey={URL|file://FILENAME} #校验key的地址
enablegroups={1|0} #是否启用yum group,默认值为 1
failovermethod={roundrobin|priority} #有多个baseurl,此项决定访问规则,roundrobin 随机,priority:按顺序访问
cost=1000 #开销,或者是成本,YUM程序会根据此值来决定优先访问哪个源,默认为1000
metadata_expire=6h #rocky-9中新增配置,metadata 过期时间
countme=1 #rocky-9中新增配置,默认值false,附加在mirrorlist之后,便于仓库收集客户端信息
#yum-config-manager,安装来自yum-utils包
#常用选项
--add-repo=URL #添加repo源
--disable repoid #禁用源
--enable repoid #启用源
3.3yum命令
yum [options] COMMAND
#常用选项
-c file|--config file #指定配置文件,默认使用/etc/yum.conf
-v|--verbose #显示详细信息
-b|--best #尝试在可用包中寻找最匹配的版本
-y|--assumeyes #自动回答为 yes
--nogpgcheck #不进行包校验
--repo repoid|--repoid repoid #指定repo源
--enablerepo repoid #临时启用repo源,可用通配符
--disablerepo repoid #临时禁用repo源,可用通配符
--nodocs #不安装文档
--skip-broken #跳过有问题的包
--enable #启用源,配合 configmanager
--disable #禁用源,配合 configmanager
-x package|--exclude package|--excludepkgs package #排除指定包,可用通配符
--downloadonly #只下载,不安装
#常用子命令
autoremove #卸载包,同时卸载依赖
check-update #检查可用更新
clean #清除本地缓存
downgrade #包降级
group #包组相关
help #显示帮助信息
history #显示history
info #显示包相关信息
install #包安装
list #列出所有包
makecache #重建缓存
reinstall #重装
remove #卸载
repolist #显示或解析repo源
search #包搜索,包括包名和描述
3.3.1显示仓库列表
yum repolist [options]
#常用选项
-v|--verbose #显示详细信息
--repo repoid|--repoid repoid #指定repo源
--all #显示所有源
--enabled #所有enabled状态的源,默认项
--disabled #所有disabled 的源
3.3.2显示程序包
yum list [options] [PACKAGE [PACKAGE ...]
#常用选项
--all #显示所有包,包括己安装的和repo源中的可用包
--available #所有可用包
--installed #所有己安装的包
--extras #所有额外包
--updates #所有可更新的包
#上述选项可以替换成对应的 all,installed 这种子命令,但要注意位置
--showduplicates #相同的包,显示所有版本
3.3.3安装程序包
yum install [options] PACKAGE [...]
yum reinstall [options] PACKAGE [...]
#常用选项
--installroot path #指定安装目录
--downloadonly #只下载,不安装
--downloaddir path|--destdir path #指定下载目录,如果下载目录不存在,则自动创建
3.3.4卸载程序包
yum remove [options] PACKAGE [...]
yum erase [options] PACKAGE [...]
3.3.5升级和降级
yum update [options] PACKAGE [...] #升级
yum downgrade [options] PACKAGE [...] #降级
yum check-update #检查可用升级
3.3.6查询
yum info [options] PACKAGE [...] #查看程序包的 information 信息
yum provides [options] PROVIDE #查看文件是由哪个包提供
yum search [options] KEYWORD #根据关健字搜索,范围包括包名和描述信息
yum deplist [options] PACKAGE [...] #查询包的依赖
3.3.7仓库缓存
#缓存目录为 /var/cache/dnf/ ( /var/cache/yum/ )
yum clean [options] {metadata,packages,dbcache,expire-cache,all} #清空缓存
yum makecache #构建缓存

被折叠的 条评论
为什么被折叠?



