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为关闭保存

  

posted @ 2020-04-22 22:32  全心全意_运维  阅读(386)  评论(0编辑  收藏  举报