今天在Red Hat上安装软件时,发现需要依赖软件,然而在用yum指令时,出现了下面的错误:
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
出现这个问题的原因是:redhat未注册,连接redhat官方软件源时,对未注册的用户不提供下载软件包的权限。
解决办法:因为centOS和redhat “本自同根生”,因此可以使用centOS的软件源。
1.对系统的检测【重要】
这一步往往不能引起使用者的重视。然而,忽略这一步将会在后续步骤上浪费时间。请记住:磨刀不误砍柴工。
①查看系统版本号:cat /etc/redhat-release
结果为:Red Hat Enterprise Linux Server release 6.4 (Santiago)
②查看系统位数:arch
结果为:x86_64
③检查是否安装yum包: rpm -qa |grep yum
注:使用了管道命令。
2.删除自带的yum包
①不检查依赖,直接删除rpm包:rpm -qa|grep yum|xargs rpm -e --nodeps
②查询确认:rpm -qa |grep yum
如果查询结果为空,则说明删除yum成功。
3.安装新yum
①下载yum包
这一步以第一大步为基础。
如果redhat版本为6.+,且系统位数为x86_64,则执行如下的下载命令:
- wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
- wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.29-73.el6.centos.noarch.rpm
- wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm
如果redhat版本为6.+,且系统位数为i386,则执行如下的下载命令:
- # wget http://mirrors.163.com/centos/6/os/i386/Packages/yum-metadata-parser-1.1.2-16.el6.i686.rpm
- # wget http://mirrors.163.com/centos/6/os/i386/Packages/yum-3.2.29-73.el6.centos.noarch.rpm
- # wget http://mirrors.163.com/centos/6/os/i386/Packages/yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm
注:由于centOS的软件源也一直在更新,如果上述下载命令找不到文件,则进入 http://mirrors.163.com/centos 查看对应的文件。总之,最终下载完成这3个文件就可以了。其他版本的yum包下载以此类推。
②安装yum包
1.由于我们后续需要重新安装这三个rpm包,我们事先要移除掉系统中自带的yum-metadata-parser-(此处省略)跟yum-3.2.29(此处省略)(只有版本号不一样)这俩个版本包,然后重新安装yum-metadata-parser-1.1.2-16.el6.x86_64.rpm跟yum-3.2.29-73.el6.centos.noarch.rpm,后续才不会出现conflict问题(conflict是指rpm安装的包重复的问题)
移除命令:rpm -e 文件名 --nodeps
2.rpm -ivh yum-*
这一步极有可能出现错误。
a. 如果错误为:
- error: Failed dependencies:
- libc.so.6 is needed by yum-metadata-parser-1.1.2-16.el6.i686
- libc.so.6(GLIBC_2.0) is needed by yum-metadata-parser-1.1.2-16.el6.i686
- libc.so.6(GLIBC_2.1.3) is needed by yum-metadata-parser-1.1.2-16.el6.i686
- libglib-2.0.so.0 is needed by yum-metadata-parser-1.1.2-16.el6.i686
- libpthread.so.0 is needed by yum-metadata-parser-1.1.2-16.el6.i686
- libpython2.6.so.1.0 is needed by yum-metadata-parser-1.1.2-16.el6.i686
- libsqlite3.so.0 is needed by yum-metadata-parser-1.1.2-16.el6.i686
- libxml2.so.2 is needed by yum-metadata-parser-1.1.2-16.el6.i686
- libxml2.so.2(LIBXML2_2.4.30) is needed by yum-metadata-parser-1.1.2-16.el6.i686
- python-urlgrabber >= 3.9.1-10 is needed by yum-3.2.29-73.el6.centos.noarch
说明软件包不兼容。比如我是64位的系统,下载了32的软件包。
b.如果错误为:
- warning: yum-metadata-parser-1.1.2-16.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
- error: Failed dependencies:
- python-urlgrabber >= 3.9.1-10 is needed by yum-3.2.29-73.el6.centos.noarch
则是 依赖条件不满足 的问题。
按照如下步骤操作即可:
步骤一:rpm -qa|grep python
发现列表中python-urlgrabber-3.9.1-9.el6.noarch ,小于3.9.1-10
步骤二:卸载python-urlgrabber-3.9.1-9.el6.noarch:rpm -e python-urlgrabber-3.9.1-9.el6.noarch --nodeps
步骤三:下载: wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-urlgrabber-3.9.1-11.el6.noarch.rpm
步骤四:安装:rpm -ivh python-urlgrabber-3.9.1-11.el6.noarch.rpm
上述问题完成以后,重新执行rpm -ivh yum-*
更改yum源
①下载yum配置文件
- cd /etc/yum.repos.d
- wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
②配置
- vim CentOS6-Base-163.repo
把$releasever替换成现有系统的版本号(6)
sed -i "s/\$releasever/6/g" CentOS6-Base-163.repo
5.重建缓存
- clean all #清除原有缓存
- sudo yum makecache #重建缓存,以提高搜索安装软件的速度
6.测试
yum install vim*
到这里,我们就可以用yum源在线安装软件了