如何查看是否安装了存储库rpm,centos怎么查找安装的yum
一、如何查看ubuntu安装的软件
ubuntu安装和查看已安装
说明:由于图形化界面方法(如Add/Remove...和Synaptic Package Manageer)比较简单,所以这里主要总结在终端通过命令行方式进行的软件包安装、卸载和删除的方法。
一、Ubuntu中软件安装方法
1、APT方式
(1)普通安装:apt-get install softname1 softname2…;
(2)修复安装:apt-get-f install softname1 softname2...;(-f Atemp to correct broken dependencies)
(3)重新安装:apt-get--reinstall install softname1 softname2...;
2、Dpkg方式
(1)普通安装:dpkg-i package_name.deb
3、源码安装(.tar、tar.gz、tar.bz2、tar.Z)
首先解压缩源码压缩包然后通过tar命令来完成
a.解xx.tar.gz:tar zxf xx.tar.gz
b.解xx.tar.Z:tar zxf xx.tar.Z
c.解xx.tgz:tar zxf xx.tgz
d.解xx.bz2:bunzip2 xx.bz2
e.解xx.tar:tar xf xx.tar
然后进入到解压出的目录中,建议先读一下README之类的说明文件,因为此时不同源代码包或者预编译包可能存在差异,然后建议使用ls-F--color或者ls-F命令(实际上我的只需要 l命令即可)查看一下可执行文件,可执行文件会以*号的尾部标志。
一般依次执行./configure
make
sudo make install
即可完成安装。
二、Ubuntu中软件包的卸载方法
1、APT方式
(1)移除式卸载:apt-get remove softname1 softname2…;(移除软件包,当包尾部有+时,意为安装)
(2)清除式卸载:apt-get--purge remove softname1 softname2...;(同时清除配置)
清除式卸载:apt-get purge sofname1 softname2...;(同上,也清除配置文件)
2、Dpkg方式
(1)移除式卸载:dpkg-r pkg1 pkg2...;
(2)清除式卸载:dpkg-P pkg1 pkg2...;
三、Ubuntu中软件包的查询方法
Dpkg使用文本文件来作为数据库.通称在/var/lib/dpkg目录下.通称在 status文件中存储软件状态,和控制信息.在 info/目录下备份控制文件,并在其下的.list文件中记录安装文件清单,其下的.mdasums保存文件的 MD5编码.
体验使用数据库的时刻到了:
$ dpkg-l Desired=Unknown/Install/Remove/Purge/Hold| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed|/ Err?=(none)/Hold/Reinst-required/X=both-problems(Status,Err: uppercase=bad)||/ Name Version Description+++-===========-================-======================================== ii aalib1 1.4p5-28 ascii art library- transitional package ii adduser 3.85 Add and remove users and groups ii alien.63 install non-native packages with dpkg......
每条记录对应一个软件包,注意每条记录的第一,二,三个字符.这就是软件包的状态标识,后边依此是软件包名称,版本号,和简单描述.
第一字符为期望值,它包括:
u状态未知,这意味着软件包未安装,并且用户也未发出安装请求.
i用户请求安装软件包.
r用户请求卸载软件包.
p用户请求清除软件包.
h用户请求保持软件包版本锁定.
第二列,是软件包的当前状态.此列包括软件包的六种状态.
n软件包未安装.
i软件包安装并完成配置.
c软件包以前安装过,现在删除了,但是它的配置文件还留在系统中.
u软件包被解包,但还未配置.
f试图配置软件包,但是失败了.
h软件包安装,但是但是没有成功.
第三列标识错误状态,可以总结为四种状态.第一种状态标识没有问题,为空.其它三种符号则标识相应问题.
h软件包被强制保持,因为有其它软件包依赖需求,无法升级.
r软件包被破坏,可能需要重新安装才能正常使用(包括删除).
x软包件被破坏,并且被强制保持.
也可以以统配符模式进行模糊查询,比如我要查找以nano字符开始的所有软件包:
$ dpkg-l nano* Desired=Unknown/Install/Remove/Purge/Hold| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed|/ Err?=(none)/Hold/Reinst-required/X=both-problems(Status,Err: uppercase=bad)||/ Name Version Description+++-==============-==============-============================================ ii nano 1.3.10-2 free Pico clone with some new features pn nano-tiny<none>(no description available) un nanoblogger<none>(no description available)
以上状态说明:系统中安装了 nano版本为 1.3.10-2;安装过 nano-tiny,后来又清除了;从未安装过nanoblogger.
如果觉得 dpkg的参数过多,不利于记忆的话,完全可以使用 dpkg-query进行 dpkg数据库查询.
应用范例:
查询系统中属于nano的文件:
$ dpkg--listfiles nano
or
$ dpkg-query-L nano
查看软件nano的详细信息:
$ dpkg-s nano
or
$ dpkg-query-s nano
查看系统中软件包状态,支持模糊查询:
$ dpkg-l
or
$dpkg-query-l
查看某个文件的归属包:
$ dpkg-query-S nano
or
$ dpkg-S nano
三、其他应用总结
apt-cache search#------(package搜索包)
apt-cache show#------(package获取包的相关信息,如说明、大小、版本等)
apt-get install#------(package安装包)
apt-get install#-----(package--reinstall重新安装包)
apt-get-f install#-----(强制安装,"-f=--fix-missing"当是修复安装吧...)
apt-get remove#-----(package删除包)
apt-get remove--purge#------(package删除包,包括删除配置文件等)
apt-get autoremove--purge#----(package删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐))
apt-get update#------更新源
apt-get upgrade#------更新已安装的包
apt-get dist-upgrade#---------升级系统
apt-get dselect-upgrade#------使用 dselect升级
apt-cache depends#-------(package了解使用依赖)
apt-cache rdepends#------(package了解某个具体的依赖,当是查看该包被哪些包依赖吧...)
apt-get build-dep#------(package安装相关的编译环境)
apt-get source#------(package**该包的源代码)
apt-get clean&& apt-get autoclean#--------清理**文件的存档&&只清理过时的包
apt-get check#-------检查是否有损坏的依赖
dpkg-S filename-----查找filename属于哪个软件包
apt-file search filename-----查找filename属于哪个软件包
apt-file list packagename-----列出软件包的内容
apt-file update--更新apt-file的数据库
dpkg--info"软件包名"--列出软件包解包后的包名称.
dpkg-l--列出当前系统中所有的包.可以和参数less一起使用在分屏查看.(类似于rpm-qa)
dpkg-l|grep-i"软件包名"--查看系统中与"软件包名"相关联的包.
dpkg-s查询已安装的包的详细信息.
dpkg-L查询系统中已安装的软件包所安装的位置.(类似于rpm-ql)
dpkg-S查询系统中某个文件属于哪个软件包.(类似于rpm-qf)
dpkg-I查询deb包的详细信息,在一个软件包**到本地之后看看用不用安装(看一下呗).
dpkg-i手动安装软件包(这个命令并不能解决软件包之前的依赖性问题),如果在安装某一个软件包的时候遇到了软件依赖的问题,可以用apt-get-f install在解决信赖性这个问题.
dpkg-r卸载软件包.不是完全的卸载,它的配置文件还存在.
dpkg-P全部卸载(但是还是不能解决软件包的依赖性的问题)
dpkg-reconfigure重新配置
apt-get install
**软件包,以及所有依赖的包,同时进行包的安装或升级。如果某个包被设置了 hold(停止标志,就会被搁在一边(即不会被升级)。更多 hold细节请看下面。
apt-get remove [--purge]
移除以及任何依赖这个包的其它包。
--purge指明这个包应该被完全清除(purged),更多信息请看 dpkg-P。
apt-get update
升级来自 De**an镜像的包列表,如果你想安装当天的任何软件,至少每天运行一次,而且每次修改了
/etc/apt/sources.list後,必须执行。
apt-get upgrade [-u]
升级所有已经安装的包为新可用版本。不会安装新的或移除老的包。如果一个包改变了依赖关系而需要安装一个新的包,那么它将不会被升级,而是标志为 hold。apt-get update不会升级被标志为 hold的包(这个也就是 hold的意思)。请看下文如何手动设置包为 hold。我建议同时使用'-u'选项,因为这样你就能看到哪些包将会被升级。
apt-get dist-upgrade [-u]
和 apt-get upgrade类似,除了 dist-upgrade会安装和移除包来满足依赖关系。因此具有一定的危险性。
apt-cache search
在软件包名称和描述中,搜索包含xxx的软件包。
apt-cache show
显示某个软件包的完整的描述。
apt-cache showpkg
显示软件包更多细节,以及和其它包的关系。
dselect
console-apt
aptitude
gnome-apt
APT的几个图形前端(其中一些在使用前得先安装)。这里 dselect无疑是强大的,也是古老,难驾驭。
普通 Dpkg用法
dpkg-i
安装一个 De**an包文件,如你手动**的文件。
dpkg-c
列出的内容。
dpkg-I
从中提取包信息。
dpkg-r
移除一个已安装的包。
dpkg-P
完全清除一个已安装的包。和 remove不同的是,remove只是删掉数据和可执行文件,purge另外还删除所有的配制文件。
dpkg-L
列出安装的所有文件清单。同时请看 dpkg-c来检查一个.deb文件的内容。
dpkg-s
显示已安装包的信息。同时请看 apt-cache显示 De**an存档中的包信息,以及 dpkg-I来显示从一个.deb文件中提取的包信息。
dpkg-reconfigure
重新配制一个已经安装的包,如果它使用的是 debconf(debconf为包安装提供了一个统一的配制界面)。你能够重新配制 debconf它本身,如你想改变它的前端或提问的优先权。例如,重新配制 debconf,使用一个 dialog前端,简单运行:
dpkg-reconfigure--frontend=dialog debconf(如果你安装时选错了,这里可以改回来哟:)
echo" hold"| dpkg--set-selections
设置的状态为 hlod(命令行方式)
dpkg--get-selections""
取的的当前状态(命令行方式)
支持通配符,如:
De**an:~# dpkg--get-selections*wine*
libwine hold
libwine-alsa hold
libwine-arts hold
libwine-dev hold
libwine-nas hold
libwine-print hold
libwine-twain hold
wine hold
wine+ hold
wine-doc hold
wine-utils hold
例如:
大家现在用的都是 gaim-0.58+ QQ-plugin,为了防止 gaim被升级,我们可以采用如下方法:
方法一:
De**an:~# echo"gaim hold"| dpkg--set-selections
然後用下面命令检查一下:
De**an:~# dpkg--get-selections"gaim"
gaim hold
现在的状态标志是 hold,就不能被升级了。
如果想恢复怎么办呢?
De**an:~# echo"gaim install"| dpkg--set-selections
De**an:~# dpkg--get-selections"gaim"
gaim install
这时状态标志又被重置为 install,可以继续升级了。
同志们会问,哪个这些状态标志都写在哪个文件中呢?
在/var/lib/dpkg/status里,你也可以通过修改这个文件实现 hold。
有时你会发现有的软件状态标志是 purge,不要奇怪。
如:事先已经安装了 amsn,然後把它卸了。
apt-get remove--purge amsn
那么状态标志就从 install变成 purge。
方法二:
在/etc/apt下手动建一个 preferences文件
内容:
Package: gaim
Pin: version 0.58*
保存
dpkg-S
在包数据库中查找,并告诉你哪个包包含了这个文件。(注:查找的是事先已经安装的包)
--------------------------------------------
De**an的软件包管理工具命令不完全列表
--------------------------------------------
De**an系统中所有的包信息都在/var/lib/dpkg下.其中/var/lib/dpkg/info目录中保存了各个软件包的信息及管理文件.每个文件的作用如下:
以".conffiles"结尾的文件记录软件包的配置列表.
以".list"结尾的文件记录了软件包的文件列表,用户可在文件当中找到软件包文件的具体安装位置.
以".md5sums"结尾的文件记录了md5信息,用来进行包的验证的.
以".config"结尾的文件是软件包的安装配置角本.
以".postinst"角本是完成De**an包解开之后的配置工作,通常用来执行所安装软件包相关的命令和服务的重新启动.
以".preinst"角本在Debain解包之前运行,主要作用是是停止作用于即将升级的软件包服务直到软件包安装或和升级完成.
以".prerm"脚本负责停止与软件包关联的daemon服务,在删除软件包关联文件之前执行.
以".postrm"脚本负责修改软件包链接或文件关联,或删除由它创建的文件.
/var/lib/dpkg/available是软件包的描述信息.
包括当前系统中所有使用的De**an安装源中所有的软件包,还包括当前系统中已经安装和未安装的软件包.
1.dpkg包管理工具
dpkg-r卸载软件包.不是完全的卸载,它的配置文件还存在.
dpkg--info"软件包名"--列出软件包解包后的包名称.
dpkg-l--列出当前系统中所有的包.可以和参数less一起使用在分屏查看.
dpkg-l|grep-i"软件包名"--查看系统中与"软件包名"相关联的包.
dpkg-s查询已安装的包的详细信息. dpkg-L查询系统中已安装的软件包所安装的位置.
dpkg-S查询系统中某个文件属于哪个软件包.
dpkg-I查询deb包的详细信息,在一个软件包**到本地之后看看用不用安装(看一下呗).
dpkg-i手动安装软件包(这个命令并不能解决软件包之前的依赖性问题),如果在安装某一个软件包的时候遇到了软件依赖的问题,可以用apt-get-f install在解决信赖性这个问题.
dpkg-reconfigure重新配置
dpkg-P全部卸载(但是还是不能解决软件包的依赖性的问题)
二、如何解决源码包安装时的依赖性问题
不管是初步跨入Linux殿堂的新手,还是具有多年经验的专家,在安装或编译软件包的过程中或多或少的都会遇到包的依赖问题,从而导致安装过程无法继续,比如管理员在安装LAMP时,包需要libgd.so文件,而这个文件属于GD软件包。但是在安装GD软件包时,可能这个软件包跟其他软件包又具有依赖关系,又需要安装其他软件包才行。这时有的管理员便失去耐心。在遇到这种Linux软件包依赖关系问题时,该如何解决呢?在谈这个具体的措施之前,先跟大家聊聊Linux系统里的软件依赖性问题。
一、什么是依赖性
程序依赖于程序代码的共享库,以便它们可以发出系统调用将输出发送到设备或打开文件等(共享库存在于许多方面,而不只局限于系统调用)。没有共享库,每次程序员开发一个新的程序,每个程序员都需要从头开始重写这些基本的系统*作。当编译程序时,程序员将他的代码链接到这些库。如果链接是静态的,编译后的共享库对象代码就添加到程序执行文件中;如果是动态的,编译后的共享库对象代码只在运行时需要它时由程序员加载。动态可执行文件依赖于正确的共享库或共享对象来进行*作。rpm依赖性尝试在安装时强制实施动态可执行文件的共享对象需求,以便在以后当程序运行时不会有与动态链接过程有关的任何问题。
注意:还有一种类型的依赖性,它基于显式的条目,rpm通过程序员将该依赖性强加到rpm配置文件中,但目前我们不关心这种类型的依赖性,这种依赖性比较容易解决。这里将重点放在rpm强制实施的更加复杂的共享对象依赖性。
二、动态可执行文件和共享对象
动态可执行文件使用初编译和链接程序时使用的库文件的共享对象名称来查找共享对象。它们在少数的几个标准位置查找,比如在/lib和/usr/lib目录及在LD_LIBRARY_PATH环境变量(主要用于指定查找共享库,比如我们在安装Oracle时指定路径,exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib)指定的目录中。顺便提一下,在这些库目录中找到的共享对象可能不是真正的文件;它们可能是指向位于其他位置的真实库文件的符号链接(但通常仍旧在标准库目录的一个目录中)。至少从系统管理员的观点是在用于创建共享库文件的共享库软件包的名称和共享库文件的名称之间通常没有什么关系。例如,GLIBC2.3软件包用于创建libc.so.6共享库文件。也从本示例中注意到,添加到共享库文件名结束的版本号(.6)跟用于创建它的版本号(2.3)没有关系。这是由共享库软件包开发人员有意完成的,以便GLIBC的新版本可以重用相同的共享库文件名libc.so.6。这允许您在系统上加载新版本的GLIBC,而不用中断动态链接到lib.so.6共享库文件的所有程序,当然假定新版本的GLIBC向后与动态可执行文件初所链接的老版本GLIBC兼容。因此,即使库文件或共享对象文件有与它们相关的版本号,这些版本号也不能帮助你确定他们来自哪个版本的共享软件包。
注意:当将whatprovides选项用于rpm查询命令时,可以获得有关使用rpm软件包加载到系统的现有共享对象的信息。这种混*是由下面的事实造成的:单个共享库文件可能支持某个范围的共享库软件包版本。例如,要检查soname库文件/lib/libc.so.6支持的GLIBC共享库软件包,运行下面的命令:
#objdump--all-headers/lib/libc.so.6|less
向下滚动此报告,直到到达Versiondefinitions:部分,以便查看libc.so.6共享库文件支持哪些GLIBC版本:
Versiondefinitions:
10x010x0865f4e6libc.so.6
20x000x0d696910GLIBC_2.0
30x000x0d696911GLIBC_2.1
GLIBC_2.0
40x000x09691f71GLIBC_2.1.1
GLIBC_2.1
50x000x09691f72GLIBC_2.1.2
GLIBC_2.1.1
60x000x09691f73GLIBC_2.1.3
GLIBC_2.1.2
70x000x0d696912GLIBC_2.2
GLIBC_2.1.3
80x000x09691a71GLIBC_2.2.1
GLIBC_2.2
90x000x09691a72GLIBC_2.2.2
GLIBC_2.2.1
100x000x09691a73GLIBC_2.2.3
GLIBC_2.2.2
110x000x09691a74GLIBC_2.2.4
GLIBC_2.2.3
120x000x09691a76GLIBC_2.2.6
GLIBC_2.2.4
130x000x0d696913GLIBC_2.3
GLIBC_2.2.6
140x000x09691972GLIBC_2.3.2
GLIBC_2.3
150x000x09691973GLIBC_2.3.3
GLIBC_2.3.2
160x000x09691974GLIBC_2.3.4
GLIBC_2.3.3
170x000x0d696914GLIBC_2.4
GLIBC_2.3.4
180x000x0d696915GLIBC_2.5
GLIBC_2.4
190x000x0963cf85GLIBC_PRIVATE
GLIBC_2.5
200x000x0b792650GCC_3.0
在本示例中,1ibc.so.6共享库文件支持原先为GLIBC版本2.0到2.5而开发的所有动态执行文件。注意:也可以使用objdump命令来从共享库文件中提取soname,命令如下所示:
#objdump--all-headers/lib/libcrypto.so.0.9.8b|grepSONAME
SONAMElibcrypto.so.6
objdump:/lib/libcrypto.so.0.9.8b:norecognizeddebugginginformation
接下来,将讨论rpm软件包是如何生成的,以便在新系统上安装rpm软件包时,这些共库依赖性是己知的。
三、Rpm软件包和共享库依赖性
当程序员生成rpm软件包时,ldd命令用于报告动态可执行文件软件包中所有动态可执行文件使用的所有共享库。另一个混*是由下面的事实带来的:相同软件包中的不同动态可执行文件可能与相同的共享库软件包的不同版本进行链接。例如,Heartbeat软件包中的不同程序可能已经进行了开发,并动态链接到libc.so.6sonmae共享库文件的不同GLIBC版本。对rpm命令使用-q和--requires参数,可以看到rpm软件包需要的共享库的完整清单。例如,要看到Heartbeatrpm软件包所有的所需依赖性,请使用命令:
#rpm-q--requires-pheartbeat-1.x.x.i386.rpm
这产生了下面的报告:
sysklogd
/**n/sh
/**n/sh
/usr/**n/python
ld-linux.so.2
libapphb.so.0
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.3)
libccmclient.so.0
libdl.so.2
libglib-1.2.so.0
libhbclient.so.0
libpils.so.0
libplumb.so.0
libpthread.so.0
librt.so.1
libstonith.so.0
注意,在此报告中,libc.so.6soname是所需要的,此共享库必须支持使用GLIBC共享软件包版本号2.0、2.1、2.1.3、2.2和2.3进行链接的动态可执行文件。这是由下面的事实决定的:Heartbeat软件包中的不同动态可执行文件是针对不同版本的libc.so.6库的每个版本进行链接的。在了解了动态可执行文件、共享对象、soname和共享库软件包彼此是如何相关的后,下面准备来看这样的一个例子:当尝试安装rpm软件包,并且它由于依赖性错误而失败时,会发生什么。yum能够从指定的服务器自动**RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次**、安装。
四、手工解决依赖性问题
通常,当尝试安装发行版中没有包括的软件包(及不能由像up2date、apt-get或Yum一样的更新工具自动解决其依赖性的软件包)时,将碰到rpm依赖性错误。例如,如果尝试在老的Linux发行版上使用rpm–ivh*rpm命令,例如所有的Heartbeatrpm包,那么在安装过程中就可能碰到下面的错误:
error:faileddependencies:
libc.so.6(GLIBC_2.3)isneededbyheartbeat-1.x.x
libc.so.6(GLIBC_2.3)isneededbyheartbeat-pils-1.x.x
libcrypto.so.0.9.6isneededbyheartbeat-stonith-1.x.x
libsnmp-0.4.2.6.soisneededbyheartbeat-stonith-1.x.x
注意,rpm命令没有干扰报告所需的每个GLIBC共享库软件包版本号——它只报告所需的高编号的版本号(GLIBC_2.3)。(假定原来的软件包开发人员不会将相同软件包中的可执行文件链接到不兼容版本的共享库软件包)所有的这些故障都报告所需的共享库名称或soname(而不是文件名称,soname始终以“lib”开始)。但可以删除添加到rpm报告的soname结束的版本号,并快速检查以查看是否在系统中使用locate命令安装这些共享库(假设您的locate数据库是新的,有关更多信息,请参阅locate或slocate的手册页)。例如,要查找libcrypto享库文件,要输入:
#locatelibcrypto
[root@localhost~]#locatelibcrypto
/lib/libcrypto.so.0.9.8b
/lib/libcrypto.so.6
/root/.Trash/vmware-tools-distrib/lib/lib32/libcrypto.so.0.9.8
/root/.Trash/vmware-tools-distrib/lib/lib32/libcrypto.so.0.9.8/libcrypto.so.0.9.8
/root/.Trash/vmware-tools-distrib/lib/lib64/libcrypto.so.0.9.8
/root/.Trash/vmware-tools-distrib/lib/lib64/libcrypto.so.0.9.8/libcrypto.so.0.9.8
/usr/lib/libcrypto.a
/usr/lib/libcrypto.so
/usr/lib/pkgconfig/libcrypto.pc
/usr/lib/vmware-tools/lib32/libcrypto.so.0.9.8
/usr/lib/vmware-tools/lib32/libcrypto.so.0.9.8/libcrypto.so.0.9.8
/usr/lib/vmware-tools/lib64/libcrypto.so.0.9.8
/usr/lib/vmware-tools/lib64/libcrypto.so.0.9.8/libcrypto.so.0.9.8
如果此命令没有在系统上找到一个libcrypto共享库文件,将需要转到Internet并找出哪个共享库软件包包含此共享库文件。完成此项工具的一个快速和简便方式是只要在上将共享库的名称输入到搜索栏中。如果将文本libcrypto.so输入到此搜索贞中,将很快知道此共享库是由openssl软件包提供的。
如果老版本的共享库数据包已经安装在系统上,可以用如下的命令确认此软件包含您需要的共享库文件:
#rpm-q--providesopenssl
[root@localhost~]#rpm-q--providesopenssl
config(openssl)=0.9.8b-10.el5
lib4758cca.so
libaep.so
libatalla.so
libchil.so
libcrypto.so.6
libcswift.so
libgmp.so
libnuron.so
libssl.so.6
libsureware.so
libubsec.so
openssl=0.9.8b-10.el5
此命令报告此rpm软件包中提供的所有内容(这包括软件包提供的共享库文件的soname)。注意:如前面指出的,共享库软件包版本号没有并且应该没有与共享库文件(soname)版本号的任何对应关系。这里不进行这方面的讨论,因为soname符号链接可能指向不同版本的共享库文件,这也是在尽量避免在安装新版本的共享软件包时中断现有动态可执行文件的情况下完成的。
五、自动解决依赖性故障
当您使用rpm软件包来生成、升级或添加新的特性到系统时,依赖性故障可能很快变成一场恶梦。只要通过使用您的发行版供应商的升级服务或工具,就可以避免这场恶梦。例如,当选择要安装的rpm软件包时,RedHat工具up2date自动从RedHat**并安装所有rpm依赖性。下面就点上列出了几个完成相同事情的支持社区的免费方法:。下面将只进一步看到这些自动更新工具中的一种:Yum。
1.使用Yum来安装rpm软件包
Yum(YellowdogUpdater,Modified)程序可从下面****:
在**了此软件包后,可以使用下面的命令像任何其他rpm软件包那样安装它:
#rpm-ivhyum*
您可能需要更新想用于**您的rpm软件包的存储库。有关Fedora的可用Yum存储库的清单在要切换到不同的存储库,**这些文件中的一个文件,并将该文件作为/etc/yum.conf文件安装。现在可以用下面的命令告诉Yum报告存储在Yum存储库中、可用于安装所有软件包:
#yumlist
[root@localhost~]#yumlist|more
ThissystemisnotregisteredwithRHN.
RHNsupportwillbedisabled.
Loading"security"plugin
Loading"rhnplugin"plugin
InstalledPackages
Deployment_Guide-en-US.noarch5.2-9installed
Deployment_Guide-zh-CN.noarch5.2-9installed
Deployment_Guide-zh-TW.noarch5.2-9installed
GConf2.i3862.14.0-9.el5installed
GConf2-devel.i3862.14.0-9.el5installed
ImageMagick.i3866.2.8.0-4.el5_1.1installed
MAKEDEV.i3863.23-1.2installed
MySQL-python.i3861.2.1-1installed
NetworkManager.i3861:0.6.4-8.el5installed
NetworkManager-glib.i3861:0.6.4-8.el5installed
2.用Yum安装新的rpm软件包
在本示例中,将安装新的GLIBC软件包。用简单的命令安装新的GLIBC及其所有依赖性:
#yumupdateglibc
如果一切正常,Yum程序将自动检测、**并安装新GLIBC软件包所需要的所有rpm软件包(这里的GLIBC软件包是为您的发行版而构建的,不一定是可用的新版GLIBC软件包(使用发行版所批准的GLIBC共享库软件包版本号或冒险安装没有使用正常系统*作所需要的动态可执行文件的GLIBC软件包版本)。也可以将list参数用于Yum和grep命令来查找要安装的软件包。例如,要查找名称中有SNMP的软件包,请输入:
#yumlist|grepsnmp
此命令返回如下报告:
ThissystemisnotregisteredwithRHN.
RHNsupportwillbedisabled.
net-snmp.i3861:5.3.1-24.el5installed
net-snmp-libs.i3861:5.3.1-24.el5installed
net-snmp-perl.i3861:5.3.1-24.el5installed
net-snmp-utils.i3861:5.3.1-24.el5installed
现在可以容易地使用YUM**并安装所有这些rpm软件包。
六、关于升级Gilbc的建议
Glibc库是Linux底层的运行库,其性能对于整个系统的运行有重要的意义。Glibc库包含了大量函数,其中的函数可大致分成两类,一类是与*作系统核心沟通的系统调用接口,它们作为功能型函数被调用,提供对Linux*作系统调用的包装与预处理。另外一类为一般的函数对象,它们提供了经常使用的功能的实现,作为工具型函数使用。在实践中,有不少软件就是依赖与Glibc版本才能安装并运行,说白了对于Glibc版本要求是版本高了不行,低了还不成。这些编译环境中的应用程序也和其它程序一样必须有运行的环境,我常遇到管理员在生产中给服务器装了新的Linux发行版,结果应用软件装不上去,原因是Glibc的版本不对,有的是写在原发行版glibc上升级有的是降级,结果倒是整个系统的崩溃,实践经验告诉我,你只有选择相应Linux发行版里对应的glibc,例如我们单位的一个应用软件时在rhel3.0下开发的,那么就得要对应的发行版,换了别的就难说了,任何自己升级或降级Glibc来适应应用软件的做法都是不可取的,问题后的解决方法是找到了RHEL3装上就解决了。在表一中,我把几个linux发行版原配的Glibc版本列出,供大家参考。
点击图片查看大图
Glibc库与核心功能组件
上图一说明:
GCC依赖于glibc
**nutils依赖于glibc(**nutils提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、连接(ld)、静态库归档(ar)、反汇编)
make依赖于glibc
头文件是在编译时候gcc所需要的,但本身都是一些文本文件,因此没有需要的运行环境。
常用工具依赖于glibc和各种需要用到的动态库。
下表一列出了多个重要Linux发行版的Glibc的情况
Linux发行版Glibc版本
Redhat9glibc-2.3.2-5
Fedora1glibc-2.3.2
RedhatEnterpriseLinuxAs3glibc-2.3.2-95
RedhatEnterpriseLinuxAs4glibc-2.3.4
RedhatEnterpriselinux5glibc-2.5-24
RedhatEnterpriselinux6glibc-2.9
Centos5.xglibc-2.5
SuseLinuxEnterpriseServer9glibc-2.3.2-92
SuseLinuxenterpriseServer10glibc-2.4.31.54
SuseLinuxEnterpriseServer11glibc-2.9
点击图片查看大图
Linux发行版glibc(32)位
下面介绍几个查询glibc版本号的方法:
#ls–al/lib/libc*
或者是用下面的命令也可以实现
#rpm–qp|grepglibc
基于de**an的系统通过dpkg–l|greplibc6也可以查到,总之一般都在/usr/share/doc目录下都能看到glibc的相关信息。
七、小结
大部分情况下,在遇到软件包依赖关系问题的时候,*作系统提供的文件名字与软件包名字都会有直接的联系。有可能文件的名字就是软件包的名字。但是有些时候文件的名字与软件包的名字会相差甚远。此时大部分系统管理员可能光凭文件名字无法找到对应的软件包。此时可以先在系统安装光盘里找,如果找到那时佳选项,然后就需要借助笔者上面谈到的一些专业网站,去查询软件包的名字了。当系统管理员安装了某个软件之后,如果存在软件包之间的依赖关系,则好能够拿本子或者通过其他手段记录下来。以便下次方便实用,注意工作中的积累,相信绝大部分的软件包依赖关系问题都会迎刃而解。
三、centos怎么查找安装的yum
做软件开发时基本都会涉及到数据的使用,比如简单用户登录注册,这用户信息则需要使用数据库做存储管理。而在项目开发测试过程常使用的数据库则是mysql。下面由小河给大家分享:如何在CentOS系统上使用yum安装mysql数据库,以CentOS6.4系统为例。工具/原料yum库Mysql数据库CentOS6.4_64**t方法/步骤查看CentOS自带mysql是否已安装。输入:yumlistinstalledgrepmysql若有自带安装的mysql,如何卸载CentOS系统自带mysql数据库?输入:yum-yremovemysql-libs.x86_64,若有多个依赖文件则依次卸载。当结果显示为Complete!即卸载完毕。查看yum库上的mysql版本信息(CentOS系统需要正常连接网络)。输入:yumlistgrepmysql或yum-ylistmysql*使用yum安装mysql数据库。输入:yum-yinstallmysql-servermysqlmysql-devel,命令将:mysql-server、mysql、mysql-devel都安装好,当结果显示为“Complete!”即安装完毕。注:安装mysql只是安装了数据库,只有安装mysql-server才相当于安装了客户端。查看刚安装mysql数据库版本信息。输入:rpm-qimysql-server以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。