如何解决源码包安装时的依赖性问题?为什么在rtthread官网下载的源码是老的

:暂无数据 2026-08-10 11:20:06 :2

如何解决源码包安装时的依赖性问题?为什么在rtthread官网下载的源码是老的

本篇文章给大家谈谈老6源码,以及如何解决源码包安装时的依赖性问题对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录

如何解决源码包安装时的依赖性问题

不管是初步跨入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
  #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
***隐藏网址***
如果老版本的共享库数据包已经安装在系统上,可以用如下的命令确认此软件包含您需要的共享库文件:
  #rpm-q--providesopenssl
  #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符号链接可能指向不同版本的共享库文件,这也是在尽量避免在安装新版本的共享软件包时中断现有动态可执行文件的情况下完成的。
五、自动解决依赖性故障
***隐藏网址***
  1.使用Yum来安装rpm软件包
***隐藏网址***
  在下载了此软件包后,可以使用下面的命令像任何其他rpm软件包那样安装它:
  #rpm-ivhyum*
***隐藏网址***
  #yumlist
  #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的相关信息。
  七、小结
  大部分情况下,在遇到软件包依赖关系问题的时候,操作系统提供的文件名字与软件包名字都会有直接的联系。有可能文件的名字就是软件包的名字。但是有些时候文件的名字与软件包的名字会相差甚远。此时大部分系统管理员可能光凭文件名字无法找到对应的软件包。此时可以先在系统安装光盘里找,如果找到那时最佳选项,然后就需要借助笔者上面谈到的一些专业网站,去查询软件包的名字了。当系统管理员安装了某个软件之后,如果存在软件包之间的依赖关系,则最好能够拿本子或者通过其他手段记录下来。以便下次方便实用,注意工作中的积累,相信绝大部分的软件包依赖关系问题都会迎刃而解。

为什么在rtthread官网下载的源码是老的

未更新。用户在使用rtthread官网内进行下载源码时,发现该源码是老的,是由于在rtthread中,源码是未更新的,所以都是老的源码。rtthread是一款主要由中国开源社区主导开发的开源实时操作系统。

centos6 openssl源码包安装make出错,怎样查看他出错原因

tar -zxf openssl-1.0.1g.tar.gz
cd openssl-1.0.1g
./config
make
make test
make install
查看openssl的版本
openssl version
若还是旧版的话,执行下面的命令:
mv /usr/bin/openssl /root/
ln -s /usr/local/ssl/bin/openssl /usr/bin/opens

文章分享结束,老6源码和如何解决源码包安装时的依赖性问题的答案你都知道了吗?欢迎再次光临本站哦!

如何解决源码包安装时的依赖性问题?为什么在rtthread官网下载的源码是老的

本文编辑:admin

更多文章:


blob视频下载器(blob链接的图片如何调用下载)

blob视频下载器(blob链接的图片如何调用下载)

各位老铁们,大家好,今天由我来为大家分享blob视频下载器,以及blob链接的图片如何调用下载的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年11月7日 03:30

中文自动翻译成英语的输入法(有没有一种输入法能将打出来的中文自动变成英文)

中文自动翻译成英语的输入法(有没有一种输入法能将打出来的中文自动变成英文)

各位老铁们,大家好,今天由我来为大家分享中文自动翻译成英语的输入法,以及有没有一种输入法能将打出来的中文自动变成英文的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们

2026年11月7日 02:10

equals to(为什么有些英文句子要用的是“equals to that of” 这个that和of之间还可以加名词吗)

equals to(为什么有些英文句子要用的是“equals to that of” 这个that和of之间还可以加名词吗)

其实equals to的问题并不复杂,但是又很多的朋友都不太了解为什么有些英文句子要用的是“equals to that of” 这个that和of之间还可以加名词吗,因此呢,今天小编就来为大家分享equals to的一些知识,希望可以帮助

2026年11月7日 01:50

default values(电脑开机后出现all settings was reset to default values.)

default values(电脑开机后出现all settings was reset to default values.)

其实default values的问题并不复杂,但是又很多的朋友都不太了解电脑开机后出现all settings was reset to default values.,因此呢,今天小编就来为大家分享default values的一些知识

2026年11月7日 01:20

structured reviewing翻译(软件测试的英文翻译)

structured reviewing翻译(软件测试的英文翻译)

大家好,关于structured reviewing翻译很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于软件测试的英文翻译的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位

2026年11月7日 00:50

网站模板下载好以后(动态网站模板下载后怎么用)

网站模板下载好以后(动态网站模板下载后怎么用)

“网站模板下载好以后”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看网站模板下载好以后(动态网站模板下载后怎么用)!

2026年11月6日 22:50

选项卡的作用(excel中的“数字”选项卡的功能)

选项卡的作用(excel中的“数字”选项卡的功能)

本篇文章给大家谈谈选项卡的作用,以及excel中的“数字”选项卡的功能对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年11月6日 22:20

vb手机版下载(有谁可以告诉我vb在哪里下载)

vb手机版下载(有谁可以告诉我vb在哪里下载)

“vb手机版下载”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看vb手机版下载(有谁可以告诉我vb在哪里下载)!

2026年11月6日 21:50

指针变量和指针的关系(变量指针和指针变量有什么区别和联系)

指针变量和指针的关系(变量指针和指针变量有什么区别和联系)

大家好,如果您还对指针变量和指针的关系不太了解,没有关系,今天就由本站为大家分享指针变量和指针的关系的知识,包括变量指针和指针变量有什么区别和联系的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年11月6日 21:30

dos命令清屏(Windows DOS内部命令详解04——del、ren、cls、ver、date、time)

dos命令清屏(Windows DOS内部命令详解04——del、ren、cls、ver、date、time)

“dos命令清屏”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看dos命令清屏(Windows DOS内部命令详解04——del、ren、cls、ver、date、time)!

2026年11月6日 15:40

最近更新

element ui面试题(用element-ui ELDialog和ELTable遇见的坑)
2026-11-07 04:40:07 浏览:0
imei怎么查看(手机IMEI码如何查询)
2026-11-07 04:00:01 浏览:0
热门文章

新站如何通过网站维护提升SEO排名
2026-10-13 20:56:21 浏览:6
标签列表