Linux程序包管理
1、rpm管理
```bash
用法:rpm [选项…]
-a 查询所有套件
-b <完成阶段><套件档>+或-t <完成阶段><套件档>+: 设置包装套件的完成
-c 只列出组态配置文件,本参数需配合"-l"参数使用
-d 只列出文本文件,本参数需要配合"-l"参数使用
-e <套件档或--erase<套件档>:删除指定的套件;
-f <文件>+:查询拥有指定文件的套件;
-h 或--hash:套件安装时列出标记;
-i:显示套件的相关信息;
-i<套件档>或--install<套件档>:安装指定的套件档;
-l:显示套件的文件列表;
-p<套件档>+:查询指定的RPM套件档;
-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
-R:显示套件的关联性信息;
-s:显示文件状态,本参数需配合"-l"参数使用;
-U<套件档>或--upgrade<套件档>:升级指定的套件档;
-v:显示指令执行过程;
-vv:详细显示指令执行过程,便于排错。
如何安装rpm软件包
rpm -ivh your-package # 直接安装
rpmrpm --force -ivh your-package.rpm # 忽略报错,强制安装
如何卸载rpm软件包
rpm -ql tree # 查询
rpm -e tree # 卸载
rpm -ql tree # 查询
-ivh 获得一个详细的安装进程
--nodeps 忽略依赖关系
--force 强制安装
-U 包名:升级安装
-F 更新不管是什么直接覆盖
--replacepkgs这样 RPM 将忽略该错误信息 -vih --replacepkgs
-q name :查询
-qa查询所有已安装的RPM
-qi name 查询这个软件详细信息
-ql 显示列表
-qf path :查询一个文件属于哪个包
-qp 包名 :查文件是什么
-qpl 包名 :针对一个没装过的包
```
- rpm命令实现程序包管理
- 安装:
- -ivh
- --nodeps 就是安装时不检查依赖关系
- --replacepkgs 这样 RPM 将忽略该错误信息 -vih --replacepkgs
- --force 就是强制安装
- 卸载:
- -e
- --nodeps 卸载不考虑依赖关系
- 升级:
- -Uvh
- -Fvh
- 降级:
- --oldpackage
- 查询:
- -q
- -qa
- -qf
- -qi
- -qc
- -q --scripts
- -q --changlog
- -q --provides
- -q --requires
- 导入GPG密钥
- --import
- 检查包完整性
- -K
- 校验时不检查包完整性
- --nodigest
- 校验时不检查来源合法性
- --nosignature
- rpm数据库重建
- --initdb
- --rebuilddb
### 1.2、yum/dnf工具使用
yum其实就是rpm包的前端管理工具
#### 1.2.1、yum命令简单介绍
- 可以本机配置一个yum服务器:一般使用ftp/http实现yum文件共享
- yum:yellowdog update modifier
- yum repository : yum仓库,存储了众多的rpm包,以及包的相关的元数据文件(放置于特性的目录下,repodate目录下,)
- yum客户端
- 配置文件
- /etc/yum.conf 主配置文件仅用于指向各yum仓库指向的公共配置,或者不属于仓库的配置即yum程序自己的配置
- /etc/yum.repos.d/*.repo repo结尾的文件之一个仓库的指向
```bash
~]# cat /etc/yum.conf int风格配置文件
[main] 主配置段
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0 本地使用完的缓存文件是否要保存
debuglevel=2 debug给你
logfile=/var/log/yum.log yum日志
exactarch=1 安装程序包时要不要做严格的平台匹配
obsoletes=1
gpgcheck=1 安装包时是否检查包的完整性和来源合法性
plugins=1 yum是否支持插件机制
installonly_limit=5 一次同时安装几个程序包
bugtracker_url=http://bugs.centos.org/set_project.php? project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum 追踪bug时的URL
distroverpkg=centos-release 当前发行版版本号去哪里获取
```
#### 1.2.2、yum仓库指向的定义
```bash
[repositoryID]
name=
baseurl=url...
enabled={1|0}
gpgcheck={1|0} 检查检验完整性及来源合法性
gpgkey=url 值明密钥文件
repo_gpgcheck={1|0} 检查仓库的元数据文件的签名信息
enablegroups={1|0} 是否支持组执行程序包管理,默认时1支持的
failovermethod={roundrobin轮询,但是并非轮询也是随机 | priorlty 优先级,自上而下 } 故障转移方法,适用于多个baseurl,如果坏了继续使用哪个仓库工作,默认使用随机roundrobin
cost= 默认为1000,开销,可以限制库的开销
```
#### 1.2.3、yum命令的用法:
```bash
yum [options] [command] [package]...
#显示仓库列表
repolist [all|enabled|disabled] 所有、启用的、未启用的、默认显示启用的
#显示程序包
list all 所有
list php* 显示php开头的所有的包
list available 显示可用的安装包,仓库中有,但是未安装的
list updates 显示可用的升级包
list installed 显示已经安装的包
list extras 显示仓库中额外的包
list obsoletes 显示废弃的包
#安装程序包,及解决依赖安装
install 包 ....
#升级指程序包
update 包
#降级
downgrade 包
#检查哪些升级包
check-update
#卸载指定程序包,及解决依赖卸载
remove 包
#查看包的简要信息
info 包
#查看某个特性是由哪个程序包提供的,也可以是某个配置文件
provides 包/文件
#清楚本地的缓存
clean [packages|matadata|expire-cache|rpmdb|plugins|all]
清理缓存中的包、清理元数据、清理过期缓存、清理插件、清理所有
#手动生成缓存
makecache
#根据关键字搜索相关的信息,模糊匹配机制,包名及summary信息
search
#重新安装,基于覆盖的放置安装
reinstall 包
#查看此包的依赖
deplist 包
#查看yum事务历史
history
#本地安装,并从光盘解决依赖
localinstall 包
#安装升级本地程序包
localupdate 包
#包组相关的命令
groupinstall 包组
grouplist
groupinfo
groupsearch
groupremove
groupupdate
```
#### 1.2.4、使用关盘当作本地yum仓库
```bash
1、挂载关盘至目录,例如:/media/cdrom
mount -r -t iso9660 /dev/cdrom /media/cdrom
2、创建配置文件
[...]
name=...
baseurl=
gpgcheck=
enabled=
```
#### 1.2.5、yum的命令行选项
```bash
#命令行的优先级要高于配置文件中的配置
--nogpgcheck 禁止进行gpg check
-y 自动回答为yes,直接安装
-q 静默模式
--disablerepo=repoidglob 临时禁用此处指定的repo
--enablerepo=repoidglob 临时启用此处指定的repo
--nopludins 禁用所有插件
```
#### 1.2.6、repo配置文件中的可用变量
```bash
https://mirrors.aliyun.com/epel/6/x86_64/
https://mirrors.aliyun.com/epel/6/i386/
https://mirrors.aliyun.com/epel/7/x86_64/
$releasever:当前OS的发行版的主版本号
$arch 平台
$basearch 基础平台
$YUM0-$YUM9
https://mirrors.aliyun.com/epel/$releasever/$basearch/
```
#### 1.2.7、创建yum仓库
```bash
将rpm安装包下载到指定目录中
cd /指定目录
createrepo
```