软件包中的文件类型

二进制文件
库文件
配置文件
帮助文件

程序包管理器

编译好的应用程序的各组文件打包成一个或几个程序包文件,
利用包管理器快捷的实现程序包的安装、卸载、查询、升级和校验等管理操作
主流的包管理器
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/rpm
rpm {--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] ...

詹姆斯大胡子
1 声望0 粉丝

知识到技能,需要千锤百炼