Linux小推车

Linux(十二):rpm与yum

2019-08-22  本文已影响0人  末池桑

一、rpm命令

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

mysql-libs :软件名称
5.1.73 :软件版本号,数值依次表示主版本、  次版本、修正版本
8.el6_8.x86_64 :8表示软件发布次数,el6表示适合的系统平台,x86_64表示适合的硬件平台,noarch 表示32、64位皆可用。
rpm -ivh ×××.rpm(全路径或相对路径)
-i:install ,安装
-v:verbose ,提示 
-h:hash ,进度条
rpm -qa :查询安装的所有rpm软件
rpm -qa |grep python:通过管道命令查询是否安装 python 
rpm -q jdk :查询是否安装 jdk 
rpm -qi python:查询 python 软件包详细信息
rpm -ql python:查询 python 软件包安装到了哪个目录
rpm -qf [fileName]:查询名为 fileName 的软件所属的软件包 
rpm -e python :删除 python 

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

删除错误

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

rpm -e --nodeps python 

二、 yum 命令

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

yum info python #显示软件包信息 python
yum list python #显示指定软件包安装情况 python
yum list #显示所有已经安装和可以安装的软件包
yum seach python #查找含有 python 关键字的所有软件包
yum groupinfo  name #查询一组软件包的信息,这组软件包里包含多个软软件。
yum install #全部安装
yum install python #安装指定 python 软件包
yum groupinsall name #安装一组软件包,这组软件包里包含多个软软件。
yum update #全部更新
yum update python #更新指定的 python 软件包
yum check-update #检查可更新的软件
yum upgrade python #升级指定 python 软件包
yum groupupdate name #更新一组软件包,这组软件包里包含多个软软件。
yum remove python #删除 python 软件包
yum groupremove name #删除一组软件包,这组软件包里包含多个软软件。
yum deplist python #查看软件 python 依赖情况
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 相关的配置文件和目录。

[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 文件的目录的绝对路径]
#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]
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
上一篇下一篇

猜你喜欢

热点阅读