软件包中的文件类型
二进制文件
库文件
配置文件
帮助文件
程序包管理器
将编译好的应用程序的各组文件打包成一个或几个程序包文件,
利用包管理器快捷的实现程序包的安装、卸载、查询、升级和校验等管理操作
主流的包管理器
redhat: redhat package manager
debian: deb文件,dpkg包管理器
包命名
源代码打包文件
name-VERSION.tar.gz|bz2|xz
VERSION: major.minor.release
rpm包命名方式
name-VERION-release.arch.rpm
VERSION: major.minor.release
release: release.OS
常见的arch
x86
x86_64
powerpc
跟平台无关:noarch
分类和拆包
将一个大的软件分类,放到不同的子包中
包的分类
Applition-VERSION-ARCH.rmp 主包
Applition-devel-VERSION-ARCH.rmp 开发子包
Applition-utils-VERSION-ARCH.rmp 工具子包
Applition-libs-VERSION-ARCH.rmp 链接库子包
包的依赖
解决依赖包管理工具
yum: rpm包管理器前端工具
dnf:CentOS8代替yum
apt:deb包管理器前端工具
获取软件包的途径
软件包需要事先将源码进行编译后打包形成,获取包的途径如下
1.系统发版的光盘和官方网站
CentOS 镜像
https://www.centos.org/download/
http://mirrors.aliyun.com
Ubuntu镜像
http://cdimage.ubuntu.com/releases/
http://releases.ubuntu.com
2.第三方组织提供
Fedora-EPEL:Extra Packages for Enterprise Linux
https://fedoraproject.org/wiki/EPEL
https://mirrors.aliyun.com/epel/?spm=a2c6h.13651104.0.0.3bc47dfaZpesAr
3.软件项目官方站点
http://yum.mariadb.org/10.4/centos8-amd64/rpms/
4.搜索引擎
http://pkgs.org
http://rpmfind.net
5.自己制作
包管理器rpm
CentOS上使用rpm命令管理程序包
查询
rpm {-q|--query} [select-options] [query-option] PACKAGE
[select-options]
-a 所有包
-f 查看指定的文件由哪个程序包安装生成
[query-options]
--changelog:查询rpm包的changelog
-c:查询程序的配置文件
-i:information
-l:查看指定的程序包安装后生成的文件
安装
rpm {-i | --install} [install-options] PACKAGE_FILE ...
-v : verbose 详情
-h : 以#显示进度
安装的[install-options]
--test :测试安装,dry run
--nodeps :忽略依赖关系
软件安装时,会将包里的每个文件的元数据,如大小、权限、所有者、时间等记录到rpm相关的数据库中
升级、降级
升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-U #有旧的则升级,无旧的则安装
-F #有旧的则升级,无旧的则不执行
--oldpackage: 降级
--force 强制安装
卸载
rpm {-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_FILE ...
检查元数据
rpm {-V|--verify} [select-options] [verify-options]
rpm数据库:/var/lib/rpmrpm {--initdb|--rebuilddb}
dnf/yum
CentOS使用dnf/yum解决rpm包依赖关系
yum:yellodog update modifier
可在多个库之间定位软件包,
yum/dnf工作原理
基于C/S模式:
yum服务器:存放rpm包(repository)及相关包的元数据库(repodata)
yum客户端:访问yum 服务器进行安装和查询等
yum客户端配置:
配置文件
/etc/yum.conf # 公共配置
/etc/yum.repo.d/*.repo #为每个仓库提供配置
可用变量:
$releasever -- 发行主版本号
$arch -- CPU架构,如aarch64/i586/x86_64
$basearch -- 系统基础平台,i386/x86_64
$contentdir -- 表示目录,centos-8
$YUM0~YUM9:自定义变量
CentOS7 /etc/yum.conf配置简介
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1 #安装包前要做包的合法和完整性校验
plugins=1
installonly_limit=5 #同时可以安装3个包
repo仓库配置文件指向定义
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/ #yum服务器repo地址
enabled={1|0} #是否可用
gpgcheck={1|0} #是否检查gpg key
gpgkey=URL # gpg key url
enablegroups={1|0}
failovermethod={roundrobin|priority}
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000
baseurl指向的路径
#aliyun
https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
https://mirrors.aliyun.com/epel/$releasever/x86_64
#huawei
https://mirrors.huaweicloud.com/
yum-config-manager命令
# 新增
yum-config-manager --add-repo URL/File
# 禁用仓库
yum-config-manager --disable "仓库名"
# 启用
yum-config-manager --enable "仓库名"
yum命令yum [options] [command] [package ...]
options
-y # auto yes
-q # quiet
--nogpgcheck
--enablerepo=repo #支持通配符
--disablerepo=repoglob
显示仓库列表yum repolist [all|enabled|disabled]
显示程序包
yum list {avaliable|installed|updates} [glob_exp1] ...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。