我在RHEL 7上安装了qpid,并想知道它是否正在使用正确版本的boost。如何使用rpm命令检查它是否使用了正确的lib集。它不必是rpm命令,我只想知道是否使用正确版本的boost。
答案 0 :(得分:2)
您可以使用rpm -qa
检查已安装的RPM,并检查结果。例如,来自我的机器(Fedora 23,但同样的校长应该适用于RHEL):
mureinik@computer ~$ rpm -qa | grep boost
ibus-typing-booster-1.4.5-1.fc23.noarch
boost-thread-1.58.0-11.fc23.x86_64
boost-date-time-1.58.0-11.fc23.x86_64
boost-iostreams-1.58.0-11.fc23.x86_64
boost-system-1.58.0-11.fc23.x86_64
答案 1 :(得分:1)
也许这会有所帮助。
rpm -qa
将列出所有已安装的程序。
如果您知道应该使用的提升版本,那么您可以使用rpm -qa | grep <program_name>
。
rpm -qi <package_name>
可以为您提供有关软件包版本的更多具体信息。 -qi标志为您提供版本,发布,安装日期,大小等。
答案 2 :(得分:0)
这通常不是您通过RPM安装的软件需要处理的问题,只要您避免覆盖rpm
/ yum
/ dnf
的依赖性检查。 RPM将指定库依赖关系到库SONAME,并且包安装/升级/删除验证是否满足这些库依赖关系并保持满意。
但是,如果您在混合中的某个地方有错误的软件包,或者您安装了任何未打包的软件,或者您使用--force
来覆盖依赖性检查,那么可能会出现rpm问题的库问题打包软件,更不用说其他软件了。可能有多个库使用相同的SONAME安装,动态链接器可以选择不同的库,而不是您想要的。或者你可能有不满意的库依赖。
因此,您可能希望确定哪些库将动态链接到给定的可执行文件,而与包装无关。您可以通过ldd
命令执行此操作。例如,在我的CentOS 6系统上:
$ ldd /bin/rpm
linux-vdso.so.1 => (0x00007ffdabd77000)
librpmbuild.so.1 => /usr/lib64/librpmbuild.so.1 (0x0000003708600000)
librpm.so.1 => /usr/lib64/librpm.so.1 (0x0000003709200000)
libmagic.so.1 => /usr/lib64/libmagic.so.1 (0x0000003707a00000)
librpmio.so.1 => /usr/lib64/librpmio.so.1 (0x0000003709600000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003707e00000)
[...]
libnspr4.so => /lib64/libnspr4.so (0x0000003716200000)
这对于检测完全不满足的库依赖性也很有用;再一次,这对于RPM打包的软件来说很少是一个问题,但我不时会遇到其他类型的包装中预先构建的软件。
答案 3 :(得分:0)
对于给定的包,您可以使用library(raster)
# example raster and points data
r <- raster(ncols=10, nrows=5)
n <- 100
x <- runif(n) * 360 - 180
y <- runif(n) * 180 - 90
xy <- cbind(x, y)
rp <- rasterize(xy, r, fun=function(x,...)length(x))
as.data.frame(rp)
来显示其依赖项,然后为每个依赖项rpm -qR
显示实际的包名称。我在构建日志中执行此操作,以跟踪我构建的内容,使用脚本格式化rpm -q --whatprovides
中的列表以便于阅读。
例如,给定一个已安装的&#34; ncurses6&#34;,脚本首先执行此操作:
rpm
我得到这样的输出:
rpm -qR ncurses6
我的脚本会生成如下报告:
/bin/sh
/usr/bin/pkg-config
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libformw6.so.6()(64bit)
libformw6.so.6(NCURSESW6_5.1.20000708)(64bit)
libgcc_s.so.1()(64bit)
libgcc_s.so.1(GCC_3.0)(64bit)
libm.so.6()(64bit)
libmenuw6.so.6()(64bit)
libmenuw6.so.6(NCURSESW6_5.1.20000708)(64bit)
libncurses++w6.so.6()(64bit)
libncursesw6.so.6()(64bit)
libncursesw6.so.6(NCURSESW6_5.1.20000708)(64bit)
libncursesw6.so.6(NCURSESW6_5.3.20021019)(64bit)
libncursesw6.so.6(NCURSESW6_5.4.20040208)(64bit)
libncursesw6.so.6(NCURSESW6_5.5.20051010)(64bit)
libncursesw6.so.6(NCURSESW6_5.6.20061217)(64bit)
libncursesw6.so.6(NCURSESW6_5.7.20081102)(64bit)
(脚本是200行Perl,计算评论和空白:一个好的学生练习。)