yum安装rpm包(linux)包括内容:yum源配置挂载(本地、网络)、yum命令详解、使用问题报错总结
目录【第一部分】yum源配置挂载yum源配置的三种方法(一)yum源概述(二)yum源配置方法一(阿里云源)1) 安装wget2)备份/etc/yum.repos.d/CentOS-Base.repo文件3)下载阿里云的Centos-6.repo文件4) 重新加载yum(三)yum源配置方法二(本地挂载目录)1) 下载iso文件2) 创建挂载目录...
目录
2) 备份/etc/yum.repos.d/CentOS-Base.repo文件
解决错误:File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
【第一部分】yum源配置挂载
yum源配置的三种方法
(一)yum源概述
yum需要一个yum库,也就是yum源。默认情况下,CentOS就有一个yum源。在/etc/yum.repos.d/目录下有一些默认的配置文件(可以将这些文件移到/opt下,或者直接在yum.repos.d/下重命名)。
首先要找一个yum库(源),然后确保本地有一个客户端(yum这个命令就是客户端),由yum程序去连接服务器。连接的方式是由配置文件决定的。通过编辑/etc/yum.repos.d/CentOS-Base.repo文件,可以修改设置。
打开CentOS-Base.repo文件,可以看到url路径是CentOS的官网自身的yum源,http://mirrorlist.centos.org/?release=releasever&arch=releasever&arch=basearch&repo=os。可以将这个mirrorlist注释掉,然后将baseurl设置成国内的阿里云源http://mirrors.aliyun.com/repo/Centos-6.repo,也可以在用于大量的rpm包的前提下设置成自己的本地文件系统(挂载目录),需要移除CentOS-Base.repo文件,并编辑CentOS-Media.repo文件。
name=Description#一个描述,随意。 baseurl=#设置资源库的地址,可以写阿里云也可以是自己的yum ftp:// http:// file:/// enabled={1|0}#enabled=1开启本地更新模式 gpgcheck={1|0}# gpgcheck=1表示检查;可以不检查gpgcheck=0 gpgkey=#检查的key;如果上面不检查这一行可以不写。
(二)yum源配置方法一(阿里云源)
1) 安装wget
yum install -y wget
2) 备份/etc/yum.repos.d/CentOS-Base.repo文件
cd /etc/yum.repos.d/ mv CentOS-Base.repo CentOS-Base.repo.back
3) 下载阿里云的Centos-6.repo文件
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
4) 重新加载yum
yum clean all yum makecache
(三)yum源配置方法二(本地挂载目录)
1) 下载iso文件
从CentOS的官网下载CentOS的完整版iso文件,并上传到Linux文件系统中,例如/opt/tools/。
2) 创建挂载目录
为iso文件的挂载创建目录。
mkdir /mnt/vcdrom
3) 挂载
将iso文件挂载到挂载目录。
mount -o loop -t iso9660 /opt/tools/CentOS-6.7-x86_64-bin-DVD1.iso /mnt/vcdrom
4) 移除或备份Centos-Base.repo文件
cd /etc/yum.repos.d/ mv Centos-Base.repo Centos-Base.repo.back
5) 编辑Centos-Media.repo文件
vim /etc/yum.repos.d/Centos-Media.repo
name=CentOS-$releasever - Media baseurl=file:///mnt/vcdrom/#将baseurl修改为DVD的挂载目录 gpgcheck=1 enabled=1#开启本地更新模式
6) 重新加载yum
yum clean all yum makecache
7) 编写脚本并开机自动挂载
首先,编写脚本。
vim /opt/shell/mymount.sh
#!/bin/bash # mount -o loop -t iso9660 /opt/tools/CentOS-6.7-x86_64-bin-DVD1.iso /mnt/vcdrom
其次,修改脚本执行权限。
chmod 777 /opt/shell/mymount.sh
再次,修改/etc/rc.local配置文件。
vim /etc/rc.local
在文件最后一行加上如下
/opt/shell/mymount.sh
最后,重启机器测试。
init 6
(四)yum源配置方法三(远程挂载目录)
1) 服务端配置
第一,安装nfs-utils和rpcbind。
yum -y install nfs-utils rpcbind
第二,设置开机启动服务。
chkconfig nfs on chkconfig rpcbind on
第三,启动相关服务。
service rpcbind start #需要先启动rpcbind service nfs start
第四,创建共享目录。
mkdir -p /mnt/vcdrom/
第五,编辑/etc/exports文件,添加如下内容。
vi /etc/exports
/mnt/vcdrom/ 192.168.94.5(rw,async,no_root_squash,no_subtree_check)
注:配置文件说明:/mnt/vcdrom/为共享的目录,使用绝路径。对192.168.94.5(rw,no_root_squash,no_all_squash,sync) 为客户端的地址及权限,地址可以是一个网段,一个IP地址或者是一个域名,域名支持通配符,如:*youxia.com。
权限说明:rw:read-write,可读写;ro:read-only,只读;sync:文件同时写入硬盘和内存;async:文件暂存于内存,而不是直接写入内存;no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;anongid:匿名用户的GID值。
第六,参考yum源配置方法二,将/opt/tools/下的ios文件挂载到/mnt/vcdrom,需要设置开机自动挂载。
2) 客户端配置
第一,安装nfs-utils和rpcbind。
yum install -y nfs-utils rpcbind
第二,设置开机启动服务。
chkconfig nfs on chkconfig rpcbind on
第三,启动服务。
service rpcbind start service nfs start
第四,创建挂载点。
mkdir -p /mnt/vcdrom/
第五,挂载目录。
mount -t nfs server_ip:/mnt/vcdrom /mnt/vcdrom
第六,编辑/etc/fstab,配置开机自动挂载
这里可以参考yum源配置方法二的介绍,编写脚本,使脚本开机运行。下面给出第二种方法:
vim /etc/fstab
server_ip:/mnt/vcdrom /mnt/vcdrom nfs rw,tcp,intr 0 1
第七,修改yum源设置。
参考yum源配置方法二。
【第二部分】yum源使用
导例:
安装gcc命令的方法:
yum install gcc -y
yum命令详解
yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
语法
yum(选项)(参数)
选项
-h:显示帮助信息; -y:对所有的提问都回答“yes”; -c:指定配置文件; -q:安静模式; -v:详细模式; -d:设置调试等级(0-10); -e:设置错误等级(0-10); -R:设置yum处理一个命令的最大等待时间; -C:完全从缓存中运行,而不去下载或者更新任何头文件。
参数
install:安装rpm软件包; update:更新rpm软件包; check-update:检查是否有可用的更新rpm软件包; remove:删除指定的rpm软件包; list:显示软件包的信息; search:检查软件包的信息; info:显示指定的rpm软件包的描述信息和概要信息; clean:清理yum过期的缓存; shell:进入yum的shell提示符; resolvedep:显示rpm软件包的依赖关系; localinstall:安装本地的rpm软件包; localupdate:显示本地rpm软件包进行更新; deplist:显示rpm软件包的所有依赖关系。 实例
安装
yum install #全部安装 yum install package1 #安装指定的安装包package1 yum groupinsall group1 #安装程序组group1
更新和升级
yum update #全部更新 yum update package1 #更新指定程序包package1 yum check-update #检查可更新的程序 yum upgrade package1 #升级指定程序包package1 yum groupupdate group1 #升级程序组group1
查找和显示
yum info package1 #显示安装包信息package1 yum list #显示所有已经安装和可以安装的程序包 yum list package1 #显示指定程序包安装情况package1 yum groupinfo group1 #显示程序组group1信息yum search string 根据关键字string查找安装包
删除程序
yum remove | erase package1 #删除程序包package1 yum groupremove group1 #删除程序组group1 yum deplist package1 #查看程序package1依赖情况
清除缓存
yum clean packages #清除缓存目录下的软件包 yum clean headers #清除缓存目录下的 headers yum clean oldheaders #清除缓存目录下旧的 headers
【第三部分】yum源使用报错解决
报错1:
解决错误:File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
错误:
原因:
这是因为yum采用python作为命令解释器,原来系统自带的python解释器为python2.7,然后我之前为了方便将python默认的解释器设为了python3.6,导致按python3.6解析2.7的语法出错了。
解决方法:
修改/usr/bin/yum文件中的第一行为 #!/usr/bin/python2.7
可能你的系统不是2.7,通过tab键补全python命令就可以看到你有哪些python版本,选一个低版本的就好。
修改之后就可以正常使用yum了。
报错2:
解决错误:http://mirror.centos.org/centos/7/updates/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.centos.org/centos/7/updates/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 30001 milliseconds')
Trying other mirror.
错误原因:配置的yum源中没有找到你要安装的包,不过系统会自动切换逐个yum源配置文件进行资源搜索,
如果仍然没有结果 或者 连接超时;那就需要修改yum源配置;
【第四部分】yum相关拓展
拓展一:CentOS yum 命令详解
(1)什么是yum
yum是Yellowdog update Modified的简称。yum的宗旨是自动化的升级、安装/移除rpm安装包(也就是说yum这个命令它的操作对象是RPM包),收集rmp的相关信息,检查依赖性,并提示用户解决。yum的关键之处是要有可靠的repository,顾名思义这就是软件的仓库,它可以是http或者ftp站点,也可以是本地的软件池,但是必须包含rpm的header,rmp的header包括了rmp的各种信息,包括描述、功能、提供的文件、依赖性等,正是收集了这些信息,才能自动化的完成余下的任务。yum本身就是运行在linux上的自动管理安装包的系统。yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了Linux 用户一直头痛的dependencies 的问题。这一点上,yum 和apt 相同。apt 原为debian 的deb 类型软件管理所使用,但是现在也能用到RedHat 门下的rpm 了。
注:linux下的RPM的全称是“RedHat Package Manager”,最早是Red Hat公司开发的,后来在CentOS、Fedora、SUSE都用它。而rpm包则是软件编译完成后按照RPM机制打包起来的一个文件,可以用rpm命令安装的一个软件安装包,它省去了Linux软件安装中编译的步骤,安装成功后软件就可以用了。RPM包的特点是:1.实现已经编译好;2.安装方便;3.安装过程中要求环境一致;4.反安装时要从最上层开始。RPM包的名称规则示例:ttpd-manual- 2.0.40-21.i386.rpm,ttp-manual是软件包的名称,2是主版本号;0是次版本号;40是次版本号;21是编译的次数;i386是适合的平台;.rpm说明这是一个RPM包。
(2)yum的特点
1.可以同时配置多个资源库(repository)
2.简洁的配置文件(一般配置文件是/etc/yum.conf)
3.自动解决增加或者删除rpm包时遇到的依赖问题
4.保持与rpm的数据库一致
(3)yum的配置文件
yum的配置文件,它的绝对路径一般是:/etc/yum.conf。yum的一切配置信息都存储在这个文件中,这是yum系统中最重要的内容。
yum.conf一般分为main和repository两部分,但是默认情况下只有main部分。每一个yum.conf都只能有一个main部分。repository 部分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d 目录下的各文件中。
使用cat /etc/yum.conf查看该文件的内容。
1.cachedir:此项为yum下载的RPM包的缓存目录,yum在此存储下载的rpm包和数据库
2.keepcache:缓存是否保存,1表示安装后保留软件包,0表示安装后删除软件包
3.debuglevel:出错日志级别,级别为0-10,默认为2(只保留安装和删除记录)
4.logfile:存放系统更新软件的记录,用户可以在该配置项配置的文件中检查自己在过去的日子都做了哪些更新
5.pkgpolicy: 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。
6.distroverp:指定一个软件包,yum会根据这个包判断你的发行版本,默认是RedHat-release,也可以是安装的任何针对自己发行版的rpm包。
7.tolerent:也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。
8.exactarch:有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
9.retries:网络连接发生错误后的重试次数,如果设为0,则会无限重试。
10.obsoletes:这是一个update的参数,具体请参阅yum(
8
),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
11.gpgcheck:是否检查GPG(GNU Private Guard),一种密钥方式签名。
12.plugins:否允许使用插件,默认是
0
不允许,但是我们一般会用yum-fastestmirror这个插件。
13.installonly_limit:允许保留多少个内核包。
14.exclude:屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。
15.reposdir:该选项用户指定 .repo 文件的绝对路径。.repo 文件包含软件仓库的信息 (作用与 /etc/yum.conf 文件中的 [repository] 片段相同)。 reposdir=[包含 .repo 文件的目录的绝对路径]
16.bugtracker_url:追踪bug路径
使用:man 5 yum.conf #可获得yum.conf的详解
(4)yum的工作原理
yum的工作模式是C/S架构:
Server端(yum仓库):依赖关系库、原文件、校验码文件。
Client端:yum客户端程序、配置文件(连接Server路径信息)。
执行yum命令时,会首先从”/etc/yum.repo.d”目录下的众多repo文件中取得软件仓库的地址并下载“元数据”,“元数据”包含注册于该软件仓库内所有软件包的包名及其所需的依赖环境等信息,yum得到这些信息后会和本地以后环境做对比,进而列出确认需要安装哪些包,并在用户确认后开始安装。
“元数据”由位于yum源服务器相关路径的repodata目录下的repomd.xml做索引。
yum系统的工作流程:
yum的基本工作流程如下:
服务器端:在服务器上面存放了所有的rpm软件包,然后以相关的功能去分析每个rpm文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。
客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。
(5).repo文件
什么是repo文件? repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!
进入/etc/yum.repos.d/目录下,可以看到默认情况下有如下三个文件:
其中CentOS-Base.repo 是yum 网络源的配置文件(一般都是用这个)
CentOS-Debuginfo.repo debug包尤其和内核相关的更新和软件安装
CentOS-Media.repo 这个是使用光盘挂载后调用的文件(我机器上没有)
CentOS-Vault.repo 这个是最近新版本的加入的老版本的yum源配置(没有。。。)
epel.repo:EPEL(Extra Packages for Enterprise Linux)是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS等提供高质量软件包的项目。装上了 EPEL,就像在 Fedora 上一样,可以通过 yum install 软件包名,即可安装很多以前需要编译安装的软件、常用的软件或一些比较流行的软件,比如现在流行的nginx、htop、ncdu、vnstat等等,都可以使用EPEL很方便的安装更新。前可以直接通过执行命令: yum install epel-release 直接进行安装,如果不能安装,参考:https://www.cnblogs.com/imweihao/p/7357484.html
(6)仓库(.repo文件)配置文件
#serverid是用于区别各个不同的repository,必须有一个独一无二的名称。若重复了,是前面覆盖后面--还是反过来呢???用enabled 测试是后面覆盖前面 [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]
参看:https://www.jb51.net/article/98963.htm
补充:
[repositoryID] #仓库ID,唯一标识别,不能重复
name=Some name for this repository # 完整的仓库名称
baseurl=url://path/to/repository/ # yum仓库指明的访问路径
enabled={1|0} #是否启用此yum仓库,默认启用
gpgcheck={1|0} #是否检查完整性和来源合法性
gpgkey=URL #秘钥文件位置,可能是对方仓库提供
enablegroups={1|0} #是否基于组来批量管理程序包
failovermethod={roundrobin|priority} #故障转移方法:轮询、根据优先级选择; 默认roundrobin随机
cost=# #设置开销,默认为1000
… ...
说明:
1)*.repo可以将多个[repositoryID]的配置信息放在一个而文件内,也可以切成多个方便管理
2)baseurl可以使用:ftp:// 、http:// 、nfs:// 、file:/// 指明URL路径
3)baseurl等号两边不能有空格,其后可以填写多个镜像访问路径,每行一个,不能顶行写
多个访问路径间联系是镜像相同,目的是为了做备用访问
4)更多选项使用man 5 yum.conf查看,基本配置只需前三行就可以
5)发行版光盘镜像安装可能会自动配置网络镜像URL地址
(7)yum命令格式
yum的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package ...]是操作的对象。
1.OPTIONS
--nogpgcheck:禁止进行gpg check;
-y: 自动回答为“yes”;
-q: 静默模式,不输出显示信息;
--disablerepo=repoidglob:临时禁用此处指定的repo;
--enablerepo=repoidglob:临时启用此处指定的repo;
--noplugins:禁用所有插件;
2.常用COMMAND
(1)显示仓库列表:repolist
# yum repolist [all|enabled|disabled] [所有|可用的|不可用]
参看:https://blog.csdn.net/xmm1981/article/details/78258176
更多推荐
所有评论(0)