包管理器:打包、包管理(安装、升级、卸载、查询及校验)
deb:debian
rpm:redhat package manager
RPM is Package Manager
程序包的组成部分:
二进制程序:/bin,/sbin,/usr/bin,/usr/sbin
库文件:/lib64,/usr/lib64
配置文件:/etc
帮助文件:manual,info等
包管理器的作用:
打包:一个单一的归档文件中;
安装:把打包文件展开在当前中;
卸载:把文件包整合并删除;
升级:替换老程序;
查询:
校验:包的来源合法性、包的完整性;
rpm包:主要功能就是打包--rpmbuild:基于specs文件进行打包
;
分包机制:
testapp-VERSION.tar.gz
主包:testapp-VERSION
支包:testapp-devel-VERSION \\支包为主包下的其他不常用的安装包
VERSION通常有三种版本:major.minor.release
rpm包的命名机制:
name-VERSION-RELEASE.ARCH.rpm
release:rpm版本号
包和包之间:有可能存在依赖关系;
例如安装了X ,必须再安装Y 才可正常使用X的功能
rpm数据库:在/var/lib/rpm目录下
如何获取rpm包:
1.发行版提供的程序包;
2.Fedora-EPEL 程序项目;
3.项目官方站点;
4.搜索引擎
rpmfind.net
rpm.phone.net
pkgs.org
查看centos版本:cat /etc/centos-release
Centos识别光盘用的设备文件:/dev/cdrom
ls | wc -l 查看总文件数
基于rpm命令实现程序包管理:
安装:
rpm {-i|--install} [install-options] PACK-AGE_FILE ..
-i:直接安装
-v:显示详细过程,-vv,-vvv
-h:hash标记
例:利用rpm安装包并详细显示安装过程,并卸载:
首先我们需要挂载程序包:
1.创建个挂载目录,/media/cdrom,挂载成功:
2.查看可安装的程序包,首先我们要进入到挂载目录,/media/cdrom,查看其目录下有个包目录Packages:
可利用wc �Cl 查看文件总量:
3.随便找个安装包选择安装,安装成功:
4.卸载安装包:
每个rpm包都提供一个或多个capabilities(能力)
被依赖的程序包如果不想管的话:
--nodeps 忽略依赖关系安装;
第一次安装包显示,具有依赖关系,那么我们使用--nodeps就可以忽略依赖直接安装;
--replacepkgs 重装某个程序包;
安装一个已经安装过得程序包:
--oldpackage 降级:升级后不熟悉或者不习惯,可降级回之前的
版本;
--force 强制升级;
rpm {-U|--upgrade} [install-options] PACK-
AGE_FILE ...
rpm {-F|--freshen} [install-options] PACK-
AGE_FILE ...
-Uvh:如果有旧版本程序包,则升级之,如果没有则安装之。
-Fvh:如果有旧版本程序包,则升级之,如果没有则不安装。
卸载:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
卸载我们常用的就只是-e,所以后面跟的其他选项一般不会太用到。
查询:
rpm {-q|--query} [select-options]-挑选选项 [query-options]-查询选项
常用选项:
-qa 查询所有安装
-qf 查询此处指定文件由哪个程序包安装生成。查询为目录:/etc/fstab
-qc 查询指定程序包安装生成的配置文件。
-qd 查询指定的程序包安装生成的帮助文档。
-qi 查询指定的程序包的相关信息。
-ql 查询程序包安装生成的所有文件列表。
-qR 查询程序包依赖于哪些提供的程序包
-q --scripts 查询程序包相关脚本:
preinstall:安装前脚本
postinstall:安装后脚本
preuninstall:卸载前脚本
postunistall:卸载后脚本
-p:查询针对的是未安装的程序包文件,通常跟-q一起使用;
例:使用-pqc查询安装包生成的配置文件:
校验:
rpm {-V|--verify} [select-options] [verify-
options]
S file Size differs
M Mode differs (includes permissions and file
type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
包校验:
来源合法性验证:非对称加密
包完整性验证:单向加密
导入秘钥的命令:rpm --import 秘钥路径
校验:rpm -K 指明安装包
秘钥位置:/etc/pki/rpm-gpgs
导入秘钥:
校验:
YUM:YellowDog Updater Modified
yum:rpm包前端管理工具;自动解决程序包的依赖关系;
yum依赖yum仓库:yum repositories
文件服务器:
ftp://hostname/path/to/repo \\hostname为ftp主机名
http://hostname/path/to/repo
file:///path/to/repo
yum程序的配置文件:
/etc/yum.conf 定义全局配置:对所有仓库都适用的配置
/etc/yum.repos.d/*.rpo 一个文件通常用于一个或一组功能相近或相关的仓库
定义一个仓库指向:
[REPO_ID]
name=
baseurl=可以有多个路径,但是内容必须一样,建议不指向多个。
mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE
enabled={1|0} 1启用 0禁用 默认启用
gpgcheck={1|0} 1检验 0不检验
gpgkey=指明使用哪个秘钥来检验
cost=指明yum仓库的开销
定义仓库指向时可用的变量:
$releasever:引用当前系统的主版本号
$basearch:当前系统的基本架构
i386,i486,i586,i686:i386,X86_64
例:http://mirrors.aliyun.org/Centos/$releasever/os/$basearch \\$releasever指Centos系统版本, $basearch指系统的架构,如32位或者64位;
yum命令的使用:
yum [options] [command] [package ...]
安装:yum install
卸载:yum remove
查询:yum info
search KEYWORD
list all|installed|availiable
probides /PATH
升级:yum update; checkupdate 查询可升级
重新安装:reinstall
降级:downgrade
清理缓存:clean
生成缓存:makecache
包组:grouplist 列出所有包组
groupinfo ""
groupinstall "GRP_NAME"安装组文件
groupremove "GRP_NAME"卸载组文件
仓库:repolist all|enabled|disabled 列出仓库
1.使用yum进行安装和卸载程序包:
2.使用yum查询安装包信息:
3.使用yum查看包组:
4.使用yum查看enabled仓库:
如何使用发行版的光盘当做本地仓库:
挂载光盘至某目录
定义仓库,使用file:///指明其访问路径
创建本地仓库:
yum install createrepo
createrepo /PATH/TO/RPMFILES
DNF:下一代前端管理器;