依赖关系 – 有没有办法从yum检索依赖关系树?

为了减少XY问题的机会,我试图将PostGIS安装在干净,虚拟的RHEL5安装上,严重限制.我不知道我们(作为一家公司)是否有RH订阅.
# yum install postgis
Loaded plugins: product-id,security,subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Setting up Install Process
No package postgis available.
nothing to do.

当我尝试安装emacs时,它会抛出相同的错误,所以我相对确定我要安装哪个软件包并不重要.

虚拟机有互联网访问.

我想要做的是为我指定的一个软件(显然,即postgis)检索完整的依赖图. yum必须已经计算了这个依赖图(或者有一个可用于检索)来完成它的工作,那么我该如何利用这个资源呢?

根据RHEL5手册页:“repoquery是一个用于从YUM存储库查询信息的程序,类似于rpm查询.

对于您具体的postgis案例:

# repoquery --requires --recursive --resolve  postgis
postgresql-libs-0:8.1.23-6.el5_8.i386
geos-0:2.2.3-3.el5.i386
glibc-0:2.5-107.el5_9.5.i686
proj-0:4.5.0-3.el5.i386

如果您的系统是64位,您可以将“.i386”和“.i686”从包名称删除.

从repoquery的输出并不完美,因为例如,它无法在上述列表中列出glibc-common.但如果您的系统没有glibc和glibc-common已经安装,您的系统将不会运行.

编辑:虽然它不会引起错误,但是在–ELcursive标志似乎在RHEL5.11中什么都不做,可以省略.另外,使用–pkgnarrow = all标志来确保查询的所有(已安装,可用等)包都被考虑.最后,为了获得更多的依赖关系树的递归的一个步骤,在bash shell中,使用tee和xargs将repoquery命令的输出传递给第二个repoquery命令,如下所示:

# repoquery --requires  --resolve --pkgnarrow=all postgis.i386 | tee >(xargs -r -n 1 -- repoquery --requires  --resolve --pkgnarrow=all) | sort | uniq
basesystem-0:8.0-5.1.1.noarch
geos-0:2.2.3-3.el5.i386
glibc-0:2.5-123.el5_11.3.i686
glibc-common-0:2.5-123.el5_11.3.i386
krb5-libs-0:1.6.1-80.el5_11.i386
libgcc-0:4.1.2-55.el5.i386
libstdc++-0:4.1.2-55.el5.i386
openssl-0:0.9.8e-40.el5_11.i686
postgresql-libs-0:8.1.23-10.el5_10.i386
proj-0:4.5.0-3.el5.i386

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...