Linux软件包管理
Linux软件包管理
制作人:全心全意
一、RPM软件包的管理
RPM概述:RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、SUSE以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。
rpm包的获取方式:
系统镜像光盘
网站:rpmfind.net
软件包的官方网址(例如mysql):http://www.mysql.com
第三方网站:https://pkgs.org/
rpm包格式的说明
/media/Packages/zsh-5.0.2-28.el7.x86_64.rpm #完全兼容bash命令的更好的一版解释器
zsh | 5 | 0 | 2 | 28 | el7 | x86_64 |
软件名 | 主版本号 | 次版本号 | 修订次数 | 版本发布次数 | 操作系统版本 | 系统架构 |
说明:修订指的是第几次修改bug。发布指定是第几次发布。发布时,可能只是对软件安装的默认参数做了修改,而没有其它改动。
rpm工具的使用
命令格式:rpm [参数] 软件包
安装rpm软件包
-i:安装软件包
-v:显示附加信息,提供详细输出
-h --hash:安装时输出####的安装进度,需要与-v结合使用
说明:rpm使用时,软件包名和软件包全名的使用
全名:在安装和更新升级的时候使用
包名:对已经安装过的软件包进行操作时,比如查找已经安装的某个包,卸载包等,使用包名(默认在/var/lib/rpm下进行搜索,当一个rpm包安装到系统之后,安装信息通常会保存在本地的/var/lib/rpm/目录下)
#从本地安装rpm软件包 rpm -ivh /media/Packages/zsh-5.0.2-28.el7.x86_64.rpm #从互联网下载直接安装rpm软件包 rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm #安装epel扩展yum源,epel源是对linux系统中自带的base(光盘)源的扩展。
rpm查询功能
用法:rpm -q[选项] #常与下面的参数组合使用
-a:查询所有已安装的软件包
-f:查询系统文件/命令所属软件包,反向查询
-i:显示已安装的rpm软件包信息,后面直接跟包名。和-p结合使用可显示未安装包的信息
-l:查询软件包中文件的安装位置。和-p结合使用可显示未安装软件包的生成文件
-p:查询未安装软件包的相关信息,后面跟软件的命名(预安装)
-R:查询软件包的依赖性
#查询指定软件包是否安装 rpm -q zsh #查询所有已安装的包 rpm -qa #查询文件或命令属于哪个安装包 rpm -qf /etc/passwd #查询软件包的详细信息 rpm -qi zsh #已安装 rpm -qpi /media/Packages/zsh-5.0.2-25.el7.x86_64.rpm #软件包(未安装也可) #查看rpm包安装后生成的文件 rpm -ql zsh rpm -qpl /media/Packages/zsh-5.0.2-25.el7.x86_64.rpm #软件包(未安装也可)
用法:rpm -V[选项] #查询软件包内容是否被修改
-f:单独指定某个文件进行验证
[root@localhost ~]# rpm -V findutils #没有输出即为没有修改 [root@localhost ~]# echo aaa >> /usr/bin/find [root@localhost ~]# rpm -V findutils #指定软件包 S.5....T. /usr/bin/find [root@localhost ~]# rpm -Vf /usr/bin/find #指定文件 S.5....T. /usr/bin/find #以下为注释内容======================== 注:如果无输出或输出全部为点表示测试通过 测试失败字符含义: 5 —— MD5校验和,文件内容是否改变 S —— 文件长度、大小是否改变 L —— 符号链接,文件路径是否改变 T —— 文件修改日期是否改变 D —— 设备 U —— 文件的属主是否改变 G —— 文件的属组是否改变 M —— 模式(包含许可和文件类型) ? —— 不可读文件 再后面的c文件名,表示的是文件类型 c 配置文件 d 普通文件 g 不该出现的文件,意思是这个文件不该被这个包所包含 l 授权文件 r 描述文件
rpm软件包的卸载
用法:rpm -e 软件包
--nodeps:忽略依赖,卸载时不建议使用rpm去卸载有依赖关系的包,应用用yum
rpm -e zsh
rpm软件包的升级
用法:rpm -Uvh 软件包
rpm -Uvh /media/Packages/zsh-5.0.2-25.el7.x86_64.rpm #一些软件包在升级时会有一些依赖关系要解决,所以一般我们使用yum update来进行升级
YUM的使用
yum(全称为 Yellow dog Updater,Modified)是一个前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载rpm包,并且安装,可以自动处理依赖关系,并且一次性安装所有依赖的软件包。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,且命令简洁。基于c/s架构,服务端可以是ftp/http/file。
yum源的配置(位置:/etc/yum.repo.d/下,文件必须以.repo为后缀)
本地yum源
vi /etc/yum.repos.d/centos.repo [centos7] #yum源名称,在本服务器中唯一,用来区分不同的yum源 name=centos7 #对yum源的描述信息 baseurl=file:///media/ #yum源的路径(FTP、HTTP、本地) enable=1 #是否启用yum源(1:启用;0:禁用) gpgcheck=0 #是否启用公钥检验rpm包的正确性(1:启用;0:禁用) gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #rpm效验公钥的地址
网络yum源(以阿里云为例)
wget -O /etc/yum.repos.d/ali.repo http://mirrors.aliyun.com/repo/Centos-7.repo cat /etc/yum.repos.d/ali.repo 内容省略
注意:网络源在使用可能会失效,原因为在网络源中使用了如下变量,由于官方已经有更新版本,导致旧版本失效,可进入网址(http://mirrors.aliyun.com/centos)查看最新版本,将以下变量修改为最新的版本即可。
$releasever
cat /etc/centos-release CentOS Linux release 7.7.1908 (Core) #7.7.1908
$basearch
uname -r 3.10.0-1062.9.1.el7.x86_64 #x86_64
yum的使用
维护用法:
#清空yum缓存 yum clean all #创建yum缓存 yum makecache
查询用法:
list:列出软件包
grouplist:列出组软件包
info:列出软件包详细信息
search:查找相关的软件包
provides:查询指定命令是哪个软件包安装的
# 列出所有仓库中的rpm包 yum list #列出yum中的组软件包 yum grouplist # 列出某一仓库中的rpm包 yum repo-pkgs 仓库名 list #列出系统已经安装的rpm包 yum list installed #列出所有可更新的软件包 yum list updates #查询指定命令的来源软件包 yum provides /bin/bash
#列出所有软件包的详细信息 yum info #列出指定软件包的详细信息 yum info zsh #列出所有已安装软件包的详细信息 yum info installed #列出所有可更新软件包的详细信息 yum info updates #列出所有已安装的软件包但不存在与yum仓库的详细信息 yum info extras
#查找与指定关键词相关的软件包 yum search zsh
安装卸载用法:(-y:不使用交互模式,默认为yes)
install:安装软件包
groupinstall:安装组软件包
update:升级软件包,改变软件设置和系统设置,系统版本和内核都升级
upgrade:升级软件包,不改变软件设置和系统设置,系统版本升级,内核不升级
remove:卸载软件包
groupremove:卸载组软件包
#安装软件包 yum install -y zsh #安装组软件包 yum groupinstall -y 开发工具 #卸载软件包 yum remove -y zsh
createrepo的使用
createrepo 命令用于创建yum源(软件仓库),即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据。
用法:createrepo [参数] [路径]
-v:输出详细信息
--version:查看createrepo版本号
--update:已创建元数据后,仓库中的软件包有所变更,可使用此选项进行更新
createrepo -v /home/source #首次创建,并输出详细信息 createrepo --update /home/source #软件包有所更新,进行更新
从yum仓库中下载软件包及依赖包到本地
Downloadonly工具( yum-plugin-downloadonly)
用法:yum install --downloadonly [选项] 软件包名
--downloaddir:指定软件包下载位置(不指定默认为/var/cache/yum/ 下的软件相应的repo的源的目录的packages目录下)
#下载httpd的相关软件包到本地(基于当前系统缺少的) yum install --downloadonly --downloaddir=/home/tt httpd #软件包名可加上版本号,指定版本
注:基于当前系统此次安装软件包及依赖包,若环境不一致,在另一台机器上可能无法安装成功
Yumdownloader工具(yum-utils)
用法:yumdownloader [选项]... 软件包名
--resolve:下载软件包时下载依赖包,同Downloadonly工具,也是基于当前环境
--destdir:指定下载软件包的位置,不指定默认是当前目录
yumdownloader --resolve --destdir=/home/tt/ httpd
reposync工具(yum-utils)(将整个仓库的软件包拷贝到本地)
用法:reposync [选项]...
-r:指定repo源的名称
-p:指定下载到本地的位置
reposync -r centos1 -p /home/tt/
repotrack工具(yum-utils)(基于系统的最小化安装下载软件包及相关依赖)
用法:repotrack 软件包
-p:指定下载到本地的位置
repotrack httpd
使用yum安装软件时,将软件包保存到本地
vi /etc/yum.conf cachedir=/var/cache/yum/$basearch/$releasever #保存位置 keepcache=1 #1为保存,0为关闭保存