美文网首页Linux小推车
Linux(十二):rpm与yum

Linux(十二):rpm与yum

作者: 末池桑 | 来源:发表于2019-08-22 10:00 被阅读0次

    一、rpm命令

    RPM 是 RedHat Package Manager 的缩写,是由RedHat公司开发的软件包安装和管理程序,相当于Windows里的exe文件,使用相应的命令即可在Linux中安装所要安装的软件包。除了rpm外,Linux阵营中也还有deb软件包管理工具,本人使用的Deepin桌面发行版用的就是deb软件包管理程序安装软件的。

    • 1. rpm 文件名详解,例如:mysql-libs-5.1.73-8.el6_8.x86_64.rpm
    mysql-libs :软件名称
    5.1.73 :软件版本号,数值依次表示主版本、  次版本、修正版本
    8.el6_8.x86_64 :8表示软件发布次数,el6表示适合的系统平台,x86_64表示适合的硬件平台,noarch 表示32、64位皆可用。
    
    • 2. rpm 安装命令如下:
      RPM软件的安装、卸载、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装。
    rpm -ivh ×××.rpm(全路径或相对路径)
    -i:install ,安装
    -v:verbose ,提示 
    -h:hash ,进度条
    
    • 3. rpm查询命令如下:
    rpm -qa :查询安装的所有rpm软件
    rpm -qa |grep python:通过管道命令查询是否安装 python 
    rpm -q jdk :查询是否安装 jdk 
    rpm -qi python:查询 python 软件包详细信息
    rpm -ql python:查询 python 软件包安装到了哪个目录
    rpm -qf [fileName]:查询名为 fileName 的软件所属的软件包 
    
    • 4. rpm卸载命令如下:
    rpm -e python :删除 python 
    

    注意:如果其他软件依赖需要删除的软件 包,卸载时会发生依赖报错,错误信息如下图:

    删除错误

    使用 --nodeps 参数即可强制删除(不推荐,可能会引发其他软件没法使用),例如:

    rpm -e --nodeps python 
    

    二、 yum 命令

    Yum是 Yellow dog updater的缩写, 是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,使用方便快捷。

    • 1. 查找
    yum info python #显示软件包信息 python
    yum list python #显示指定软件包安装情况 python
    yum list #显示所有已经安装和可以安装的软件包
    yum seach python #查找含有 python 关键字的所有软件包
    yum groupinfo  name #查询一组软件包的信息,这组软件包里包含多个软软件。
    
    • 2. 安装
    yum install #全部安装
    yum install python #安装指定 python 软件包
    yum groupinsall name #安装一组软件包,这组软件包里包含多个软软件。
    
    • 3. 更新
    yum update #全部更新
    yum update python #更新指定的 python 软件包
    yum check-update #检查可更新的软件
    yum upgrade python #升级指定 python 软件包
    yum groupupdate name #更新一组软件包,这组软件包里包含多个软软件。
    
    • 4. 删除
    yum remove python #删除 python 软件包
    yum groupremove name #删除一组软件包,这组软件包里包含多个软软件。
    yum deplist python #查看软件 python 依赖情况
    
    • 5. 清除缓存
    yum clean packages #清除缓存目录下的软件包
    yum clean headers #清除缓存目录下的 headers
    yum clean oldheaders #清除缓存目录下旧的 headers
    yum clean, yum clean all (= yum clean packages; yum clean oldheaders) #清除缓存目录下的软件包及旧的headers
    

    三、 yum 源

    yum 在 Linux 也是一个软件,我们也可以使用 npm 命令来安装和卸载这款软件,但是RedHat 系列发行版的 Linux 都是默认内置了这个功能的,这里只管使用就好。使用如下命令可以查看 yum 软件包管理器相关的所有文件:

    npm -ql yum  #查看所有 yum 软件的目录和文件
    

    yum 命令是从服务器上拉区 rpm 包来安装和解决依赖问题的,因为服务器默认往往都是指向国外服务器的,对于国内用户来说下载安装速度往往太慢,所以更改 yum 服务器软件源就显得很重要了。从上图中可以看到 yum 软件中包含有 /etc/yum.conf 文件和 /etc/yum.repos.d 目录,这些都是与 yum 相关的配置文件和目录。

    • 1. /etc/yum.conf
      用来储存 yum 配置信息的全局配置文件(默认一般都不必改动),具体内容解释如下:
    [main]
    #cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum/$basearch/$releasever。
    cachedir=/var/cache/yum/$basearch/$releasever 
    #keepcache:是否保留缓存内容,0:表示安装后删除软件包,1表示安装后保留软件包
    keepcache=1
    #debuglevel:除错级别,0──10,默认是2 貌似只记录安装和删除记录
    debuglevel=2
    #logfile:存放系统更新软件的日志的目录。用户可以到/var/log/yum.log文件去查询自己在过去的日子里都做了哪些更新。
    logfile=/var/log/yum.log
    #pkgpolicy: 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。
    pkgpolicy=newest
    #指定一个软件包,yum会根据这个包判断你的发行版本,默认是RedHat-release,也可以是安装的任何针对自己发行版的rpm包。
    distroverpkg=CentOS-release
    #tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。
    tolerant=1
    #exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
    exactarch=1
    #retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试。
    retries=20
    #此选项在进行发行版跨版本升级的时候会用到。
    obsoletes=1
    #gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认是检查的。
    gpgcheck=1
    #默认都会被include 进来 也就是说 /etc/yum.repos.d/xx.repo 无论配置文件有多少个 每个里面有多少个[name] 最后其实都被整合到 一个里面看就是了 重复的[name]后面的覆盖前面的
    reposdir=/etc/yy.rm #默认是 /etc/yum.repos.d/ 低下的 xx.repo后缀文件
    #exclude 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
    exclude=xxx
    #该选项用户指定 .repo 文件的绝对路径。.repo 文件包含软件仓库的信息 (作用与 /etc/yum.conf 文件中的 [repository] 片段相同)。
    reposdir=[包含 .repo 文件的目录的绝对路径]
    
    • 2. /etc/yum.repos.d
      定义了每个源/服务器的具体配置,一个文件往往配置了一个或者多个软件仓库的细节内容,可以修改这些文件对 yum 源进行相关配置,配置信息如下:
    #serverid是用于区别各个不同的repository,必须有一个独一无二的名称。若重复了则后面覆盖前面的
    [serverid]
    #name,是对repository的描述,支持像$releasever $basearch这样的变量; name=Fedora Core $releasever - $basearch - Released Updates
    name=Some name for this server
    #baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:
    #baseurl=url://server1/path/to/repository/
    #url://server2/path/to/repository/
    #url://server3/path/to/repository/
    #其中url支持的协议有 http:// ftp:// file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但#baseurl只能有一个,也就是说不能像如下格式:
    #baseurl=url://server1/path/to/repository/
    #baseurl=url://server2/path/to/repository/
    #baseurl=url://server3/path/to/repository/
    #其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。
    baseurl=url://path/to/repository/
    #指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了,我们可以试试,将$releasever和$basearch替换
    #成自己对应的版本和架构,例如10和i386,在浏览器中打开,我们就能看到一长串镜可用的镜像服务器地址列表。
    #解释下几个变量
    #$releasever  发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
    #$arch   cpu体系,如i686,athlon等
    #$basearch   cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。
    #url之后可以加上多个选项,如gpgcheck、exclude、failovermethod等,比如:
    gpgcheck=1
    exclude=gaim
    #其中gpgcheck,exclude的含义和[main]部分相同,但只对此服务器起作用
    #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
    #failovermethode 有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失 败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。
    failovermethod=priority
    #当某个软件仓库被配置成 enabled=0 时,yum 在安装或升级软件包时不会将该仓库做为软件包提供源。使用这个选项,可以启用或禁用软件仓库。
    #通过 yum 的 --enablerepo=[repo_name] 和 --disablerepo=[repo_name] 选项,或者通过 PackageKit 的"添加/删除软件"工具,也能够方便地启用和禁用指定的软件仓库
    enabled=[1 or 0]
    
    • 3. 修改源为阿里
      创建一个 backup 目录用于备份原 CentOS-Base.repo ,避免出错后可以恢复原状
    cd /etc/yum.repos.d
    mkdir backup
    mv CentOS-Base.repo backup/
    

    使用 wget 命令下载阿里云的 repo 文件

    # 阿里云
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    

    重命名阿里云源文件名

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    

    清除原有云缓存

    yum clean all
    

    重建缓存

    yum makecache
    

    查看配置的 yum 源是否正常

    yum repolist
    

    相关文章

      网友评论

        本文标题:Linux(十二):rpm与yum

        本文链接:https://www.haomeiwen.com/subject/ssartctx.html