今天在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源在線安裝軟件了