linux as ld?Linux是什么软件
大家好,今天来为大家解答linux as ld这个问题的一些问题点,包括Linux是什么软件也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
在linux中ls -ld 是什么意思
1、ls:列出文件及目录。
2、-l:参数,以详细格式列表。
3、-d:参数,仅列目录。
linux中的通用命令还有:
1、date:打印或者设置系统的日期和时间
2、stty-a:可以查看或者打印控制字符(Ctrl-C、Ctrl-D、Ctrl-Z等)
3、passwd:用passwd-h查看
4、logout,login:登录shell的登录和注销命令
5、more,less,head tail:显示或部分显示文件内容
6、lp/lpstat/cancel,lpr/lpq/lprm:打印文件
7、chmod u+x:更改文件权限
8、rm-fr dir:删除非空目录
9、cp-R dir:拷贝目录
10、fg jobid:可以将一个后台进程放到前台
扩展资料:
相关优点
1、Linux由众多微内核组成,其源代码完全开源;
2、Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4、TCP/IPv6和链路层拓扑程序等,且可以利用Unix的网络特性开发出新的协议栈;
3、Linux系统工具链完整,简单操作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性。
linux AS3 oracle9i 安装指南
oracle9i for linux A3安装指南
by tangyi
警告:如果修改unix参数文件或者oracle参数文件,切忌备份并且确认后才能修改,否则可能发生无法挽回的错误。
准备:
1、安装vmware tools
点vmware工具菜单下的install vmware tools
然后mount/dev/cdrom/mnt/cdrom
cd/mnt/cdrom
cp VM*.gz/tmp
unzip VM*.gz
如果是.tar,需要tar xvf*.tar
cd vm*
./*.pl
2、开起telnet服务
安装telnet–server包,在cd3上
把CD3放入VMWARE光驱
mount/dev/cdrom/mnt/cdrom
cd/mnt/cdrom
rpm–ivh telnet-server*.rpm
ntsysv
将telnet前面打上星号确定
service xinetd restart
3、开起xmanager服务
我们在Linux系统下,修改/etc/X11/xdm/Xaccess文件,找到下面的语句:#*#any host can get a login window去掉最前面的#号
修改/etc/X11/gdm/gdm.conf文件,找到下面的语句:[xdmcp]将其中的Enable=false改为Enable=true或 Enable=1。同时我们要确保存在下面的语句,因为177端口是我们要配置的xdmcp服务的监听端口,我们在后面配置xmanager将看到。
修改/etc/inittab文件,将下面的语句改为如下,如果原来就是id:5:initdefault:就不用更改。
修改/etc/X11/xdm/xdm-config的最后一行,在displayManager.requestPort:0前面加上一个!号,结果如下第五步,我们修改确保/etc/X11/xdm/Xservers的属性为444,/etc/X11/xdm/Xsetup_0的属性为755,在RedHat 9.0中,我们可以看到这两个文件默认的属性就是444和775,因此不用修改。
正式安装
一、oracle9i安装盘和oracle9i补丁
ship_9204_linux_disk1.cpio p3006854_9204_LINUX.zip
ship_9204_linux_disk2.cpio p2617419_210_GENERIC.zip
ship_9204_linux_disk3.cpio p3238244_9204_LINUX.zip
二、安装步骤
1、以根用户登录系统,添加安装过程中需要用到的用户和组
#groupadd oracle
#useradd–g oracle oracle
#passwd oracle
2、以根用户登录系统,调节共享内存
# echo 300000000/proc/sys/kernel/shmmax
当然为了一开机系统就能自动帮你设好这些参数,也可改动/etc/sysctl.conf这个文件,加入以下的语句:kernel.shmmax= 300000000
注意:如果你的共享内存不够大的话,在安装的过程中会提示ORA-27123错误,到时候你只要把/proc/sys/kernel/shmmax的值调大就可以了
3:以root用户在根目录底下创建oracle并且赋予oracle用户该目录的权限
# cd/
# mkdir-p/oracle/product/9.2
# chown-R oracle oracle
4:以oracle用户登录系统,设置oracle的环境
$vi.bash_profile(加入如下几行)
export LD_ASSUME_KERNEL=2.4.1
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/product/9.2
export ORACLE_SID=linuxgis
export PATH=$ORACLE_HOME/bin:$PATH
export PATH=$PATH:$ORACLE_HOME/bin
5、以root用户登录系统,安装p3006854_9204_LINUX.zip这个补丁,此补丁如果不装,那么runInstaller将不会启动。
$su– root
#unzip p3006854_9204_LINUX.zip
(等解压完成会在当前目录下生成一个补丁目录3006854)
#cd 3006854
#sh rhel_pre_install.sh
6.检查是否安装以下包
#su- root
#rpm-qa|grep compat
compat-db-4.0.14-5.i386
compat-gcc-7.3-2.96.122.i386
compat-gcc-c++-7.3-2.96.122.i386
compat-libstdc++-7.3-2.96.122.i386
compat-libstdc++-devel-7.3-2.96.122.i386
#rpm-qa|grep openmotif21
openmotif21-2.1.30-8.i386
#rpm-qa|grep
setarch setarch-1.3-1.i386
#rpm-qa|grep
tcl tcl-8.3.5-92.i386
备注:如果蓝色字体的包安装不成功,需要到redhat下的添加包,将所有开发包全部安装后在安装蓝色的包,一般在cd3上
上面显示的内容是在笔者已经安装了具体的RPM包之后的结果。它们对应的软件包是
compat-db-4.0.14-5.i386.rpm
compat-gcc-7.3-2.96.122.i386.rpm
compat-gcc-c++-7.3-2.96.122.i386.rpm
compat-libstdc++-7.3-2.96.122.i386.rpm
compat-libstdc++-devel-7.3-2.96.122.i386.rpm
openmotif21-2.1.30-8.i386.rpm
setarch-1.3-1.i386.rpm t
tcl-8.3.5-92.i386.rpm
安装方法,将CD3放入VMWARE光驱
mount/dev/cdrom/mnt/cdrom
cd/mnt/cdrom
cd/RedHat/RPM
rpm-ivh包名
一般情况下,你的系统上的输出结果和这个不同。如果个别包没有安装,把系统安装光盘mount上,找到具体的软件包(大多数在第三张光盘上),然后利用如下的命令来安装相应的包:# rpm-ivh compat.....rpm因为我没有把RHAS3刻录到光盘,所以我用下面的命令来挂载iso文件
mount-o loop/mnt/e/rhas3/rhel-3-i386-as-disc3.iso/mnt/cdrom
要额外注意的是,这些软件包之间是有依赖性的,先后的顺序要找好。否则会报告不能安装的错误。在安装软件包的时候,如果出现软件包的依赖性,就先安装有有依赖的包。我相信大家会看明白软件包之间的依赖性的。还需要将gcc、g++更换为2.96的版本.方法如下:
#su- root
mv/usr/bin/gcc/usr/bin/gcc323
ln-s/usr/bin/gcc296/usr/bin/gcc
mv/usr/bin/g++/usr/bin/g++323
# if g++ doesn't exist, then gcc-c++ was not installed(这里是注释哦)
ln-s/usr/bin/g++296/usr/bin/g++
7、开始安装
Oracle安装
安装oracle必须得在图形界面进行安装,而且必须是以oracle用户
cpio-idmv ship_9204_linux_disk1.cpio
cpio-idmv ship_9204_linux_disk2.cpio
cpio-idmv ship_9204_linux_disk3.cpio
这样的命令来生成三个目录
进入Disk1目录,
$cd Disk1
$./runInstaller
如果显示cannot connect to X11 window的话,必须切换到root用户,键入
[oracle] su–(切换到root用户)
[root] xhost+
显示 access control disabled,clients can connect from any host表示显示正确
然后再切换到oracle用户,进入Disk1目录
[Disk1]./runInstaller
[Disk1]./runInstaller
此时打开oracle的欢迎界面将出现乱码,解决方法如下:
(1)、结束安装过程
(2)、改变局部变量,以oracle用户键入如下:
[oracle]export LC_ALL=en
[oracle]export LANG=en
[oracle]export LANGUAGE=en
[oracle]export(此时查看LC_ALL,LANG,LANGAGE都变为en值)
如想改变整个的全局变量时,以oracle用户键入:
[oracle] vi/etc/profile
在编辑界面写入:
export LC_ALL=en
export LANG=en
export LANGUAGE=en
:wq后保存退出
[oracle]export(此时查看LC_ALL,LANG,LANGAGE都变为en值)
安装过程中的注意事项:
系统会提示你输入UNIX GROUP NAME,即我们刚才建立的oracle用户组。(#groupadd oracle)
提示运行orainstRoot.sh脚本,在root终端下执行:#sh/tmp/orainstRoot.sh然后继续
提示支行root.sh脚本,在root终端下执行:#sh/home/oracle/product/9.2/root.sh然后继续
安装过程中会提示Agent Configuration Assistant工具未链接成功,等软件安装完以后要再安装p2617419_210_GENERIC.zip和p3238244_9204_LINUX.zip这两个补丁
8、安装p2617419_210_GENERIC.zip和p3238244_9204_LINUX.zip这两个补丁
其中,p2617419_210_GENERIC.zip相当于一个补丁管理工具,只有先安装这个工具才能安装其它的补丁。
$unzip p2617419_210_GENERIC.zip(等解压完成会在当前目录下生成一个补丁目录OPatch)
$unzip p3238244_9204_LINUX.zip(等解压完成会在当前目录下生成一个补丁目录3238244)
$cd~(回到oracle用户的主目录)
$vi.bash_profile(在此用户的配置文件的最后一行加上下面这一句)
export PATH=$PATH:/setup/OPatch:/sbin即把p2617419_210_GENERIC.zip补丁解压出来的OPatch目录的路径和/sbin路径都加上去。
$cd opatch(回到补丁目录3238244下面)
$./opatch apply
8、重新链接Agent Configuration Assistant工具,并启动它
$cd$ORACLE_HOME/network/lib
$make-f ins_oemagent.mk install
$$ORACLE_HOME/bin/agentctl start
9、使用dbca创建数据库
我安装的时候报错了。
/oracle/product/9.2.0.4/bin/dbca: line 124: 2542 Killed
$JRE_DIR/bin/jre-DORACLE_HOME=$OH-DJDBC_PROTOCOL=thin-mx64m-classpath$CLASSPATH oracle.sysman.assistants.dbca.Dbca$ARGUMENTS
大致是因为9204的默认1.1.8JRE有问题,需要修改,方法如下:
到$ORACLE_BASE/jre目录下,发现oracle自己已经有1.3.1版的JRE
ls$ORACLE_BASE/jre
1.1.8/ 1.3.1/
只要使用1.3.1的JRE就可以了。通过察看dbac的script,我的修改方法如下(使用oracle帐号):
1. rm$ORACLE_HOME/JRE(此JRE目录是1.1.8的符号链接)
2. ln-s$ORACLE_BASE/jre/1.3.1$ORACLE_HOME/JRE
3. cd$ORACLE_BASE/jre/1.3.1/bin
4. ln-s$ORACLE_BASE/jre/1.3.1/bin/.java_wrapper JRE
(或者: ln-s java jre)
5. cd i386/native_threads
6. ln-s java jre
这时,从commandline启动dbca,就可以解决上面的问题。
数据库建立成功后的截图
修改/etc/oratab文件
将orcl:/oracle/product/9.2:N
改为orcl:/oracle/product/9.2:Y
这样可以开机时自动启动数据库
怎样通俗地理解Linux(Debian)中软件包互相之间的依赖
不管是初步跨入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
/bin/sh
/bin/sh
/usr/bin/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
binutils依赖于glibc(binutils提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(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
基于debian的系统通过dpkg–l|greplibc6也可以查到,总之一般都在/usr/share/doc目录下都能看到glibc的相关信息。
七、小结
大部分情况下,在遇到软件包依赖关系问题的时候,操作系统提供的文件名字与软件包名字都会有直接的联系。有可能文件的名字就是软件包的名字。但是有些时候文件的名字与软件包的名字会相差甚远。此时大部分系统管理员可能光凭文件名字无法找到对应的软件包。此时可以先在系统安装光盘里找,如果找到那时最佳选项,然后就需要借助笔者上面谈到的一些专业网站,去查询软件包的名字了。当系统管理员安装了某个软件之后,如果存在软件包之间的依赖关系,则最好能够拿本子或者通过其他手段记录下来。以便下次方便实用,注意工作中的积累,相信绝大部分的软件包依赖关系问题都会迎刃而解。